Halbkreis in ein Kartesisches Koordinate System
-
Hallo erstmal
meine Aufgabenstellung ist folgendermassen
Habe einen Halbkreis 180° von dem ich den Radius kenne. ist 120(mm).
nun möchte ich die Koordinaten in 1° schritten ermitteln.
die Formel dazu lautet bis jetzt:
Px = r * (cos(winkel);
Py = r * (sin(winkel));noch meinen Source::
TPoint myPoints[180]; int len = 180; double r = 0.0; //Kreisradius _._ Messdistanz double winkel = 0; //Winkel zur Horizontalle double winkAbstand = 1; //Winkel einzel Schritte (0.25° / 0.5° / 0.75° / 1°) double x = 0, y = 0; //Kartesische Koordinaten int num_segments; //anzahl Distanz Messwerte num_segments = len; //Poligon Punkte Array erstellen for(int i = 0; i < num_segments; i++){ //Messdistanz auslesen r = 100; if(i == 0 /*0°*/){ x = r; y = 0; winkel += winkAbstand; } else if((i < (num_segments / 2) /*<=90° Winkel*/) && (i != 0)){ //virtual rechts bis 90° x = r * (cos(winkel)); y = r * (sin(winkel)); winkel += winkAbstand; } else if(i == (num_segments / 2)){ x = 0; y = r; winkel -= winkAbstand; continue; } else if(i > (num_segments / 2) && (i != num_segments) && (i != (num_segments / 2))){ //Virtuel links x = (cos(winkel) * r); y = (sin(winkel) * r); winkel -= winkAbstand; } myPoints[i] = Point(x, y); //ausgabe leicht angepasst }
nur das problem an der gischichte das ich föllig unrealistische zahlen erhalte. wie zb:
P(100/0)
P(54/84)
P(-41/90)
P(-98/14)... uswkomme nicht mehr weiter und höffe jemand kann mein gewirr auflössen
-
Du mußt die Winkel ins Bogenmaß umrechnen:
-
fubar schrieb:
Du mußt die Winkel ins Bogenmaß umrechnen:
du meinst etwa so:
x = r * (cos(winkel * M_PI / 100)); y = r * (sin(winkel * M_PI / 100));
-
Wenn du aus der 100 ne 180 machst - ja
-
irgendwie schaut es immer noch nicht wie ein kreis aus....
-
bqstony() schrieb:
irgendwie schaut es immer noch nicht wie ein kreis aus....
Das ist keine ausreichende Fehlerbeschreibung.
Nimm statt 180 mal 180.0, 180 wird als Integer interpretiert und u.U. wird M_PI/180 dann als Integer ausgewertet und dann siehts sicherlich nicht aus wie ein Kreis
Edit: und
int len = 180;
solltest auch durch
float len = 180.0;
ersetzen
-
hab ausserdem noch bemerk das ich ein memcpy zwischen geschaltet hatte
und, naja ichhab zuwenig bytes angegeben....
nun klapts.
http://amigo-online.ch/scan.jpg
BESTEN DANK