|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.10.2013, 00:36 | #11 |
Форумчанин
Регистрация: 03.10.2013
Сообщений: 142
|
Этим все сказано (для меня).
Форма полигона - лю-ба-я. Накидал пробы ради эту задачку с условиями: 100 полигонов 10 точек в каждом точки внутри квадрата 10*10 проверка "есть пересечение последнего отрезка (посл.точка<->первая точка) с любым другим в этом же полигоне?" Итого: 60+ из 100 "Вы все еще стирает порошком? Тогда мы идем к Вам!" Последний раз редактировалось simples; 04.10.2013 в 19:34. |
04.10.2013, 17:44 | #12 | |
Пользователь
Регистрация: 26.05.2013
Сообщений: 13
|
http://ru.wikipedia.org/wiki/%D0%9C%...BD%D0%B8%D0%BA
определение многоугольника - замкнутая ломаная(в общем случае) поэтому Цитата:
В моем же случае, надо поменять координаты так, чтобы многоугольник стал простым(т.е без самопересечений) |
|
04.10.2013, 19:36 | #13 | |
Форумчанин
Регистрация: 03.10.2013
Сообщений: 142
|
Исправил "<>" на "<->".
В моем случае это "отрезок между первой и последней точками". Цитата:
Соб-но это меня в Вашем вопросе и интересует. Алгоритм накидайте хотя бы тезисно. Последний раз редактировалось simples; 04.10.2013 в 19:42. |
|
04.10.2013, 20:25 | #14 | ||
Пользователь
Регистрация: 26.05.2013
Сообщений: 13
|
simples
Цитата:
-мы, начиная с 3-го ребра проходим все ребра многоугольника, сравнивая их с предыдущими ребрами, за исключением последнего предшествующего ребра(т.к их пересечение, кроме как в вершине, в принципе невозможно). -для проверки пересечения я равняю координату у и из получившегося выражения выражаю х, если этот х принадлежит ребру, то точка пересечения есть, для того чтобы исключить пересечение в вершинах используется строгое неравенство - если точка пересечения найдена, то координаты второй вершины ребра которое мы проверяем меняются, и цикл проверки пересечения с другими ребрами начинается сначала. - если же последнее ребро многоугольника имеет пересечение, то, вместе с последней меняем так же первую вершину(которая собственно одна и та же) и начинаю весь алгоритм проверки сначала Цитата:
Последний раз редактировалось Izotic; 04.10.2013 в 22:25. |
||
04.10.2013, 23:18 | #15 | |
Форумчанин
Регистрация: 03.10.2013
Сообщений: 142
|
Цитата:
Последний отрезок мн-ка (который Вас так смущает) - строится из последней и первой точки. Возьмите листик и ручку, поставьте 3(три) точки. Соедините из отрезками. Получился мн-ник? Отлично. Вам не понадобилась для этого 4я точка? нет? Ну значит Вы меня поняли. меняются на что? Последний раз редактировалось simples; 04.10.2013 в 23:21. |
|
04.10.2013, 23:47 | #16 | ||
Пользователь
Регистрация: 26.05.2013
Сообщений: 13
|
Цитата:
Цитата:
и все таки вот в этом фрагменте кода что то не срабатывает, и пересечения остаются.( Код:
Последний раз редактировалось Stilet; 05.10.2013 в 11:38. |
||
05.10.2013, 06:18 | #17 | |
Форумчанин
Регистрация: 03.10.2013
Сообщений: 142
|
Цитата:
Советую вырезать этот кусок в отд.функцию и протестировать ее известным Вам набором данных. О результатах - телеграфируйте. |
|
05.10.2013, 09:42 | #18 | |
Пользователь
Регистрация: 26.05.2013
Сообщений: 13
|
Цитата:
и разве от этого что то поменяется? проверил(пока не вынося в отдельную функцию) на известной фигуре с пересечением, пересечение есть, но координаты вершин сдвинуты, весьма рандомно сейчас попробовал вынести одну из вершин из начала координат, пересечения осталось,точнее как, в зависимости от направления обхода, с права на лево пересечение ликвидируются,а в обратном порядке нет , хотя проверка выполняется, и координаты действительно изменяются Последний раз редактировалось Stilet; 05.10.2013 в 11:41. |
|
05.10.2013, 22:23 | #19 | |
Форумчанин
Регистрация: 03.10.2013
Сообщений: 142
|
А что делать - так учат.
Да, можно будет проверить (тестами) - КОНКРЕТНО.ЭТОТ.КУСОК. Цитата:
Я все же настаиваю на отладке проверки до 100% результата. А то в случае неправ.проверки - Вы просто делаете НЕ нужные телодвижения приводящие хз к чему вообще. |
|
06.10.2013, 04:06 | #20 | |
Пользователь
Регистрация: 26.05.2013
Сообщений: 13
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
правильный многоугольник | fist001 | C++ Builder | 7 | 10.06.2011 21:50 |
Многоугольник и круг | Никита_96 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 09.02.2011 21:10 |
Многоугольник без самопересечения С++ | kochet-kov | Помощь студентам | 0 | 23.12.2010 01:18 |
Динамический многоугольник. | alex_8 | Общие вопросы C/C++ | 1 | 01.12.2010 17:55 |
Звёздчатый многоугольник | Alex_FF | Помощь студентам | 0 | 30.12.2009 01:24 |