2017-02-01 4 views
1

Ich versuche, eine Formel zu extrahieren Vektor u abzuleiten.Algorithmus, um einen Vektor parallel zu einer Ebene und senkrecht zu einem anderen Vektor zu finden

vector-plane-vector setup image

ich einige erste Daten gegeben:

  1. Flugzeug F mit dem Verfahren seinen normalen n = F->normal() zu extrahieren.
  2. Vektor c, die nicht innerhalb der Ebene F liegt und durch einen Punkt E geht, der auch nicht innerhalb der Ebene liegt F.

Und einige Constraints zu verwenden:

  1. der gewünschte Vektor u ist senkrecht zu dem Vektor c.
  2. Vektor u ist auch senkrecht zu einigen Vektor r, die nicht angegeben ist. Der Vektor r ist parallel zur Ebene F und auch senkrecht zum Vektor c. Daher können wir sagen, dass die Vektoren c, r und uorthogonal sind.

die * als Skalarprodukt bezeichnen lassen und ^ Operator Kreuzprodukt zwischen zwei 3D-Vektoren.

Die Berechnung des Vektors u ist einfach mit Kreuzprodukt: vec3 u = c^r. Also, meine ganze Aufgabe ist auf eingegrenzt, wie man den Vektor r findet, der parallel zu einer gegebenen Ebene F und gleichzeitig senkrecht zu dem gegebenen Vektor c ist.

Da wir wissen, dass r parallel zu F ist, können wir das normale und das Punktprodukt des Planes verwenden: n*r = 0. Da r unbekannt ist, kann eine unendliche Anzahl von Zeilen die oben erwähnte Gleichung erfüllen. So können wir auch die Bedingung verwenden, dass r senkrecht zu c: r*c = 0 ist.

Zusammenfassend gibt es zwei Punktprodukt Gleichungen, die uns den Vektor r zu finden helfen sollen:

r*c = 0; 
r*n = 0; 

Aber ich habe harte Zeit, um herauszufinden, wie man den Vektor erhalten r Die Koordinaten lieferten die beiden Gleichungen algorithmisch. Angenommen und wir wollen x, y und z finden; es scheint nur aus zwei Gleichungen nicht möglich:

x*c.x + y*c.y + z*c.z = 0; 
x*n.x + y*n.y + z*n.z = 0; 

Ich fühle mich wie ich etwas fehlte, zum Beispiel, ich brauche eine dritte constrain. Wird noch etwas benötigt, um x, y und z zu extrahieren? Oder habe ich einen Fehler in meiner Logik?

+0

mit Ihrer Notation: 'r = c^n' – coproc

+0

Da r parallel zu F ist, ist es orthogonal zu n. Man sucht also nach einem Vektor senkrecht zu n und c, der mit dem Kreuzprodukt n^c gefunden wird. –

Antwort

2

Sie können den Vektor r finden, indem Sie das Kreuzprodukt von n und c berechnen.

Dies wird R. C = r.n = 0

Sie automatisch richtig zufriedenstellen, dass Ihre beiden Gleichungen mehrere Lösungen haben. Die anderen Lösungen sind durch ein beliebiges skalares Vielfaches von r gegeben.

Verwandte Themen