Ich möchte einen Garten von Blumen mit OpenGL Transformation Objekte zeichnen. Zuerst habe ich angefangen, Blütenblatt der Blume zu zeichnen, und ich will, dass es gedreht wird, damit die Blume erzeugt wird, aber wenn ich glRotatef()
benutze, kann ich das Objekt nicht mehr sehen. Hier ist ein Teil meines Code:Objekt nicht gezeigt nach Anwendung von Transformationsfunktionen in Opengl
const float DEG2RAD = 3.14159/180;
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 400.0, 0.0, 400.0);
glMatrixMode(GL_MODELVIEW);
}
void petal(void)
{
float x, y, z;
float A = 20;
float t;
glColor3f(1.0, 0.0, 0.0);
glPointSize(2);
glLoadIdentity();
glRotatef(90.0, 0.0, 0.0, 0.5);
glTranslatef(10,10, 0);
glBegin(GL_POINTS);
t = 0;
while (t < 90)
{
x = A*sin(2 * t*DEG2RAD)*cos(t*DEG2RAD);
y = A*sin(2 * t*DEG2RAD)*sin(t*DEG2RAD);
z = 0;
glVertex3f(x, y, z);
t++;
}
glEnd();
glFlush();
}
int main(void)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(200, 100);
glutInitWindowSize(600, 600);
glutCreateWindow("Garden");
init();
glClear(GL_COLOR_BUFFER_BIT);
glutDisplayFunc(petal);
glutMainLoop();
return 0;
}
IIRC Sie müssen die Matrixfunktionen in der * umgekehrten * Reihenfolge der Transformationen aufrufen (damit die Transformationen von unten nach oben angewendet werden). Was Sie jetzt haben, wenn Sie 'glRotatef' auskommentieren, ist eine Übersetzung zu (100, 100) gefolgt von einer Rotation um das Zentrum der Welt. Wenn Sie innerhalb der 2D-Ebene drehen möchten, muss die 'glRotatef'-Achse entlang der z-Koordinate sein, nicht x. – Quentin
@Quentin Richtig, die letzte Funktion wird zuerst angewendet, aber wenn ich "glRotatef" auskommentiere, kann ich nichts mehr sehen, ich denke, dass es aus dem Ansichtsfenster herauskommt und ich weiß nicht, was die Werte der Transformation sein sollten? – Zeinab
Haben Sie versucht, die Achse zu fixieren? Wenn Sie eine orthographische Projektion mit dem Ursprung in einer Ecke verwendet haben, vermute ich, dass das Objekt aus der Ansicht herausgedreht wird. – Quentin