004
20.07.2009, 11:11 Uhr
Dirk1980
|
Hallo,
danke für Eure Antworten.
Mir ist klar, dass wenn man um 180° um die y-Achse dreht und dann anschließend um -90° um die z-Achse, dass dann die OpenGL-Winkel identisch sind zu den trigonometrischen Winkeln.
Code: |
/* rotate 180° around y-axis */ glRotatef( 180.0, 0.0, 1.0, 0.0 );
/* rotate -90° around z-axis */ glRotatef( -90.0, 0.0, 0.0, 1.0 );
|
Bei diesen Drehungen passiert doch aber auch folgendes: z-Achse zeigt nun nach innen anstatt nach außen y-Achse zeigt nun nach rechts anstatt nach oben x-Achse zeigt nun nach oben anstatt rechts
Mir ist jetzt leider folgendes immer noch nicht klar:
1.) Welche Winkeldefinition haltet ihr für die richtige? OpenGL oder trigonometrisch?
2.) Wann führt ihr diese Drehungen durch? Einmal am Anfang direkt nach der Definition des Koordinatensystems oder immer vor dem Aufruf einer trigonometrischen Funktion?
Hier mal ein Beispiel:
Ich habe eine Funktion geschrieben, die den Kreisbogen im Uhrzeigersinn zeichnen soll. Input Parameter sind der Mittelpunkt des Kreises, der Radius, der Start- und der Endwinkel.
Code: |
const float DEG2RAD = 3.14159/180; static void drawCircleArcClockwise(struct TPoint* p_point, float radius, float start_angle, float end_angle) { float degInRad; float angle_step = 1.0; float angle;
glBegin(GL_LINE_STRIP); { angle = start_angle; while( angle <= end_angle ) { degInRad = angle*DEG2RAD; glVertex2f(cos(degInRad)*radius + p_point->x,sin(degInRad)*radius + p_point->y);
angle = angle + angle_step; } } glEnd();
glBegin(GL_LINES); { degInRad = (angle-angle_step)*DEG2RAD; glVertex2f(cos(degInRad)*radius,sin(degInRad)*radius);
degInRad = end_angle*DEG2RAD; glVertex2f(cos(degInRad)*radius,sin(degInRad)*radius); } glEnd(); }
|
1.) Mit welcher Winkeldefinition würdet ihr diese Funktion aufrufen? (OpenGL oder trigonometrisch?) 2.) Wo würdet ihr diese Drehungen jetzt durchführen?
Viele Grüße Dirk Dieser Post wurde am 20.07.2009 um 11:11 Uhr von Dirk1980 editiert. |