Определите функцию для окружности, закрывающей конец отрезка - PullRequest
0 голосов
/ 28 сентября 2010

Мне нужна функция, которая возвращает точки на окружности в трех измерениях.

Круг должен «перекрывать» отрезок, определенный точками A и B и его радиусом.каждая крышка перпендикулярна отрезку.и в центре одной из конечных точек.

Вот дерьмовая диаграмма

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

Как заметил Дэвид Норман, суть заключается в том, чтобы найти два ортогональных единичных вектора X, Y, которые ортогональны N. Однако я думаю, что более простой способ их вычисления - найти отражение Q домохозяина, которое отображает N в кратное (1, 0,0), а затем взять в качестве X изображение (0,1,0) в Q и Y в качестве изображения (0,0,1) в Q. Хотя это может показаться сложным, оно сводится к:

s = (N [0]> 0,0)?1,0: -1,0

t = N [0] + s;f = -1,0 / (s * t);

X [0] = f * N [1] * t;X [1] = 1 + f * N [1] * N [1];X [2] = f * N [1] * N [2];

Y [0] = f * N [2] * t;Y [1] = f * N [1] * N [2];Y [2] = 1 + f * N [2] * N [2];

1 голос
/ 28 сентября 2010

Пусть 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>

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