Frage

Input:. Zwei mehrdimensionale (beispiel dim = 8) Vektoren a und b

Ich brauche den "gerichtet" Winkel, um herauszufinden, (0-2 * Pi, nicht 0-Pi) zwischen den Vektoren a und b. Und wenn sie nicht parallel sind I zu drehen Vektor b in der Ebene einer Notwendigkeit, b von „gerichtet“ Winkel L. Wenn sie parallel sind, Ebene spielt keine Rolle, aber der Drehwinkel ist immer noch die gleiche L.

Für 2d und 3d das ist ganz einfach, aber für mehr Dimensionen bin ich verloren, habe ich nichts auf Google finden, und ich ziehe mit einigen bereits unter Beweis gestellt und getestet Gleichungen (Vermeidung von Fehlern durch meine Berechnungen eingeführt :-D).

Vielen Dank im Voraus für Tipps, Links, etc.

War es hilfreich?

Lösung

Ich glaube, Sie auf der Ebene, die durch Ihre Vektoren a und b erzeugt funktionieren sollte. Der Code wird dann gleich sein, unabhängig von der Dimension (btw, die Dimension der Vektoren ist definitions die Dimension des Raumes).

Sie können das tun, indem Orthogonalisierung (a, b):

a' = a/||a||
b1 = b - (a'·b)a'  <-- scalar product denoted by ·
b' = b1/||b||

Sie befinden sich nun auf einer Ebene mit einer Orthonormalbasis und sollen im Geschäft zurück. Die Koordinaten von B in dieser Basis ist (a '· b, b' · b). Für eine ist es ähnlich (|| a ||, 0). Wenn Sie zu dem Umgebungsraum zurück gehen mögen, schreiben Sie einfach Ihren Vektor mit den Koordinaten (x1, x2) als x1 a ‚+ x2 b‘.

Ich hoffe, die mathematische Schreibweise nicht zu verwirrend ist.

Andere Tipps

Sie können dieses Papier nützlich finden: Rotationen für N-Dimensional Graphics von AJ Hanson. Es gibt auch dieses Papier: Allgemeine n-Dimensional Rotationen . Sie können auch diese Forum-Thread wo ein paar Leute versuchen, herausfinden. Und hier ist noch ein weiteres Papier: auf der starre Rotation Konzept in n-dimensionalen Räumen . Muss. Halt. Googeln.

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