Ändern der Richtung von einem Vektor
Gegeben zwei Vektoren in drei Dimensionen zeigen verschiedene Richtungen. Ich möchte, dass der erste Vektor in der Lage sein, die Richtung zu ändern, eine festgelegte Anzahl von Grad in Richtung des zweiten Vektors. Was ist die Formel oder der Algorithmus zur Berechnung dieser neue Vektor.
Beispielsweise ein Raum-Schiff (dies ist für eine Raum-Schiff-simulator) zeigt in die direciton der (2,3,3). Das Schiff wird sich jetzt ändern Richtung 20 Grad in Richtung des Vektors (2,-3,-2). Was würde der neue Vektor sein. Es wird nicht rotiert entlang einer Achse, sondern in einem rechten Winkel zu den beiden Vektoren.
Wo ist das Raumschiff? Sie benötigen einen Ausgangspunkt, um die Berechnung der rotation aus.
Nein, nicht zum drehen eines Vektors
Nein, nicht zum drehen eines Vektors
InformationsquelleAutor user631589 | 2011-02-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sagen, das Sie drehen möchten A in Richtung B.
Nehmen Sie das Kreuzprodukt AxB = C und normalisieren.
und Jetzt brechen Sie in zwei Komponenten, eine parallel zum C und eine normale:Jetzt konstruieren Sie einen Vektor normal auf A und C (mit dem richtigen Sinn):Nun bauen Sie den gedrehten Vektor:BEARBEITEN
Ich fühle mich wie ein idiot. Die richtige (und einfacher) die Ableitung
EDIT:
Dies funktioniert durch einfache geometrie. C ist normal zu der Ebene mit A und B. F ist in der Ebene, und normal auf A. Also jedem Vektor in der Ebene ist eine lineare Kombination von A und F; das heißt, jeder Vektor Z in der Ebene konstruiert werden kann als Z = aA + bF, wo a und b zahlen sind, und eine solche Summe wird in der Ebene. F hat auch die gleiche Größe wie A, also, wenn wir bauen
was wir bekommen, ist ein Vektor mit der gleichen Größe, aber getrennt von Einem durch den Winkel theta. (Dies ist nicht sofort offensichtlich, aber wenn Sie spielen, um mit ihm ein wenig, du wirst sehen, dass es funktioniert.)
Mit Ihrem Beispiel:
G ist in der gleichen Ebene wie A und B (normal C), und der Winkel zwischen A-und G-20 Grad. (Der Winkel zwischen A und B ist 124.7 Grad, der Winkel zwischen G und B ist 104.7 Grad.)
Auch, dass die Ergebnisse in der E = A, F = C x A, was macht F parallel zu B, So wirksam sind Sie nur in Abwägung der Vektoren A und B mit cos(theta) und k*sin(theta). Funktioniert nicht.
Etuaho: danke, ich war falsch, ich habe korrigiert meine Antwort. (Ihr Erster Kommentar war richtig, das zweite falsch.)
Oh, ich erkannte meinen Fehler. Noch, ich Frage mich, was dieser Ansatz basiert auf? Ich kann nicht sofort sehen, wie es funktioniert, können Sie erläutern, auf die es ein bisschen?
Bevor ich versuche, dies herauszufinden (es ist schon 15 Jahre her, dass ich zuletzt zu tun hatte mit Vektoren in der Schule). A ist der erste Vektor, B ist der zweite Vektor, C = A, F = CxA, theta ist der Betrag, den ich bin drehen und G ist die endgültige Richtung = cos(theta)+sin(theta)F. Ist das richtig? Oder bin ich etwas fehlt hier.
InformationsquelleAutor Beta
Nehmen das Kreuzprodukt von zwei Vektoren erhalten den Vektor senkrecht zu Ihnen.
Dann können Sie drehen Sie um, dass der Vektor.
Der einfachste Weg ist die Verwendung einer rotationsmatrix. Sie können es mit reinem trig-wenn Sie möchten, durch definieren eines 3d-Kreis-und Reisen entlang des Randes von ihm, aber ich würde schauen in wie push-und pop-Matrizen von einem Stapel, wenn Sie erfahren, dass es jetzt, es wird der rest des Spiels Entwicklung Aufgaben viel einfacher.
InformationsquelleAutor corsiKa
Müssen Sie zuerst berechnen Sie die rotation vector, sagen:
Dann machen Sie Ihre Drehung entlang dieser Achse, mit einer drehmatrix.
InformationsquelleAutor tibur