|
|
 |
Ответов
|
Jun 30 2010, 16:32
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 3-06-10
Пользователь №: 57 721

|
Если деление на треугольники прошло успешно (с невыпуклами четырехугольниками все сложнее), проверим лежит ли точка внутри одного из треугольников. Пусть треугольник ABC и точка M. проверяем лежит ли точка M в одной полуплоскости, скажем, с вершиной A относительно стороны ВС. Для этого находим точку пересечения O диагоналей четырехугольника МАВС (решаем систему из двух линейных уравнений). И сравниваем длины AO и АМ. Проверка успешна, если AO >= AM. Все тоже самое для точек B и C. Если все три проверки удачные, то точка внутри треугольника. Операций тут явно меньше, но надо проверить пару крайних случаев, в которых система линейных уравнений не решается Цитата(aaarrr @ Jun 30 2010, 20:18)  Ужас какой! Четырехугольник можно рассматривать как пересечение полуплоскостей, образованных его сторонами. То есть всего-то надо определить, принадлежит ли точка каждой из этих полуплоскостей. как же это быстро сделать?
|
|
|
|
|
Jun 30 2010, 16:50
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(mluk @ Jun 30 2010, 20:32)  как же это быстро сделать? Определить принадлежность точки полуплоскости просто. Для этого находим знак выражения: (x2 - x1) * (y - y1) - (y2 - y1) * (x - x1), где x1, y1 и x2, y2 - координаты точек прямой x, y - координаты определяемой точки Для выпуклого четырехугольника нужно выполнить четыре таких операции.
|
|
|
|
|
Jul 1 2010, 05:15
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 3-06-10
Пользователь №: 57 721

|
Цитата(aaarrr @ Jun 30 2010, 20:50)  Определить принадлежность точки полуплоскости просто. Для этого находим знак выражения: (x2 - x1) * (y - y1) - (y2 - y1) * (x - x1), где x1, y1 и x2, y2 - координаты точек прямой x, y - координаты определяемой точки
Для выпуклого четырехугольника нужно выполнить четыре таких операции. И какой же знак должен быть, плюс или минус??? Ясно, что по разные стороны от прямой это выражение принимает разные по знаку значения, а для того чтобы определить какие, нужно крепко подумать. Заметьте, что если вы поменяете местами x1,y1 и x2,y2 знак изменится.
Сообщение отредактировал mluk - Jul 1 2010, 05:22
|
|
|
|
|
Jul 1 2010, 05:28
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 3-06-10
Пользователь №: 57 721

|
Здесь надо знак выбирать такой же как при подстановке в выражение оставшейся из двух вершин четырехугольника. И это работает только для выпуклах четырехугольников.
|
|
|
|
Сообщений в этой теме
gsm_starter Обьект внутри четырех угольника Jun 30 2010, 15:35 aaarrr Ужас какой! Четырехугольник можно рассматриват... Jun 30 2010, 16:18    MrYuran Цитата(mluk @ Jul 1 2010, 09:28) И это ра... Jul 1 2010, 06:28     ig_z Пару месяцев назад на собеседовании в одну модную ... Jul 1 2010, 08:15      fontp QUOTE (ig_z @ Jul 1 2010, 12:15) Я когда ... Jul 1 2010, 08:44       Tanya Цитата(fontp @ Jul 1 2010, 12:44) Именно ... Jul 1 2010, 08:57        fontp QUOTE (Tanya @ Jul 1 2010, 12:57) Все это... Jul 1 2010, 09:04         Tanya Цитата(fontp @ Jul 1 2010, 13:04) Не совс... Jul 1 2010, 09:21 MrYuran У вас что там, графический ускоритель на АВР?
М... Jul 1 2010, 05:24 aaarrr Цитата(mluk @ Jul 1 2010, 09:15) Ясно, чт... Jul 1 2010, 05:43 gsm_starter Цитата(aaarrr @ Jul 1 2010, 08:43) Всего-... Jul 12 2010, 18:07  scifi Цитата(gsm_starter @ Jul 12 2010, 22:07) ... Jul 12 2010, 19:44 Oldring Цитата(gsm_starter @ Jun 30 2010, 19:35) ... Jul 1 2010, 09:31 gsm_starter Нет, впуклые исключены. Jul 13 2010, 07:27 Oldring Цитата(gsm_starter @ Jul 13 2010, 11:27) ... Jul 13 2010, 07:38  mluk Проще сравнивать знак варажеия проверяемой точки с... Jul 13 2010, 03:02 scifi Цитата(gsm_starter @ Jul 13 2010, 11:27) ... Jul 13 2010, 05:19 mluk Цитата(scifi @ Jul 13 2010, 09:19) Тогда ... Jul 13 2010, 05:34 Muscat А можно я влезу тут и спрошу?
Почему нельзя опреде... Jul 13 2010, 05:44 mluk Цитата(Muscat @ Jul 13 2010, 09:44) А мож... Jul 13 2010, 05:54
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|