2016-08-05 53 views
0

Bei Verwendung einer 3D-Matrixtransformation ist es möglich, für jedes Objekt nur eine Matrix zu verwenden, um das Objekt sowohl zu positionieren als auch zu drehen und zu skalieren. Müsste ich auch einen separaten Satz von Standortinformationen pflegen, um z. B. Vorgänge wie "Drehen um einen beliebigen Punkt" durchzuführen?Verwenden einer Matrix zum Positionieren von Objekten im 3D-Raum

Ich frage, weil ich nicht ganz herausfinden kann, wie man (speziell ...) um einen beliebigen Punkt rotiert, obwohl dies die allgemeine Verwaltung der räumlichen Informationen eines Objekts betrifft.

Antwort

1

Sie würden eine 4x4-Matrix benötigen. Eine 3x3-Matrix im 3D-Raum beschreibt nur lineare Transformationen, die keine Positionierung (Translation) enthalten.

Hier finden Sie weitere Informationen zur Implementierung: http://www.euclideanspace.com/maths/geometry/affine/matrix4x4/. Viel mehr bei Google.

z. für eine Drehung um einen beliebigen Punkt P, konstruieren, um die folgenden Matrizen:

  • A: Übersetzung von minusP
  • B: Ihre Rotation (Euler-Winkel oder was auch immer)
  • C: Übersetzung von plusP

Die endgültige Matrix Sie wollen, ist CBA (in dieser Reihenfolge, mit der rechten Multiplikation mit Vektoren vorausgesetzt) ​​