我想创建一个函数来检查一个点是否在菱形范围内,
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;
}
我最终得到一个矩形范围如何使这个范围成为一个菱形? ,其中position是中心,height = 120 width = 200
答案 0 :(得分:0)
菱形坐标是A,B,C,D
,我们需要检查点是P.
在
之间找到角度pa,pb - angle1
pb,pc - angle2
pc,pd - angle3
pd,pa - angle4
现在,如果所有角度的总和为360或-360,则P在ABCD内 否则就在外面。
角度你可以找到使用斜率截距形式。
即。 m =(y2-y1)/(x2-x1)
找到斜坡后,例如 对于pa线段斜率是m1 对于pb线段斜率是m2 那么角度可以通过tan(角度)=(m1-m2)/(1 + m1 * m2)来计算;
OR
您可以使用此链接
http://en.wikipedia.org/wiki/Point_in_polygon