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

Box2d iOS тело из невыпуклого многоугольника

#0
13:51, 21 мая 2012

Среда iOS Box2d - Нужно создать тело из невыпуклого, но без дыр, многоугольника,
собственно в какую сторону курить?
Если есть готовое решение на С++ или Objective-C? буду безмерного благодарен.


#1
14:06, 21 мая 2012

>создать тело из невыпуклого, но без дыр, многоугольника,
Клеить из нескольких выпуклых фикстур?

#2
14:21, 21 мая 2012

А где их взять если на входе массив точек многоугольника? Может можно его разделить на фигуры, то как?

#3
14:31, 21 мая 2012

Самое "простое" - наверное, просто триангулировать. Хотя "простое" оно и в самом деле только лишь в кавычках. Но это решение которое 100% будет работать.

#4
9:20, 22 мая 2012

у себя в каком то проекте использовал это:
http://mnbayazit.com/406/bayazit

#5
15:39, 22 мая 2012

нашел решение - дополнительный класс в бох2д -- b2Separator (исходный код нагугливается)

Separates a non-convex polygon into convex polygons and adds them as fixtures to the body parameter.
There are some rules you should follow (otherwise you might get unexpected results) :
1) This class is specifically for non-convex polygons. If you want to create a convex polygon,
you don't need to use this class - Box2D's b2PolygonShape class allows you to create convex shapes with the
setAsArray()/setAsVector() method.
2) The vertices must be in clockwise order.
3) No three neighbouring points should lie on the same line segment.
4) There must be no overlapping segments and no "holes".

#6
19:23, 22 мая 2012

http://www.emanueleferonato.com/2011/09/12/create-non-convex-comp… s-with-box2d/

Но проще и правильнее триангулировать и создать тело из нескольких фиксчей.

#7
13:14, 23 мая 2012

Smrdis
ваша ссылка как раз и ведет на то что я использовал, там общее тело разбивается на выпуклые полигоны и создается массив фигур, такой алгоритм дает меньшее количество составных тел чем триангуляция, соответственно работает быстрее для риалтайма.

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

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