Диапазон ромба

Я хочу сделать функцию, чтобы проверить, находится ли точка в диапазоне ромба или нет,

Bool Conditional::InRange(Point P)
{
if( (P.x > Position.x-100) && (P.x < Position.x+100) &&
(P.y > Position.y-60)  && (P.y < Position.y+60))
return true;
else
return false;
}

Я получаю прямоугольный диапазон, как сделать этот диапазон ромбом ?? где положение — центр, а высота = 120 ширина = 200

0

Решение

Координаты ромба: A, B, C, D

и точка P, которую мы должны проверить.

Найти углы между

Па, пб — угол1

пб, пк — угол2

pc, pd — angle3

pd, pa — angle4

Теперь, если сумма всех углов равна 360 или -360, то P находится внутри ABCD
иначе это лежит снаружи.

Угол Вы можете найти, используя форму пересечения склона.

то есть m = (y2-y1) / (x2-x1)

После того как вы нашли склон, например
для па линейного отрезка наклон составляет м1
для отрезка отрезка линии pb — м2
тогда угол можно вычислить как tan (angle) = (m1-m2) / (1 + m1 * m2);

ИЛИ ЖЕ

Вы можете использовать эту ссылку

http://en.wikipedia.org/wiki/Point_in_polygon
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector