Как мне найти единичный вектор между точкой и линией? - PullRequest
1 голос
/ 05 сентября 2010

У меня есть три известные 3-мерные точки: A, B и C.

Кроме того, у меня есть четвертое очко, X.

X лежит на векторе AB так, что вектор CX перпендикулярен вектору AB. Итак AB · CX = 0

Как мне найти единичный вектор CX?


Сценарий использования здесь заключается в том, что я создаю (переведенную) вращательную матрицу, где начало координат A, ось z проходит через B, плоскость xz проходит через C, а оси ортогональны

У меня также есть векторный объект, который обеспечивает функции точек и перекрестных произведений.

1 Ответ

2 голосов
/ 05 сентября 2010

Пусть

U = (B-A)/||(B-A)||

будет единичным вектором вдоль линии от A до B, где ||X|| обозначает длину вектора X. Теперь мы можем параметризовать всю строку с помощью

A + tU

и мы хотим

((A + tU) - C)*U = 0

так что

A*U - C*U + t = 0
t = C*U - A*U

поэтому мы решили для t, и теперь мы позволяем

V = (A+tU - C)/||A+tU - C||

и у нас есть единичный вектор вдоль линии U и один ортогональный ему V.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...