Войти
ПрограммированиеФорумФизика

Физика «на пальцах»: Обнаружение столкновений для выпуклых геометрий (комментарии)

Страницы: 1 2 3 4 5 6 Следующая »
#0
3:49, 7 окт. 2012

Физика «на пальцах»: Обнаружение столкновений для выпуклых геометрий (комментарии)

Это сообщение сгенерировано автоматически.
#1
3:49, 7 окт. 2012

Ну вот жеж. Вот!

#2
4:54, 7 окт. 2012

Спасибо за статью!
А Support points – это что? Вершины тел?
И их нужно проецировать на auxAxes, а потом искать совпадения проекций?

#3
5:41, 7 окт. 2012

Gringosol
> А Support points – это что? Вершины тел?
под высказыванием "взять support point в направлении dir" понимается найти такую точку геометрии, которая является самой далёкой в направлении dir. для многогранника это всегда будет одна из его вершин. почитай в двумерной статье про support mapping, я там достаточно подробно расписал. если всё равно будет не понятно, придётся переписывать.

после того, как в каждом направлении auxAxes получена точка, да, ищутся и удаляются совпадения.

#4
6:06, 7 окт. 2012

Suslik
Жги еще!
А то понапишут физ формул и тонны кода и сидишь часами вкуриваешь :(

#5
6:46, 7 окт. 2012

Буквально вчера рылся в этом направлении.
Такой подход (через SAT) не понравился своей приближенностью.

По идее GJK должен быть точнее?
Из него можно выдернуть тип feature.
Или я не прав?

#6
7:02, 7 окт. 2012

ryzed
> Такой подход (через SAT) не понравился своей приближенностью.
> По идее GJK должен быть точнее?
gjk занимается ортогональной для описанного алгоритма задачей - он только ищет разделяющую ось. описанный в моей статье алгоритм по готовой разделяющей оси строит точки контакта. а сама по себе теорема о разделяющей оси(SAT) точна и в ней вообще никаких допущений нет, разговор о точности здесь не имеет смысла. другое дело, что в лоб перебирать все оси иногда может быть затратно - gjk просто работает обычно быстрее, чем тупой перебор. таким образом мой алгоритм никак не выступает конкурентом gjk, он просто предлагает вариант, что делать с полученной из gjk(или влобного перебора) разделяющей осью.

плюс feature, которую можно при должной сноровке вытянуть из gjk, не только пригодна лишь для случая контактирующих многогранников(как ты построишь фичу для эллипсоида?), но и что ты с ней будешь дальше делать? как ты, зная ось и фичу, будешь строить контактные точки? именно об этом рассказывается в фазах 3-4 - это не так тривиально, как хотелось бы.

#7
7:40, 7 окт. 2012
Подзаголовок "Суть алгоритма" почему-то всё время норовит прочитаться как "Суть такова"
#8
13:27, 7 окт. 2012

Suslik
раньше как-то пытался сделать подобный алгоритм, но замучился с той частью, которую ты называешь 2дклиппинг. да и в то время я все же писал движок для тримеш-тримеш :), а когда стал мыслить реально и перешел на хул-хул забыл про этот алгоритм.
ну а вообще, если ты говоришь, что он работает быстро, за O(n), то может в дальнейшем и себе такое сделаю.
статья - гуд!
ЗЫ неужели ты еще собираешься писать статью по нахождению ПД? вроде как SAT - это азы, или ты что-то новое хочешь там рассказать?

#9
15:33, 7 окт. 2012

repeat
> ЗЫ неужели ты еще собираешься писать статью по нахождению ПД? вроде как SAT -
> это азы, или ты что-то новое хочешь там рассказать?
как ты найдёшь SAT? перебором всех фейсов и пар рёбер для многранников? в общем случае это медленно. а если ищешь его для эллипсоидов, заданных аналитически? я придумал алгоритм и даже написал о нём в двумерной статье, но трёхмерную версию пока выкладывать не готов.

#10
16:03, 7 окт. 2012

Suslik
> я придумал алгоритм и даже написал о нём в двумерной статье, но трёхмерную
> версию пока выкладывать не готов.
окей. буду ждать его в статье )

#11
22:31, 10 окт. 2012

Suslik, suuport point'ы заданы дискретно (в случае неаналитического задания), а векторов бесконечное множество. Как вычислять sp для произвольного вектора? Искать наиболее совпадающий вектор среди заданных?

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

#12
22:53, 10 окт. 2012

Gringosol
> Suslik, suuport point'ы заданы дискретно (в случае неаналитического задания), а
> векторов бесконечное множество. Как вычислять sp для произвольного вектора?
> Искать наиболее совпадающий вектор среди заданных?
для случая многогранника функция взятия support point'а в направлении dir выглядит так - ты просто пробегаешь по всем вершинам многогранника и выбираешь ту из них, скалярное произведение которой с направлением dir максимально. для аналитически заданной геометрии такую точку обычно можно найти аналитически. то есть ты хранишь обычные вершины многогранника, и для любого направления одна из этих вершин всегда будет support point'ом - нетрудно доказать.

Gringosol
> там какие-то существенные различия в нахождении вспомогательного вектора? то
> есть пересечение pd с касательной плоскостью уже не работает?
работает. просто искать касательную плоскость сложнее - в наивной реализации итерации медленнее сходятся, чем хотелось бы.

#13
23:08, 10 окт. 2012

Suslik
> просто искать касательную плоскость сложнее

>1) инициализируем вектор v каким-то значением, к примеру, текущим значнием pd

первое, что приходит в голову, то что вектор v может скакать вокруг искомой точки... и надо не давать это ему делать, то есть изначально выбрать плоскость, в которой приближаться к точке А

#14
23:49, 10 окт. 2012

Gringosol
> первое, что приходит в голову, то что вектор v может скакать вокруг искомой
> точки... и надо не давать это ему делать, то есть изначально выбрать плоскость,
> в которой приближаться к точке А
представь себе овраг с очень крутыми и высокими берегами, дно которого находится под небольшим уклоном. если шарик опустить в такой овраг, он будет очень быстро кататься с берега на берег и еле как будет продвигаться вниз по уклону русла оврага. вот примерно в такой тип экстремума падает задача в трёхмерном варианте в наивном решении. в двумерном сразу оказывается где надо.

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