D3D: Punkt um einen anderen Punkt drehen
-
Hallo!
Ist eher ein mathematisches Problem, aber da ich mir ziemlich sicher bin, dass man es irgendwie mit den Matrix-Funktionen von DirectGraphics lösen kann poste ich es hier:
Ich habe irgend einen Punkt im 3D-Raum. Diesem möchte ich jetzt um einen anderen Punkt drehen in einem beliebigen Winkel drehen. Der Punkt soll auch um mehrere Achsen gedreht werden können.
Irgendwelche Ideen?
Danke im Voraus!
mfg
-
Mit trigonometrischen Funktionen. Mach Dir einfach eine Skizze wo die 3 Winkel drin sind. Dann hast Du an jeder der 3 Achsen ein rechtwinkliges Dreieck und da kannst Du (hoffentlich) sehen, welche Funktionen Du benutzen musst.
Ich würd deswegen jetzt nich anfangen Matrizen zu erstellen, weil das ist ein bisschen viel für so eine einfache Drehung.
Dann gäbs noch Quaternions, aber dazu sag ich jetzt besser nix weil ich die nicht richtig verstehe und auch noch nicht benutzt habe.Edit:
Vielleicht wären Matrizen doch nicht schlecht, weil ich nehm mal an dass Du diese Objekte, die sich drehen sollen ,auch rendern willst, und dann brauchst Du sowieso die Matrizen. Dazu würde ich das Tutorial vom Zerbst empfehlen:
http://www.zfx.info/Tutorials.php?ID=7
-
Hi,
verschiebe beide Punkte so, dass der Pivotpunkt um den gedreht werden soll im Ursprung des Weltkoordinatensystems liegt. Also subtrahiere den Pivotpunkt einfach von dem zu rotierenden Punkt. Dann erstelle mit D3DXMatrixYawPitchRoll die Rotationsmatrix und multipliziere den Punkt damit. Anschliessend den Punkt wieder zurückverschieben, also eine Addition mit dem Pivotpunkt.
Ciao,
Stefan
-
Das hatten wir eigentlich schon öfters und die Suche geht doch wieder.
Bye, TGGC (Der Held ist zurück)