Hallo,
ich bin am verzweifeln… und ich hoffe hier kann mir jemand helfen.
Ich möchte einen Zylinder, den ich in Länge, Lage und Orientierung anpassen kann zwischen zwei Punkten platzieren, sodass der Zylinder auch bei Bewegung der Punkte immer dazwischen bleibt. Der Zylinder ist übrigens ein Java3D Objekt (dieses Objekt wird bei der Erzeugung entlang der x-Achse gelegt). Leider kann ich den Zylinder nicht so positionieren wie eine Linie, mit Anfangs- und Endpunkt, sondern muss über transformationen eine geeignete Orientierung und Lage finden. Die Länge berechnet sich aus dem Abstand der beiden Punkte (trivial).
Länge = |P2-P1|
Die Lage ergibt sich aus dem halben Abstand der Punkte, also:
Lage = P1 + halberVektorVon(P2 - P1)
So, nun zur Orientierung, an der ich verzweifle:
Gegeben: P1, P2, Lage, Länge
Gesucht: Rotationsmatrix, um den Java3D Zylinder korrekt in der Orientierung im 3 Dim. Raum darzustellen
Lösungsideen:
- Berechnung des normalisierten Richtungsvektors NR=P2-P1
Un nun häng ich auch schon. Ich weiß nicht wie ich von dem NR auf die gesamte Rotationsmatrix komme.
- Ich könnte aus der ursprünglichen Lage&Orientierung der Längsachse des Zylinders (also entlang der x-Achse, da Java3D den Zylinder dort erzeugt) und der neuen Lage&Orientierung der Längsachse (anhand der Punkte P1 und P2) die Rotationsmatrix berechnen. Aber ich weiß nicht wie…
Vielen Dank für Eure Hilfe!
Christian