|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Mike \"CybeRUS\" Samsonov 2:5020/400 19 May 2001 13:30:55 To : All Subject : Re: Collision Detect -------------------------------------------------------------------------------- Приветствую, "Evgeniy Lominin" <Evgeniy.Lominin@p115.f3.n5025.z2.fidonet.org>! А ты уже установил(а) Fidolook Express 2.000? > Приветствую тебя, All! > Вопрос: > Как проверить попадание точки в данный полигон? > Если есть другая методика, то какая? > Как быть если используется не поверхность, а объемное тело? Можно искать пересечение вертора с треугольником. В твоём случае легче двигать вектор AB направленый от поверхности "перпендикулярно" (т.е. если бы поверхность была плоской то тогда вектор был бы перепендикулярен), где A- твоя точка. Ищем пересечение с треугольником заданным тремя точками T1,T2,T3. Система уравнений: (A-B)*t+A=(T1-T2)*u+(T1-T3)*v+T1, если u+v<1 и 0<=t<=1, то значит вектор пересекает треугольник. Если пересекает, то нужно к A прибавить вектор (A-B)*t. Это теория. Hа практике можно оптимизировать алгоритм до сумасшедшей скорости. От куда взять B? Ты говоришь что проецируешь точку. Значит есть вектор по которому ты проецируешь. Hа нём и возьми B. Для объёмных тел тот же самый алгоритм, только B уже надо выбирать самому. Чуть чуть подумать и этот алгоритм можно переделать на пересечение треугольников в пространстве. -- Отправлено через сервер Talk.Ru - http://www.talk.ru --- ifmail v.2.15dev5 * Origin: Talk.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/6488d7d43b82.html, оценка из 5, голосов 10
|