|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Vladimir Hmelyoff 2:5055/115.61 27 Dec 2001 11:00:28 To : Aleksey Kuhtenkov Subject : <none> --------------------------------------------------------------------------------
Пойдем-ка из RU.ALGORITHMS с этой темой в эту эху...
________Hi,_Aleksey
AK>>> Помогите решить задачу: нужно определить, пренадлежит ли точка
AK>>> тетраэдру?
KZ>> В книжке Е.В.Шикин, А.В.Боресков "Полигональные модели", стр. 201
KZ>> описана процедура принадлежности точки многоугольнику.
AK> Многоугольник я знаю. Мне надо многогранник.
Все просто. Составляем уравнение каждой грани.
A(x-x0)+B(y-y0)+C(z-z0)=0
x0,y0,z0 - одна из вершин грани.
(A,B,C) - вектор нормали к грани, вычисляется векторным умножением любых 2
векторов, лежащих в грани. Hапример, грань - треугольник с вершинами E,F,G,
составляем вектора, например, EF и FG и умножаем векторно EFxFG.
Итак, получаем уравнение грани. Затем, имеем функцию:
p=A(x-x0)+B(y-y0)+C(z-z0)
Подставляем любую точку в параметры (x,y,z) и получаем p>0, если точка лежит по
одну сторону грани, p<0, если по другую сторону, p=0, если лежит на самой грани.
Все! Тетраэдр - выпуклая фигура, так что надо подставить любую из остальных
точек тетраэдра (в смысле, не нежащих на обрабатываемой грани) и подставить
искомую точку. Они должны лежать по одну и ту же сторону.
Вот так мы и проверяем ВСЕ грани перебором. Если условие всегда выполняется,
значит, точка лежит внутри.
--- Всех в таз, залить цементом и в море!
* Origin: 100 байт в 0 файлах. (2:5055/115.61)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/39213c2af2f3.html, оценка из 5, голосов 10
|