Volle Drehung um 360° - Ich bin zu dumm dafür



  • Hallo zusammen,

    ich hab ein Problem neue Positionen in einem Koordinatensystem zu berechnen...

    Folgendes Szenario.
    Ich bekomme 200 Abtastwerte pro Graddrehung. Das abgetastete Objekt wird um 180° gedreht.

    Damit hab ich folgende Matrix...

    Werte
      _______________________
    W|x .... 200 für Winkel 0
    i|x .... 200 für Winkel 1
    n|...
    k|.
    e|. 
    l|.
    

    Nun möchte ich die Matrix von oben in einer 200 x 200 Matrix speichern und zwar so, dass die Werte anhand Ihres Winkels in der Matrix stehen....

    Nur genau hier steh ich seit zwei Tagen völlig auf dem Schlauch...
    Folgenden C Code hab ich bisher produziert, allerdings baut mir der die Matrix nicht so wie ich mir das vorstelle...

    for(int y = 0; y < 180; ++y)
    {
    
        for(int x = 0; x < radius; ++x)
        { 
           Ankathete    = cos(3.1415926535/180 * y) * x;
           Gegenkathete = sin(3.1415926535/180 * y) * x;
    
          /**
           * Sorry für das unvollständige Gestopsel da unten, aber die [cpp] Tags
           * kommen mit der kompletten Zuweisung an das Array nicht klar...
           * ---------------------------------------------------------------------
           * Zum Verständis:
           * Der Teil vor dem = ist der Index des Zielarrays
           * Der Teil danach ist der Index des Quellarrays
           *
           * Bei der zweiten Anweisung anlaog
           **/
          /*Mitte*/(center * radius * 2 + center) - static_cast<int>
          (Gegenkathete * radius * 2) + static_cast<int>(Ankathete)
          =
          y * radius * 2 + x + center
    
          /*** Zweite Anweisung ***/
          /*Mitte*/(center * radius * 2 + center) + static_cast<int>
          (Gegenkathete * radius * 2) - static_cast<int>(Ankathete)  
          = 
          y * radius * 2 + /*Edit: x + center*/ center - x 
        }		
    }
    

    Für Hinweise jeder Art wäre ich sehr dankbar... Allerdings kann ich erst morgen wieder Antworten...

    Danke
    zeigerzeiger



  • Hi !
    Würd ich mit Strukturen machen:

    #include <stdio.h>
    #include <math.h>
    
    #define PI 3.14159265358979323846
    
    struct Point 
    {
    	double x, y;
    };
    
    struct Object
    {
    	struct Point pts[200];
    };
    
    int main()
    {
    	int i, j;
    	double phi_start = 0.0; // In Rad
    	double polar[180][200]; 
    	struct Object trace[180];
    
    	for ( i = 0; i < 180; i++ )
    	{
            phi_start += PI/180; 
    		for ( j = 0; j < 200; j++ )
    		{
    			trace[i].pts[j].x = polar[i][j] * cos( phi_start );
    			trace[i].pts[j].y = polar[i][j] * sin( phi_start );
    		}
    	}
    
    	return 0;
    }
    

    :xmas1:


Anmelden zum Antworten