![]() |
принадлежит ли точка треугольнику
нужно узнать, принадлежит ли точка треугольнику.
написал код, он он работает не точно. т.е. функция не возвращает истину, когда точка рядом со стороной треугольника. Подскажите пожалуйста, в чём ошибка... Код:
aX = 120; aY = 100; |
А зачем ты переопределяешь hitTest?
|
т.е.?
|
интересно ты длины сторон вычисляешь
|
Цитата:
Могу подсказать, код писать долго придётся скажу сразу Сейчас вот, нарисовал треугольник и теоремку придумал :) "Если точка принадлежит треугольнику, то все лучи соединяющие точку и проходящие через вершины треугольника, пересекают только две прямые , которым принадлежат стороны треугольника, из трёх. Причём точка пересечения лежит в точке пересечения этих дву прямых. Короче вершина там и две прямые с лучом из точки пересекаются. Если луч ,кроме одной вершины треугольника, пересекает ещё хотя бы одну прямую, которой принадлежит любая сторона треугольника или другую вершину. Тогда точка лежит вне треугольника." Помоему через углы можно решить ещё. А ещё через стороны. Ведь с данными сторонами существует лишь один 1 треугольник :) З.Ы. - это применимо ТОЛЬКО к треугольнику |
Цитата:
|
Точка пренадлежит треугольнику, если она лежит слева от всех векторов составляющих этот треугольник (при соответствующем обходе его)
|
всем спасибо за помомощь! (:
Цитата:
подскажите, как узнать длину отрезка зная его точки? |
Цитата:
Код:
xd = x1-x2; |
спасибо! Теперь всё как часы работает...
в школе я двоечником был... |
Вообщем у тебя два выхода:
1 простой и не понятный см. пост №5. Я плохо пояснил. Суть в том что луч соединяющий точку и вершину не может пересекать ни одну из сторон треугольника. Исключая вершины. Для этого тебе нуно написать функцию для определения пересечения двух отрезков по координатам их ограничивающих точек (кстати не тривиальная задача) 2. Понятный, но сложный: Точка принадлежит выпуклой фигуре в том случае если каждая проекция точки на каждую сторону фигуры, лежит между вершинами принадлижащими этой стороне. Для этого нужно строить перпендикуляры. Кстати у INils'а без перпендикуляров то же не обойтись. |
Цитата:
|
а чем вас не устраивает метод scourge ' kangaroo?
|
Цитата:
эта формула не сработает если представить себе маленький треугольничек от которого оттащили мышку на километр |
наверное было бы логично предположить, что я переделал код...
Код:
aX = 120; aY = 100; |
Вложений: 1
Вроде все верно...
Только надо добавить проверку на порядок обхода, то есть точка в треугольник если у каждой линии false либо у всех true. |
Вложений: 1
Вот теперь все в полном виде.
|
Код:
//px,py- координаты точки |
вроде работает
|
| Часовой пояс GMT +4, время: 12:58. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.