Физика для игрФорум

Collision Detection для геометрий, заданных SupportMapping'ом (комментарии) (2 стр)

Страницы: 1 2 3 48 Следующая »
#15
14:10, 9 сен 2008

Suslik
То есть там имелось ввиду что Sc - это такая фигура, что: Sc*v=max( Sa*v, Sb*v) для любого v (тогда ясно почему это выпуклая оболочка). А как ее получить по двум саппорт мэппингам?
И правда ли что каждый раз саппорт мэппинг надо hill climbing'ом вычислять?

#16
14:22, 9 сен 2008

id-mikle
Задать геометрию саппорт мэппингом - это значит сопоставить ей функцию S, которая для каждого направления, бла-бла-бла, написано уже в первом абзаце.
>А как ее получить по двум саппорт мэппингам?
дык ты же сам ниписал : Sc(v)=max( Sa(v), Sb(v)). S - это функция, аргументом которой является вектор. Задав саппорт мэппинг геометрии, ты автоматически задаёшь саму геометрию, что не ясно?

#17
14:23, 9 сен 2008

>И правда ли что каждый раз саппорт мэппинг надо hill climbing'ом вычислять?
Саппорт мэппинг полигональной модели - да, один из способов - вычислять его hill climbing'ом. Только саппорт мэппинг изобретён совсем не только для того, чтобы полигональные модели описывать.

#18
15:10, 9 сен 2008

Suslik
>Скажу только по поводу мэппинга с рисунком - это не сумма минковского, а выпуклая оболочка. Для неё мэппинг выглядит именно так - посмотри формулу.
Да, просто функция max видимо покомпонентная, а я почему-то подумал что оно выбирает вектор с макс длиной из параметров.

>в смысле? всё так плохо?
не, не в этом смысле. Скорее как-то необычно. Всмысле написано все вроде понятно, по шагам. Но только непонятно почему именно так, почему это дает нужные точки для общего случая, почему вообще работает.

#19
18:52, 9 сен 2008

gexogen
>Да, просто функция max видимо покомпонентная, а я почему-то подумал что оно выбирает вектор с макс длиной из параметров.
Блин, тут я накосил. Переписал.

>Но только непонятно почему именно так, почему это дает нужные точки для общего случая, почему вообще работает.
Ну я расчитывал на то, что читающий помозгует, прикинет пару случаев, которые считает каверзными, и сам поймёт..

#20
22:22, 9 сен 2008

Suslik
А если например даны два круга радиуса 1 у одного центр в (-100;0), а у другого в (100;0)
Тогда если брать максимумы, то у полученной фигуры максимальное расстояние между любой парой точек по оси X будет не больше 2. Что не очень похоже на выпуклую оболочку)

#21
22:36, 9 сен 2008

id-mikle
>Suslik
>А если например даны два круга радиуса 1 у одного центр в (-100;0), а у другого
>в (100;0)
>Тогда если брать максимумы, то у полученной фигуры максимальное расстояние
>между любой парой точек по оси X будет не больше 2. Что не очень похоже на
>выпуклую оболочку)
да ну.

SMap1(v) = (v + Vector2( 100.0f, 0)).GetNorm();
SMap2(v) = (v + Vector2(-100.0f, 0)).GetNorm();

ещё как похоже.

#22
0:12, 10 сен 2008

Suslik
Тыже писал что Smap(v) - это p in A, а про нормирование ничего не говорил.

#23
4:01, 10 сен 2008

id-mikle
SMap1(v) = (v + Vector2( 100.0f, 0)).GetNorm();
- это функция саппорт-мэппинга для сферы радиуса 1, с координатами центра (-100, 100). что тебя не устраивает?

#24
9:43, 10 сен 2008

Suslik
>SMapc(v) = (SMapa(v) * v > SMapb(v) * v) ? SMapa(v) : SMapb(v);
Это наоборот получается тогда, что рисунок неправильный. Я так сначала и подумал. То есть выбираем точку или с квадрата или с эллипса. А те точки плавного перехода ни квадрату, ни эллипсу не принадлежат. Если так и должно быть, то надо исправить рисунок. А может вначале правильно было?

#25
13:25, 10 сен 2008

gexogen, нет. сейчас формула и рисунок правильный. Понять это можно так:
Возьмём некоторое направление v, и буем его медленно вращать, описывая получившийся SMap. В моменте, где условие SMapa(v) * v > SMapb(v) * v меняет значение, и происходит "скачёк" с прямоугольника на эллипс, визуально видимый как этот отрезок, их соединяющий.

#26
14:04, 10 сен 2008

Suslik
А можешь дать какие нибудь ссылки где много всего про саппорт мэаппинги написано

#27
19:54, 10 сен 2008

id-mikle
>>что тебя не устраивает?
Просто из того определения которое ты написал получается что саппорт мэппинг для той сферы будет равен v + Vector2( 100.0f, 0), без нормализации

#28
13:32, 11 сен 2008

Suslik
>происходит "скачёк"
должен быть именно резкий переход, а не плавный. Вот смотри:

формула 1:
SMapc(v) = max(SMapa(v), SMapb(v)) (max покомпонентный)
то есть каждая из компонент X,Y,Z выбирается независимо (и видимо по модулю?), и такой рисунок правильный:
Изображение
так и было вначале, а я ошибся. Точки перехода получаются когда Y компонента выбирается из эллипса, а X из квадрата.

формула 2:
SMapc(v) = (SMapa(v) * v > SMapb(v) * v) ? SMapa(v) : SMapb(v)
рисунок должен быть такой:
odindvatri | Collision Detection для геометрий, заданных SupportMapping'ом (комментарии)
Это выбор, то есть выбирается точка из квадрата ИЛИ эллипса. Тут не может быть точек, которые изначально ни квадрату, ни эллипсу не принадлежали.

#29
13:55, 11 сен 2008

gexogen
Саппорт мэппинг это не последняя точка по направлению v из начала координат, а судя по твоей последней картинке ты именно так и считаешь)

Страницы: 1 2 3 48 Следующая »
Физика для игрФорум

Тема в архиве.