![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
2FED |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.4.2008 Репутация: нет Всего: нет |
Типовая задача повышенной сложности:
На плоскости координатами своих упорядоченных вершин заданы произвольный многоугольник без самопересечения и точка а, находящаяся вне многоугольника. Определить число вершин, видимых из точки а. |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
по-простому можно так:
рассматриваем каждый отрезок из a в вершину, смотрим, не пересекается ли он с какой-нибудь стороной многоугольника пересекается - точка скрыта, не пересекается - видна сложность N^2 наверное, можно оптимизировать -------------------- qqq |
|||
|
||||
2FED |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.4.2008 Репутация: нет Всего: нет |
А как задать многоугольник без самопересечения?
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
ну например, как последовательность вершин
-------------------- qqq |
|||
|
||||
2FED |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.4.2008 Репутация: нет Всего: нет |
вот пока часть моей программы:
В цикле я генерирурую вершины. А как сделать, чтобы многоугольник получался без самопересечения? |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
хм... это уже другая задача
есть очень простой способ (хотя не знаю, насколько быстрый) 1. генерируем произвольную последовательность точек 2. ищем самопересечения 3. если нашли - всё повторяем сначала по идее, рано или поздно закончим красотой и скоростью такой способ, по-моему, не блещет, зато куда уж проще ![]() -------------------- qqq |
|||
|
||||
2FED |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 29.4.2008 Репутация: нет Всего: нет |
А как найти эти самопересечения?
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 24 Всего: 110 |
ну поперебирать все пары отрезков и проверить, не пересекаются ли они
(по определению пересечения отрезков стоит поискать тему - уже была) -------------------- qqq |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |