Принудително правило за дясната ръка

Ето какво се опитвам да направя:
Вход: Три 3D {v1,v2,v3} вектора, които са ортонормални с произволен знак.
Изход: Два набора от три 3D {v1s,v2s,v3s} вектора които са ортонормални и имат специфичен знак и които съвпадат с правилото на дясната ръка.
Предположения: v1s ще има произволен знак
.

Въпросът ми е фокусиран върху това как да намеря знака v2s, бих искал да наложа това: v1s и v2s ще имат подписан (!) ъгъл от 90 градуса, същият знаков ъгъл между v2s, v3s.

Относно v3s смятам да изчисля по следния начин: v3s = cross(v1s,v2s).

Ако въпросът не е дефиниран добре, можете да дефинирате всеки произволен вектор като константа.


person Tamir Einy    schedule 01.01.2017    source източник
comment
Отговорът изглежда не ви удовлетворява, въпреки че е напълно верен. Можете ли да добавите фиктивен пример във вашия въпрос с 3 входни вектора и очаквания изход? PS: Lutzl в своя отговор ви даде 2 различни начина за създаване на вашата основа!   -  person BillBokeey    schedule 04.01.2017


Отговори (1)


Да, въпросът ви не е добре дефиниран. В размери над 2D няма ъгъл със знак. Получавате ъгъл със знак между два вектора само ако фиксирате ориентация на равнината, обхваната от тези вектори, и по принцип няма предпочитана ориентация.

В 3D фиксирането на ориентация се равнява на фиксиране на един от двата нормализирани нормални вектора. Така можете или да дефинирате v3 от непроменените v1 и v2 като v3s = cross(v1s,v2s), или да коригирате непромененото v3, за да дефинирате ориентацията в равнината v1,v2 и да изчислите v2s = cross(v3s,v1s).

person Lutz Lehmann    schedule 01.01.2017
comment
LutzL възможно ли е да се определи редът на часовниковата стрелка на v1,v2,v3? когато v1 ще се приеме, че винаги е първи. - person Tamir Einy; 01.01.2017
comment
Нямам представа какво може да означава това. посоката на часовниковата стрелка изглежда предполага някаква 2D проекция и винаги можете да погледнете това от две страни. - person Lutz Lehmann; 01.01.2017