Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Проверить, находится ли координата в квадрате/прямоугольнике

John Watson Ученик (88), закрыт 7 лет назад
Я знаю как определить находится ли координата в круге, но как проверить находится ли координата в квадрате, если известны все координаты 4-х точек, образующие квадрат?
Лучший ответ
Андрей Высший разум (459726) 7 лет назад
Если прямоугольник параллелен осям координат, то ответы выше верны. Иначе задача усложняется. Самые примитивные способы:

1. Подсчитать сумму площадей 4 треугольников, образованных точкой и смежными вершинами прямоугольника. Если она больше площади прямоугольника, точка вне прямоугольника.

2. Подсчитать сумму углов с вершиной в точке и лучами, проходящими через смежные вершины. Если она меньше 360 градусов, точка вне прямоугольника.

А можно и так:

Запишем уравнение прямой, проходящей через точки (x1, y1) и (x2, y2) в виде;
(x-x1)/(x2-x1) = (y-y1)/(y2-y1) =>
(x-x1)*(y2-y1) - (y-y1)*(x2-x1) = 0

Тогда знак функции q(x, y) = (x-x1)*(y2-y1) - (y-y1)*(x2-x1) будет зависеть от того, с какой стороны прямой лежит точка x. Но если точка внутри квадрата, то она лежит по разные стороны от параллельных сторон прямоугольника.

Если точки перечислены в порядке:
1 2
3 4
(диагонали 1-4 и 2-3, остальное не важно)
То получаем проверку:
(((x - x1) * (y2-y1) - (y - y1) * (x2 - x1)) * ((x - x3) * (y4-y3) - (y - y3) * (x4 - x3)) <= 0) and
(((x - x1) * (y3-y1) - (y - y1) * (x3 - x1)) * ((x - x2) * (y4-y2) - (y - y2) * (x4 - x2)) <= 0)
Остальные ответы
Imobilazer Искусственный Интеллект (222539) 7 лет назад
x между х-ами и y между y-ами одновременно
АндрейВысший разум (459726) 7 лет назад
Прямоугольник не обязательно параллелен осям координат.
Imobilazer Искусственный Интеллект (222539) Хм, не учёл
SAA Мыслитель (9713) 7 лет назад
X1<x<X2 && Y1<y<Y2
вот и всё условие.
Globe Просветленный (24839) 7 лет назад
стороны квадрата параллельны координатным осям?
если нет, то печаль - придется, например, посчитать сумму расстояний до противоположных сторон и, если они равны длине стороны квадрата, то всё ок.
Похожие вопросы