Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2011, 17:29   #1
KoPPeW
 
Регистрация: 10.11.2011
Сообщений: 4
По умолчанию Нахождение углов произвольного многоугольника.

Суть задачи состоит в нахождение углов произвольного n-угольника, известны координаты вершин и порядок их соединения. Вообще задача сводиться к построению облака вокруг многоугольника, но для того чтобы это облако нормально выглядело необходимо вычислить углы фигуры вокруг которой оно строиться. Единственное решение которое я нашел это вычисление угла по скалярному произведению и определение внутренний он или внешний с помощью выбора произвольной точки в направлении сторон образующих данный угол. Задаю данный вопрос в данном разделе, так как не нашел раздела алгоритмы.
KoPPeW вне форума Ответить с цитированием
Старый 10.11.2011, 21:12   #2
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию

ну так и находи, в чем проблема то? или код писать лень?
вряд ли кто то захочет брать калькулятор и сидеть тыкать координаты и тп.
Kukurudza вне форума Ответить с цитированием
Старый 11.11.2011, 02:14   #3
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

Цитата:
Единственное решение которое я нашел
Ну дак и используйте его. Могу разве что дополнить, что достаточно будет сначала узнать, с какой стороны от первого отрезка находится фигура - она будет с той же самой стороны для всех отрезков (это дополнение к "внутренний он или внешний").
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 11.11.2011, 10:44   #4
KoPPeW
 
Регистрация: 10.11.2011
Сообщений: 4
По умолчанию

Проблема в том что алгоритм затратный, а должен работать на гигогерцовом процессоре (iPad), помимо того что там выполняется еще куча всяких вычислений. Мне не лень, просто хотелось бы быстрый алгоритм, а то ради одного облака тратить столько ресурсов.
KoPPeW вне форума Ответить с цитированием
Старый 11.11.2011, 12:24   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Затратный? Считаем векторы сторон (вычитания, 2n), считаем скалярные произведения (произведения, 2n), считаем длины и делим (делений, 2n).
Подсчёт длин можно ускорить за счёт точности (классический пример).
Abstraction вне форума Ответить с цитированием
Старый 11.11.2011, 15:02   #6
KoPPeW
 
Регистрация: 10.11.2011
Сообщений: 4
По умолчанию

Просто такой алгоритм не должен занимать как можно меньше ресурсов, так как отрисовка должна быть как можно быстрее, и процессорные ресурсы должны расходоваться как можно меньше, просто должен быть более простой и быстрый алгоритм, и хотелось бы чтобы у него было постоянное время счета.Кстати, можно как-то использовать для этого векторное произведение? Так как правило обхода по полигону известно.
KoPPeW вне форума Ответить с цитированием
Старый 11.11.2011, 15:20   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Кстати, можно как-то использовать для этого векторное произведение?
Ну, можно, но нафига? Или облако в пространстве? Но тогда нужен не многоугольник, а многогранник...
Цитата:
Просто такой алгоритм не должен занимать как можно меньше ресурсов, так как отрисовка должна быть как можно быстрее, и процессорные ресурсы должны расходоваться как можно меньше, просто должен быть более простой и быстрый алгоритм, и хотелось бы чтобы у него было постоянное время счета.
Поток сознания. O(1) не будет со всей очевидностью, потому как требуется сгенерировать на выходе набор из n переменных. С другой стороны: тесты производительности уже нашли проблему в этом месте? Или Вы только предполагаете, что ~8n умножений это слишком много? Если второе, то сделайте пока тупо квадратные облака по габаритному прямоугольнику и посмотрите на скорость.
Abstraction вне форума Ответить с цитированием
Старый 16.11.2011, 18:31   #8
KoPPeW
 
Регистрация: 10.11.2011
Сообщений: 4
По умолчанию

Нашел проблемму в использовании алгоритма определения принадлежности точки полигону построив облако. Если у нас полигон самопересекующейся то для углов находящихся в пересечении нужно брать результат проверки противоположный, для корректности хотелось бы определить углы этого пересечения. В атачменте можите увидеть что получилось в черновом варианте.
Изображения
Тип файла: jpg Screen shot 2011-11-16 at 5.26.22 PM.jpg (79.6 Кб, 118 просмотров)
KoPPeW вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нахождение расстояний и углов (начертательная геометрия) alex(21) Помощь студентам 9 28.02.2016 16:39
Рисование многоугольника в C# vandrouny C# (си шарп) 3 11.10.2010 23:30
поворот многоугольника в паскале Belii09878 Помощь студентам 3 25.06.2010 16:20
Нахождение обратной матрицы произвольного размера Widow Maker Помощь студентам 0 10.05.2009 12:09
Определение площади многоугольника Bayazet Помощь студентам 5 17.02.2009 12:48