ich hab ein Problem. Eigentlich ein ganz einfaches. Aber entweder stehe ich gerade total auf dem Schlauch oder ich hab das Ganze doch nicht verstanden ^^..
Also Problem: Möchte ein Objekt um einen Punkt drehen.
Code:
Code:
glLoadIdentity();
glColor4f(1,1,1,1);
glTranslatef(0,0,0);
glRotatef(360*animstat,0,1,0);
glTranslatef(0,0,-45);
glusphere(quadratic,2,40,40);
So. Bei obigen Code sollte sich das Ganze doch eigentlich um die eigene Achse drehen da der Koordinatenursprung nicht verschoben wurde.. oder? Jedenfalls dreht es sich so schon um irgendeinen Punkt, keine Ahnung wo der liegt, jedenfalls macht das Model einen grooooßen Kreis ^^. Auch wenn ich den Ursprung ein wenig verschiebe ändert sich nicht viel an der Sache.
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
Laut dem Code da oben gar nichts.
Wenn du den Ursprung wenig verschiebst verschiebst du den Kreis auch nur wenig, vielleicht kannst du es deshalb einfach nicht sehen?
Ne das hab ich schon überprüft. Das Problem ist ja das der mit dem obigen Code schon nen rießen Kreis zieht -.-
Davor und danach kommen halt auch ein paar Sachen da wird die Matrix auch verschoben etc. aber das ist doch durch das LoadIdentity alles wieder futsch normalerweise oder?
ich weis zwar nicht, was gluSphere ist, aber wenn es eine Kugel ist, dann ist deren Mittelpunkt da, wo du gerade zeichnen möchtest, richtig?
Ich weis zwar nicht, was es bringen soll ne Kugel zu drehen, aber wenn es um den mittelpunkt gedreht werden sollte, solltest erst schieben (glTranslatef) und erst danach drehen (glRotatef), nicht andersrum.
btw, ein glTranslatef(0,0,0); ist doch sinnlos?
eine verschiebungsanweisung bei der du das objekt keinen milimeter verschiebst.
würde sagen:
zeile 4 streichen
zeile 5 und 6 tauschen.
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Hi,
meiner Meinung nach führt der code zu folgender Berechnung:
Code:
glRotatef(360*animstat,0,1,0);// Rotation der Welt
glTranslatef(0,0,-45);// jetzt den rotierten Nullpunkt 45 Einheiten vom Mittelpunkt wegsetzen
glusphere(quadratic,2,40,40);// und dort die Sphere zeichnen
Dh. es wär logisch, dass er einen großen Kreis zieht. Vergleiche auch Tutorial_Matrix2#Kombination_-_Rotate_vor_Translate.
Stattdessen solltest du erst den Nullpunkt verschieben und dann Rotieren. Denn die Rotation erfolgt um den Nullpunkt, nicht um die Kamera.
Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.