Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Вниз

Сфера и треугольник   Найти похожие ветки 

 
VolanD666   (2006-02-03 10:28) [0]

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


 
XProger ©   (2006-02-03 11:39) [1]

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


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


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

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


 
XProger ©   (2006-02-03 13:26) [3]

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


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


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

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


 
XProger ©   (2006-02-03 14:48) [5]

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


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

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


 
XProger ©   (2006-02-03 15:29) [7]

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


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

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


 
XProger ©   (2006-02-03 16:39) [9]

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


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


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

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


 
XProger ©   (2006-02-03 21:06) [11]

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

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


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

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


 
XProger ©   (2006-02-04 12:32) [13]

VolanD666, а что с ней?


 
VolanD666   (2006-02-04 13:02) [14]

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



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.047 c
3-1158307102
Guest001
2006-09-15 11:58
2006.11.19
Exception в Firebird не ловится в Delphi - почему?


1-1160104783
padishah
2006-10-06 07:19
2006.11.19
Internet


1-1160418934
o_serg
2006-10-09 22:35
2006.11.19
ListView.Items.Item[n].Data присвоить ansistring


5-1142938872
AlexeyT
2006-03-21 14:01
2006.11.19
Тормозит отрисовка на Bitmap-е


2-1162248774
funky
2006-10-31 01:52
2006.11.19
Наложение картинки на картинку





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский