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

Вниз

Опять коллизии   Найти похожие ветки 

 
Бульдозер ©   (2005-01-05 21:45) [0]

У меня один простенький вопросик: как определить координаты шара после столкновения с треугольником (нормаль тоже не помешала бы). У шара известны координаты в последний и предпоследний кадр. Нигде ещё не нашёл хороших коллизий (есть только точка-треугольник).
Зараннее спасибо.


 
Asteroid ©   (2005-01-05 23:47) [1]

Один из методов такой:
1. Находим плоскостьЮ в которой лежит треугольник
2. Находим точку касания шаром треугольника (она лежит в этой плоскости) исходя из скорости шара.
3. Отражаем шар от плоскости.

1. Плоскость задается нормалью N и расстоянием от центра D. Каждая точка p плоскости удовлетворяет уравнению N*p + D = 0, * - скалярное произведение.
Нормаль к треугольнику (если не задана руками):
N = (p2 - p1) x (p3 - p1); p1, p2, p3 - вершины треугольника, x - векторное произведение.
D = -N*p1

2. Вектор скорости v шара: v = ( c1 - c2 ), c1 - положение центра в последнем кадре, c2 - в предпоследнем.
Луч по направлению v из точки c1 пересекает плоскость треуголльника в точке P, ее и будем искать. Имеются два уравнения:
N*P + D = 0  (уравнение плоскости, точка P в ней)
P = c1 + v * t  (уравнение луча, точка P на нем)
(t во втором уравнении - число)
Подставляем второе в первое, получается
N*(с1 + v * t) + D = 0 ==> N*v * t = -D - N*c1 ==> t = -( D + N*c1 ) / ( N*v ).
Находим точку P: P = c1 + v * t
Заметим, что 0 <= t <= 1, иначе при такой скорости шар бы не коснулся треугольника.

3. Вектор отраженного направления: v" = v - 2 * N*(N*v). Т.к. до точки касания шар прошел путь t, после касания ему в этом кадре осталось пройти путь 1 - t. Поэтому:
c = P + v * (1 - t).

Надеюсь, все понятно и я нигде не накосячил с выкладками :)



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

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

Наверх




Память: 0.45 MB
Время: 0.054 c
1-1110786259
x_shura
2005-03-14 10:44
2005.03.27
Ошибка отрисовки Virtual TreeView


1-1109839622
Гость
2005-03-03 11:47
2005.03.27
Какие параметры цвета (RGB) для стандартного фона формы?


14-1110348356
Ozone
2005-03-09 09:05
2005.03.27
Эффективность канала связи


14-1110086834
begin...end
2005-03-06 08:27
2005.03.27
С Днём рождения! 6 марта


14-1110066208
GanibalLector
2005-03-06 02:43
2005.03.27
м-да...смешно





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский