Пусть N будет единичным вектором в направлении от A до B, т. Е. N = (BA) / длина (AB).Первый шаг - найти еще два вектора X и Y, которые {N, X, Y} образуют базис.Это означает, что вам нужны еще два вектора, чтобы все пары {N, X, Y} были перпендикулярны друг другу, а также чтобы все они были единичными векторами.Еще один способ думать об этом заключается в том, что вы хотите создать новую систему координат, ось X которой совпадает с отрезком линии.Вам нужно найти векторы, указывающие в направлении оси y и оси z.
Обратите внимание, что существует бесконечно много вариантов выбора для X и Y. Вам просто нужно как-то найти две из этих работ.
Один из способов сделать это - сначала найти векторы {N, W, V} где N сверху, а W и V - два из (1,0,0), (0,1,0) и (0,0,1).Выберите два вектора для W и V, которые соответствуют наименьшим координатам N. Поэтому, если N = (.31, .95, 0), тогда вы выбираете (1,0,0) и (0,0,1) для Wи V. (Замечание Math Geek: этот способ выбора W и V гарантирует, что {N, W, V} охватывает R ^ 3).Затем вы применяете процесс Грамма-Шмидта к {N, W, V}, чтобы получить векторы {N, X, Y}, как указано выше.Обратите внимание, что вам нужно, чтобы вектор N был первым вектором, чтобы он не изменялся процессом.
Итак, теперь у вас есть два вектора, которые перпендикулярны отрезку и перпендикулярны друг другу.Это означает, что точки на окружности вокруг A имеют вид X * cos t + Y * sin t + A, где 0 <= t <2 * pi.Это в точности как обычное описание круга в двух измерениях;это просто записано в новой системе координат, описанной выше. </p>