Frage

Ich scheine nur nicht in der Lage sein, dies in meinem Kopf, um herauszufinden. Ich versuche, ein Objekt im 3D-Raum zu bewegen.

Wenn ich einen Punkt, an 5,15,5 und verwenden OpenGL-Funktionen der Modellansicht zu ändern ....

glTranslatef( 10.0f, 4.0f, 4.0f );
glRotatef( 33.0f, 1.0f, 0.0f, 0.0f );
glTranslatef( 10.0f, 4.0f, 4.0f );

Gibt es eine Möglichkeit kann ich herausfinden, wo dieser Punkt endet (in Welt / Weltkoordinaten)? Kann ich eine Art von Matrix-Berechnungen zu tun, die mir 20,26,23 zurück geben (oder jeder der neue Koordinatenposition, was ist)?

Bitte helfen Sie, ich habe so lange auf diese aufgeklebt!

War es hilfreich?

Lösung

Versuchen Sie Folgendes:

1) drücken die aktuelle Matrix in Stapel; 2) Last Identität und anwenden, um Ihre Transformationen; 3) Holen der resultierenden Transformationsmatrix in eine Variable TEMP. glGet oder so etwas helfen wird; Pop 4) die Matrix aus dem Stapel;

Jetzt haben Sie Ihre Transformationsmatrix. Multiplizieren Sie Ihren Punkt durch diese Matrix des Punktes Koordinaten nach der Transformation zu prognostizieren.

Andere Tipps

Auf jeden Fall: Besuchen http: //research.cs.queensu .de / ~ jstewart / 454 / Anhang / Pipeline /

Kurz gesagt, alle diese Anrufe zu reduzieren auf eine einzelne Matrix, die auf den Punkt multipliziert wird.

SadSido Methode werden Sie auf jeden Fall die resultierende Matrix, aber es kann nicht wirklich weh zu verstehen, was hinter den Kulissen vor sich geht. Die Berechnungen oben führen zu einer linearen Algebra Gleichung der folgenden Optionen:

pOut = [mTranslate] * [mRotate] * [mTranslate] * pIn

, wobei die Übersetzungs mTranslate Anrufe (Matrix für die Übersetzung) = und = mRotate rotate Anruf (Matrix für eine Drehung um eine beliebige Achse). Berechnen Sie, dass, und Sie sind gut zu gehen!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top