Die Realisierung meines recht einfachen Projekts lässt mich auf große Schwierigkeiten beim weiteren Ausbau schließen.
Ich beschreibe es mal in 2D, dann wird das Ganze verständlicher.
Ein Rechteck, 5 Einheiten breit, 1 Einheit hoch liegt im Koordinatenursprung bei 0,0. Ich zeichne es nochmals, diesmal nach rechts versetzt, auf 5,0. Dieses 2. Rechteck soll nun (langsam) um den Punkt 5,1 gegen den Uhrzeigersinn gedreht werden.
Mir fiel nun keine bessere Lösung ein, als den Koordinatenursprung über trigonometrische Berechnungen auf die jeweilige linke, untere Ecke des Rechtecks zu legen, Nun ja, das geht schon, aber was passiert, wenn ich am gedrehten Rechteck weitere Objekte, die sich zudem auch noch bewegen, anbringen möchte, oder um andere Punkte und andere Achsen drehen will? Da muß es doch etwas Besseres geben!
Zum Abschluß noch den Programmabschnitt, vielleicht macht der das Geschilderte (und das Problem) deutlicher.
Code:
procedure TForm1.Render;
var
Zeile:Integer;
dx, dy:Real;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
hallö
ich versuchs mal ohne deinen code anzuschaun
1. Problem:
- erstes rechteck zeichnen bei 0,0
- mit gltranslatef(5,1,0) zum punkt 5,1 wechseln
- glrotate für die drehung aufrufen
- mit gltranslatef(5,-1,0) zu der position an der das zweite rechteck gezeichnet werden soll wechseln
- zweites rechteck zeichnen und siehe da es dreht sich um 5,1
2. Problem
Wenn du weitere Objekte zeichnen willst die sich unterschiedlich drehen solltest du dir mal
glPushMatrix und glPopMatrix anschaun
ich hoffe das ich dir irgendwie helfen konnte oder dir den richtigen ansatz gegeben habe.
Mitglieder in diesem Forum: 0 Mitglieder und 11 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.