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: