0

我想做一个函数来检查一个点是否在菱形范围内,

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

4

1 回答 1

0

菱形坐标是 A,B,C,D

点是我们需要检查的P。

找到之间的角度

pa,pb - 角度1

pb,pc - 角度2

个人电脑,PD - 角度3

pd,pa - 角度4

现在,如果所有角度的总和是 360 或 -360,那么 P 在 ABCD 之内,否则它在外面。

角度您可以使用斜率截距形式找到。

即 m = (y2-y1)/(x2-x1)

在你找到斜率之后,例如 pa 线段斜率是 m1,而 pb 线段斜率是 m2,那么可以通过 tan(angle) = (m1-m2)/(1+m1*m2) 计算角度;

或者

你可以使用这个链接

http://en.wikipedia.org/wiki/Point_in_polygon
于 2013-05-01T08:29:56.193 回答