2017-01-01 4 views
0

Вот что я пытаюсь сделать:
Ввод: три вектора 3D {v1, v2, v3}, которые являются ортонормальными с произвольным знаком.
Вывод: два набора трех векторов 3D {v1s, v2s, v3s}, которые являются ортонормированными и имеют конкретный знак и что согласны с правым правилом.
Предположения: v1s будет иметь произвольный знак
.Правило правой руки

Мой вопрос сосредоточен на том, как найти знак v2s. Я хотел бы заставить это: v1s и v2s будут иметь (!) Угол 90 градусов, тот же самый подписанный угол между v2s, v3s.

О v3s, планирую рассчитать следующим образом: v3s = cross (v1s, v2s).

Если вопрос не определен хорошо, вы можете определить любой произвольный вектор как постоянный.

+0

Ответ, похоже, вас не устраивает, хотя он совершенно прав. Можете ли вы добавить фиктивный пример в свой вопрос с 3 входными векторами и ожидаемым выходом? PS: Лутцль в своем ответе дал вам два разных способа создания вашей базы! – BillBokeey

ответ

1

Да, ваш вопрос не определен. В размерах выше 2D нет знакового угла. Вы получаете только угол подписи между двумя векторами, если вы фиксируете ориентацию на плоскости, натянутой на эти векторы, и вообще нет предпочтительной ориентации.

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

+0

LutzL можно определить часовой порядок v1, v2, v3? когда v1 будет считаться всегда первым. – SpaceMan

+0

У меня нет первой идеи о том, что это может означать. «по часовой стрелке», по-видимому, подразумевает некоторую 2D-проекцию, и вы всегда можете смотреть на нее с двух сторон. – LutzL