Ich habe 2 Vektoren (V1{x1, y1, z1}, V2{x2, y2, z2})
, zu erreichen, und ich will drehen V1
herum X-Achsen, Y-Achse undZ-Achse parallel zumV2
sein. Ich möchte 3 Drehwinkel finden. Gibt es eine allgemeine Formel, die ich verwenden kann, um sie zu finden?drehen, um einen Vektor mit einem anderen Vektor Orthogonalität
3
A
Antwort
3
Ich würde das auf diese Weise tun:
A = V1xV2; //Cross product, this gives the axis of rotation
sin_angle = length(A)/(|V1| |V2|); //sine of the angle between vectors
angle = asin(sin_angle);
A_n = normalize(A);
Jetzt können Sie eine Quaternion mit Winkel und a_n bauen.
q = (A_n.x i + A_n.y j + A_n.z k)*sin(angle/2) + cos(angle/2);
Und these Formeln verwenden, um Ihren Euler-Winkel zu erhalten.
1
Brauchen Sie wirklich die Rotationswinkel oder ist es eine Rotationsmatrix, nach der Sie suchen? Wenn letzteres der Fall, können Sie es die Art und Weise tun es in OpenFOAM getan: http://github.com/OpenFOAM/OpenFOAM-2.1.x/blob/master/src/OpenFOAM/primitives/transform/transform.H#L45
Beachten Sie, dass in OpenFOAM für vector
der &
Bediener das innere Produkt bezeichnet, die ^
Bediener das Kreuzprodukt und *
ist das äußere Produkt. Die sqr
-Funktion berechnet die elementweisen Quadrate magSqr
das Quadrat der Größe eines vector
(d. H. v&v
).
Verwandte Themen
- 1. C++ Füllen Sie einen Vektor mit einem anderen Vektor
- 2. C++ erweitern einen Vektor mit einem anderen Vektor
- 3. Ersetze Werte in einem Vektor basierend auf einem anderen Vektor
- 4. Fügen Sie einen Vektor in einen Vektor
- 5. Was ist eine Formel, um einen Vektor senkrecht zu einem anderen Vektor zu erhalten?
- 6. Von einem Vektor mit einem Zuweiser zu einem Vektor mit einem anderen
- 7. C++ einen Vektor an einen anderen anhängen
- 8. Vektor von Strukturen, die einen anderen Vektor enthält
- 9. mit einem anderen Vektor, der einen Teil eines Vektors Ersetzen
- 10. Wie füge ich einen Vektor in umgekehrter Reihenfolge mit einem anderen Vektor in C++ hinzu?
- 11. Einen Iterator auf einen 2D Vektor auflösen und seinen Wert einem anderen 2D Vektor zuweisen
- 12. Erstellen Sie einen Vektor mit der Nummer jedes Elementtyps, der durch einen anderen Vektor bestimmt wird
- 13. Zugriff auf Vektorelemente in einem anderen Vektor durch einen Iterator?
- 14. löschen Vektoreinträge basierend auf einem anderen Vektor
- 15. C++ Vektorinhalt auf einen anderen Vektor
- 16. Wie würde man einen leeren Vektor von Paaren zu einem anderen Vektor zurückschieben?
- 17. Wie erstellt man einen Vektor von Boxed-Trait-Objekten aus einem anderen Vektor von ihnen?
- 18. Auswählen eines einzelnen Members aus jeder Struktur in einem Std :: Vektor in einen anderen Vektor
- 19. Überprüfen Sie, ob ein Vektor mindestens einen Wert von einem anderen Vektor enthält
- 20. Wie speichert man Referenzen auf Objekte aus einem Vektor in einem anderen Vektor in C++?
- 21. einen Vektor von String in einen Vektor von ganzzahligen
- 22. Punktposition in einem Vektor/Array
- 23. Ersetzen bestimmter Werte im Vektor mit verschiedenen Proben von einem anderen Vektor
- 24. Kopieren nur die Buchstaben in einem Vektor zu einem anderen Vektor in C++
- 25. Vektor Vektor Puffer C++
- 26. , wie man einen Vektor
- 27. Sortieren eines Vektors mit Werten in einem anderen Vektor
- 28. Iterieren durch bestimmte Elemente eines Vektors mit einem anderen Vektor
- 29. in einem boolean Vektor
- 30. Normalisieren Sie einen Vektor?
so haben wir einzigartige Antwort? – MHF
asin funktioniert nicht, da der Sinus zyklisch ist. – Joonazan