Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Box2D] polygon decomposition (http://www.flasher.ru/forum/showthread.php?t=139065)

TERRORist 22.04.2010 15:39

polygon decomposition
 
Требуется разложить вогнутую фигуру без самопересечений на ряд невогнутых.

Нашел класс-"разложитель" здесь. Вроде б все ништяк, только после множества тестов оказалось что в каких то ситуациях он бажит - выдает полигон нулевого размера.

пример:

Код AS3:

var points:Array = [new Point(-750, 300),new Point(-350, 298),new Point(190, 312),new Point(171, 276),new Point(190, 260.5),new Point(187, 278.25),new Point(600, 300),new Point(1600, 300),new Point(1600, 710),new Point(-750, 710)]
 
//decomposing
 
var decomp:PolyDecompBayazit = new PolyDecompBayazit(points)
decomp.decompose(tracer)
 
function tracer(dec:PolyDecompBayazit)
{
  trace(dec.points.length, 'points', dec.points)
}

Результат:
Цитата:

5 points (x=1600, y=710),(x=-750, y=710),(x=-750, y=300),(x=-350, y=298),(x=190, y=312)
1 points (x=177.58554844219032, y=288.4778812588869)
1 points (x=177.58554844219032, y=288.4778812588869)
4 points (x=190, y=312),(x=177.58554844219032, y=288.4778812588869),(x=187, y=278.25),(x=600, y=300)
4 points (x=600, y=300),(x=1600, y=300),(x=1600, y=710),(x=190, y=312)
стоит сдвинуть верхнюю точку на пару пикселей - начинает разлагать нормально.

Есть ли у кого нить идеи что делать? может есть еще подобные скриптики?

Скриншот:

[IMG]http://img203.**************/img203/2943/bugcb.png[/IMG]


Часовой пояс GMT +4, время: 01:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.