Найти перпендикулярные координаты в трехмерном пространстве, используя две трехмерные точки

Предположим, у меня есть куб шесть на шесть, каждый с координатами xyz.

Переходя от среднего куба (0,0,0) к другим сторонам (скажем, (0,1,0), я хотел бы найти другие 4 компонента, которые расположены в среднем кубе, следуя направлению (0, 1,0).

Если мы переместим одно измерение, это легко (и мой мозг может это понять)... компоненты будут (-1,0,0),(+1,0,0), (0,0,+1), (0,0,-1).

Теперь, может кто-нибудь помочь мне с переходом к размеру, где меняются две (на (1,1,0) или три координаты (1,1, -1)?

Спасибо, Родриго

2 ответа

Решение

Спасибо, это именно то, что я сделал.

Вот мое решение:

(в Matlab) я создал ряд значений всех возможных единиц:

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];

А затем на основе моей ссылки координат [например vec_ofinterest=(1,1,0) ], я делаю следующее:

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

Которые дают мне 8 решений (включая упомянутые вами ответные меры). -1 1 0 1 -1 0 0 0 1 -1 1 1 1 -1 1 0 0 -1 -1 1 -1 1 -1 -1

Похоже, это решено. В случае, если кто-нибудь найдет ошибку, пожалуйста, дайте мне знать. Родриго

Существует бесконечное число перпендикулярных векторов в трехмерном пространстве.

Если вы хотите ограничить их компоненты по значениям 0, +-1, затем рассмотрим следующий подход:

Ваши векторные компоненты A=(ax, ay, az), Точечный продукт перпендикулярного вектора B=(bx, by, bz) с А должен быть равен нулю

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

Для формирования компонентов B:

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

пример:

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

Так для вектора A=(1,1,-1) один из шести перпендикуляров B1=(0, 1, 1)

Для вектора A=(1,1,0) Есть четыре варианта с данными ограничениями:

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

Если вы хотите исправить пару компонентов perp. вектор - просто подставьте нужные значения в формулу точечного произведения и найдите неизвестный компонент B

Другие вопросы по тегам