010
12.01.2004, 13:02 Uhr
gosub
|
was das rotieren angeht: es ist einfacher, als man denkt...
erstmal: alles dreht sich um das aktuell gesetzte zentrum, den mittelpunkt des koordinatensystem, welchen man mit
Code: |
glTranslatef( 1.0f, 1.0f, -1.0f);
|
verschiebt, wobei die z-richtung in richtung horizont negativ zu zählen ist, also in den schirm rein = negativ-werte... ausserdem ist die verschiebung relativ zum vorhergehenden mittelpunkt... man kann aber auch das koordinatensystem resetten mit
dann ist man wieder im voreingestellten mittelpunkt.
rotieren ist dann
Code: |
glRotatef (theta, 0.0f, 0.0f, 1.0f);
|
das theta ist in der tat die rotationsrichtung und gleichzeitig der winkelintervall.
dann folgen die 3 float-werte x,y,z - und zwar für die drehachse...
das heißt hier, daß sich das ganze um die z-achse dreht - also in den schirm hinein...
wenn man mehrere achsen voneinander unabhängig drehen will, sollte man so vorgehen:
Code: |
glRotatef (theta_x, 1.0f, 0.0f, 0.0f); // für die x-achse glRotatef (theta_y, 0.0f, 1.0f, 0.0f); // für die y-achse glRotatef (theta_z, 0.0f, 0.0f, 1.0f); // für die y-achse
|
und kann dann die drei thetas unabhängig ändern - d.h. in drei richtungen frei rotieren.
sollte was hier dran falsch sein :o) nich böse sein, ich kann das erst seit ein paar tagen, denke aber, daß ich es kapiert hab und es funktuiziert auch. -- "die obdachlosen? die sollen doch nach hause gehen, wo sie hingehören!" Dieser Post wurde am 12.01.2004 um 13:03 Uhr von gosub editiert. |