Направление обхода точек многоугольника, перспектива помещения(вид сверху)
Добрый день! Есть массив точек, который образует непересекающийся многоугольник. Точки даны по порядку(добавляет пользователь), т.е. первая и вторая точки образуют сторону многоугольника. Это пол помещения. Нужно нарисовать вид сверху с перспективами стен:
http://img.sc/img/7fa38eb4c5559263f332b4b232e24f74.jpg Это пример для прямоугольника. Рабочий код, который определяет точки со сдвигом в зависимости от высоты помещения: Код AS3:
http://img.sc/img/ebef9450dc7f95a80b543e1e7ac92858.jpg НО! Проблема 1: точки должны добавляться против часовой стрелки, если по часовой добавляешь - стены рисуются внутрь помещения и получается каламбур: http://img.sc/img/28d8f5c383dce46adf9ee427918bdb32.jpg Проблема 2: если точки лежат на одной прямой - неправильно определяется биссектриса(на картинке ниже верхний отрезок многоугольника состоит из двух): http://img.sc/img/9de1a7977b2663faaad1d960503e3fd7.jpg Буду благодарен за любую помощь как решить эти проблемы. Код родился из этой темы. |
1. посчитать площадь полигона. если площадь положительное число - перевернуть полигон.
http://www.mathopenref.com/coordpolygonarea2.html https://github.com/deltaluca/nape/bl...omPoly.cx#L261 2. можно изначально не добавлять проблемные вершины. от них только лишний шум идет. |
1. можно соориентироваться по сумме всех внешних и внутренних углов
2. для соосных отрезков (не считается биссектриса в такой схеме)) просто брать перпендикуляр Код AS3:
|
nubideus, спасибо огромное)) Как просто оказалось. С первым пунктом проблема разрешилась.
Не добавлять вершины не вариант, т.к. заказчику нужна такая возможность(1 стену разбивать на две, чтобы раскладывать разные плитки) silin, благодарю, у Вас, как обычно, код-эталон:) Всё работает и всё логически понятно. Будет возможность - закину деньгу, а то по Вашим примерам учил as3 и забыл поблагодарить)) |
Часовой пояс GMT +4, время: 02:47. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.