Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 9 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 16.05.2004
Откуда: МоскВа
Четырех угольник ABCD задан координатами своих вершин на плоскости
А(Ха,Уа) В(Хb,Уb), и т.д. Проверить, является ли он выпуклым. Даже приблизительно не представляю, как это можно сделать.



Партнер
 

Member
Статус: Не в сети
Регистрация: 04.02.2004
Откуда: Москва|СВАО
Новиков Евгений .
Цитата:
Есть несколько разных (но эквивалентных) определений выпуклого многоугольника. Приведем наиболее известные и часто встречающиеся из них. Многоугольник называют выпуклым, если выполнено одно из следующих условий:

а) он лежит по одну сторону от любой из своих сторон (т. е. продолжения сторон многоугольника не пересекают других его сторон);

б) он является пересечением (т. е. общей частью) нескольких полуплоскостей;

в) любой отрезок с концами в точках, принадлежащих многоугольнику, целиком ему принадлежит.

2. Фигуру называют выпуклой, если любой отрезок с концами в точках фигуры целиком принадлежит ей.

3. При решении некоторых задач этой главы используются понятия выпуклой оболочки и опорной прямой.



--------------------------------------------------------------------------------

_________________
Счастье - это когда тебя понимают.
Разыскиваю (куплю) оригинальный USB-kit для Chaintech 5AGM2 (подробности в Л.С.).


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 16.05.2004
Откуда: МоскВа
Peter_P
Спасибо, конечно но мне это не сильно помогло, как бы это перевести в С++? к тому же используя координаты


 

Member
Статус: Не в сети
Регистрация: 04.02.2004
Откуда: Москва|СВАО
Новиков Евгений
Берем две точки через которые проходит его сторона например А и В, определяем урние прямой на которой лежат эти точки
далее, определяем также прямую на которой лежат другие две вершины(ДС) определяем пересекаются ли эти прямые или нет - если нет то все отлично(стороны паралельны), если да проверяем попала ли точка пересечения на отрезок АВ - если да то АВСД не выпуклый. Так делаем для каждой из его сторон.

_________________
Счастье - это когда тебя понимают.
Разыскиваю (куплю) оригинальный USB-kit для Chaintech 5AGM2 (подробности в Л.С.).


Последний раз редактировалось Peter_P 13.10.2004 17:25, всего редактировалось 1 раз.

 

Member
Статус: Не в сети
Регистрация: 12.03.2003
Откуда: Израиль
Вот тогда подсказка:

Рассмотрим вариант решения по методу (а):
Цитата:
он лежит по одну сторону от любой из своих сторон


Пишем примерно такой код:
1. В цикле перебрать все стороны.
2. Для каждой стороны выполнить преобразование всех координат вершин многоугольника так, чтобы выбранная сторона была параллельна оси Х, выполнить смещение так, чтобы сторона совпала с осью Х.
3. Для преобразованных координат провести проверку, что все координаты У для всех точек имеют одинаковый знак (за исключением координат У для выбранной стороны - они будут равны нулю.
4. В случае, когда проверка не удалась, вывалиться с заявой, что многоугольник впуклый.
5. После перебора всех сторон выйти с сообщением, что многоугольник выпуклый.

Историческая справка:
Для поворота, для опорной точки допустимо использовать одну из точек исследуемой стороны.
Угол для поворота - арктангенс от ( У2 - У1 ) / ( Х2 - Х1 ), где (1) - точка, вокруг которой вращаем. ;)

_________________
Более мощный компьютер глючит быстрее и точнее.


 

Member
Статус: Не в сети
Регистрация: 25.01.2003
Откуда: UA
Еще мудрый алгоритм.
1. Разбить на 2 треугольника, (ABC-ACD) и найти сумму их площадей S1.
2. Разбить подругому (ABD-BDC) и найти их площади S2.
3. Если S1!=S2 - фигура вогнута.
Если нарисовать на бумажке все становится видно :)


 

Заблокирован
Заблокирован
Статус: Не в сети
Регистрация: 16.05.2004
Откуда: МоскВа
Проклятье не успел :weep: может на следующей неделе получится


 

Junior
Статус: Не в сети
Регистрация: 30.03.2003
KaYot полюбому S1=S2 даже если фигура выпукла


 

Member
Статус: Не в сети
Регистрация: 25.01.2003
Откуда: UA
PsychoF
В том и фишка. Если фигура невогнута то S1=S2. Иначе площади неравны.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 9 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan