Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сфера и треугольник [VC]


VolanD666 ©   (2006-02-03 10:28:00) 

Здравствуейте, программеры! Занялся я тут Collision Detection ( на основе сферы ). Нашел статью про то, как определить пересечение сферы с треугольником. Вот только не много ее не пойму. Пересечение сферы с плоскостью треугольника я сделал, а как найти "точку пересечения", что то не могу разобраться. Подскажите, please...


VolanD666   (2006-02-04 13:02:00) [1]

Ok, все получилось!


XProger   (2006-02-04 12:32:00) [2]

VolanD666, а что с ней?


VolanD666   (2006-02-04 07:50:00) [3]

В общем, с векторами я понял, а что с нормалью?


XProger   (2006-02-03 21:06:00) [4]

Pos - радиус-вектор
Normal - единичный вектор

Теперь, быстро лезем в учебник по алгебре за 8 класс (или яндекс) и понимаем различие!


VolanD666   (2006-02-03 18:01:00) [5]


> Читай первые 2 строки [1] поста :)

Отнимая от одного конца вектора, сам вектор, мы получим другую его точку?
Только вот я не понял про нормаль, а если треугольник далеко, то и нормаль не может быть рядом со сферой. ( я нормаль находил векторным произведением, между двумя векторами-сторонами треугольника )?


XProger   (2006-02-03 16:39:00) [6]

Dist - расстояние до плоскости по нормали Normal (перпендикуляру) из центра сферы Pos ;)


Кефир87   (2006-02-03 16:30:00) [7]

Pos и Normal - Векторные величины (x,y,z) а Dist скалярная величина - нверно радиус сферы 8)


XProger   (2006-02-03 15:29:00) [8]

Читай первые 2 строки [1] поста :)


VolanD666   (2006-02-03 15:13:00) [9]

Все равно не понял. Как отнимая от вектора-положения игрока нормаль к треугольнику ( длиной Dist ) мы можем получить точку пересечения :-O


XProger   (2006-02-03 14:48:00) [10]

Листочек бумажки и ручка :)


VolanD666   (2006-02-03 14:30:00) [11]


> VolanD666, Pos - Normal * Dist - вот твоя точка

В этой статье так же написано, вот это я как раз и не понял :-)


XProger   (2006-02-03 13:26:00) [12]

VolanD666, Pos - Normal * Dist - вот твоя точка


VolanD666   (2006-02-03 12:04:00) [13]


> Хотя, зачем находить точку пересечения?

Ну, а если сфера пересекла плоскость, а не треугольник?


XProger   (2006-02-03 11:39:00) [14]

Точка пересечения лежит в треугольнике.
Точка пересечения лежит на перпендикуляре опущенном из центра сферы на плоскость...
Хотя, зачем находить точку пересечения? Нашёл факт, что сфера "въехала" в плоскость треугольника - отодвинул сферу на (Radius - Dist) * Normal, где Radius - радиус сферы, Dist - расстояние до плоскости треугольника и Normal - нормаль к треугольнику.
Вот кривой примерчик на тему http://xproger.mirgames.ru/?id=2#XSource


Наверх

Титульная страница Поиск, карта сайта Написать письмо