2017-09-19 3 views
0

Nehmen wir an, ich habe einen sechs mal sechs Würfel mit xyz-Koordinaten.Finden Sie senkrechte Koordinaten im 3D-Raum mit zwei 3D-Punkten

Von dem mittleren Würfel (0,0,0) zu den anderen Seiten (sagen wir (0,1,0)) möchte ich die anderen 4 Komponenten finden, die zum mittleren Würfel in der Richtung peperdicular sind von (0,1,0).

Wenn wir eine Dimension verschieben, ist das einfach (und mein Gehirn kann es begreifen) ... die Komponenten werden (-1,0,0), (+ 1, 0,0), (0,0, + 1), (0,0, -1).

Nun, könnte jemand mir helfen, mit der Größe zu bewegen, wo zwei (zu (1,1,0) oder drei Koordinatenänderung (1,1, -1)?

Danke, Rodrigo

Antwort

0

Vielen Dank, das ist genau das, was ich getan habe.

Hier ist meine Lösung ist:

(in Matlab) ich eine Anzahl aller Möglichkeit Einheitswerte erstellt:

pos_vals=[ 0 0 0 ; -1 0 0 ; 1 0 0 ; 0 1 0 ; 0 -1 0 ; -1 -1 0 ; 1 1 0 ; -1 1 0 ; 1 -1 0; 0 0 1 ; -1 0 1 ; 1 0 1 ; 0 1 1 ; 0 -1 1 ; -1 -1 1 ; 1 1 1 ; -1 1 1 ; 1 -1 1 ; 0 0 -1 ; -1 0 -1 ; 1 0 -1 ; 0 1 -1 ; 0 -1 -1 ; -1 -1 -1 ; 1 1 -1 ; -1 1 -1 ; 1 -1 -1];

Und dann auf der Grundlage meiner Referenzkoordinaten [zB vec_ofinterest = (1, 1,0)], ich folgendes tun:

for idx_posvals=1:size(pos_vals,1) gg(idx_posvals)=dot(vec_ofinterest,pos_vals(idx_posvals,:)); if gg(idx_posvals) == 0 pos_vals(idx_posvals,:) end end

Welche g Ich biete Ihnen 8 Lösungen an (einschließlich der von Ihnen erwähnten Kehrwerte). -1 1 0 1 -1 0 0 0 1 -1 1 1 1 -1 1 0 0 -1 -1 1 -1 1 -1 -1

Es sieht so aus, als ob dies gelöst ist. Falls jemand Fehler findet, bitte lass es mich wissen. Rodrigo

+0

Ziemlich zuverlässig weg. Beachten Sie, dass Sie für eine eingeschränkte Menge von 27 Vektoren eine Tabelle mit dem Mapping index => list indexes of perp vorberechnen können. Vektoren' – MBo

0

Im 3D-Raum gibt es unendlich viele senkrechte Vektoren.

Wenn Sie wollen, dass ihre Komponenten durch 0, +-1 Werte beschränken, sollten Sie dann den nächsten Ansatz:

Ihre Vektorkomponenten sind A=(ax, ay, az). Skalarprodukt senkrechter Vektor B=(bx, by, bz) mit A muss Null

ax * bx + ay * by + az * bz = 0 

Komponenten von B bilden:

get A components 
nullify arbitrary component (if one of other components is not zero) 
exchange two another components 
negating one of them 

Beispiel:

(bx, by, bz) = (0, -az, ay) 

Also für Vektor A=(1,1,-1) eine von sechs Loten B1=(0, 1, 1)

Für Vektor A=(1,1,0) gibt es vier Varianten mit bestimmten Einschränkungen:

(-1, 1, 0) 
(1, -1, 0) 
(0, 0, 1) 
(0, 0, -1) 

Wenn Sie ein Paar Komponenten von perp zu beheben. vector - ersetzen Sie einfach benötigte Werte in dot Produktformel und lösen für unbekannte Komponente von B

Verwandte Themen