Помогите решить: "Дана точка A(x, y). Определить, принадлежит ли она прямоугольнику с...

0 голосов
177 просмотров

Помогите решить: "Дана точка A(x, y). Определить, принадлежит ли она прямоугольнику с вершинами в точках (x1, y1), (x2, y2), (x3, y3) , (x4, y4). "
Не могу сообразить с условием проверки. Язык не имеет значение, нужно условие проверки


Информатика (1.5k баллов) | 177 просмотров
0

Понял, спасибо

0

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

0

y=kx+b. получатся две пары параллельных прямых. Две с k1 и разными b, две с k2 и разными b. После этого посчитать уравнения двух прямых проходящих через точку А с k1 и k2 (найти два значения b, по сути смещения). затем сравнить что эти смещения попадают в диапазон смещений прямых, образующих грани.

Дан 1 ответ
0 голосов

См. рисунок

находим k1, k2, b1, b2, b3, b4 как уравнения прямых, проходящих через пары заданных точек (если расположение неизвестно, то придется либо сначала сортировать точки, либо посчитать ещё и диагонали, а потом их исключить, как не имеющих параллельной пары с таким же k)

ba1 и ba2 как уравнения, прямых, проходящих через заданную точку и имеющих известные k.

коэффициенты b - это вертикальные смещения, по сути, поэтому точка принадлежит прямоугольнику, если смещения прямых через неё проходящих, находятся внутри диапазона смещений (между соответствующими параллельными прямыми).
Условие должно выполняться для первой И для второй пары.

Если надо учитывать ещё и когда точка лежит прямо на стороне, то "<" и ">" в условиях заменить на "<=" и ">=" соответственно.

случай когда прямоугольник не "повернут" - простой и можно учесть отдельно (чтоб не получались бесконечные k)


image
(1.8k баллов)