![]() |
|
|
![]()
|
|
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: нет Всего: 78 |
Добрый день всем. Существует проблема.
Есть Область квадрат (координаты и ширина с высотой известны). В этот прямоугольник вписан ромб. Так же есть точка в этом квадрате. Необходимо вычислить, находится ли точка в ромбе. Пролазил весь инет, и ничего стоящего не нашел. Есть какие-нибудь решения? -------------------- Ll 2 |
|||
|
||||
| Silent |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 3.10.2006 Репутация: 1 Всего: 9 |
Решение первое
составляем четыре уравнения прямых, описывающих ромб. точка должна лежать сами понимаете как - выше и ниже противоположных сторон. Решение второе ромб есть не что иное как многоугольник, есть куча алгоритмов определить принадлежность точки многоугольнику, тем более выпуклому. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 7 Всего: 183 |
Самое простое, если нет готового алгоритма "точка в полигоне" и надо писать самому - проверить, с какой стороны точка лежит от каждой ориентированной прямой, проходящей через стороны ромба. Если с одной - то точка внутри.
Записываешь уравнение прямой в обобщенной форме Ax+By+C=0, подставляешь координаты точки и вычисляешь значение. Знак этого значения и дает тебе ответ на вопрос "с какой стороны" - он должен быть одинаковым для всех сторон (для внутренней точки). Уравнение прямой, проходящей через 2 точки (вершины), надеюсь, составить сумеешь. Чтобы прямая была правильно ориентирована, вершины нужно брать в порядке обхода ромба (т.е. 0-1, 1-2, 2-3, 3-0). Добавлено через 3 минуты и 16 секунд Хотя... алгоритм Жордана, может и проще... поищи по форуму, я его как-то приводила, да и другие вроде тоже. Этот алгоритм годится для любых полигонов. -------------------- ... |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Ромб делится на два треугольника. Проверка, что точка лежит внутри треугольника, элементарна.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |