如何判断一个点是否在多边形内

在此之前,先介绍一下有向面积

有向面积:顾名思义,既有大小又有方向

  • 如何判断一个点是否在多边形内

    如图,在平面直角坐标系中存在任意三角形ABC,如果A、B、C三点顺序呈顺时针,有向面积>0, 如果A、B、C三点顺序呈逆时针,有向面积<0,如果三点共线则有向面积=0

为何ABC三点为顺时针面积大于0,为逆时针面积小于0

从A、B、C三点做三条垂直辅助线与X轴相交x1,x2,x3三点,形成3个梯形【ABx2x1,BCx3x2,Cx3x1A】

使得三角形面积 :SABC= 梯形ABx2x1面积 + 梯形BCx3x2面积 – 梯形 Cx3x1A 面积,如图

如何判断一个点是否在多边形内

图中三角形ABC三点为(2,2),(5,5),(7,3)

根据梯形面积相加减算三角形面积得 【SABx2x1 + SBCx3x2 – SCx3x1A 】

SABC = (x2 – x1) * (y2 + y1)/2 + (x3 – x2) * (y3 + y2)/2 – (x3 – x1) * (y3 + y1)/2

代入坐标点算得 SABC = 12

把AB两点调换

A(2,2),B(5,5),C(7,3) =>

A(5,5),B(2,2),C(7,3)

使得三角形呈逆向

将三点代入公式算得有向三角形面积 SABC = -12

如何判断一个点是否在多边形内

如此,根据有向三角形呈顺时针的面积大于0, 呈逆时针的面积小于0,可以判断一个点是否在多边形内

如何判断一个点是否在多边形内

任意多边形存在P1,P2点

P1在内部

P2在外面

在内部的P1与多边形相邻两点相连形成有向三角形,无论如何连接都呈顺时针

在外面的P2与多边形相邻两点相连形成有向三角形,无论如何链接都有1个或多个有向三角形呈逆向

故此我们可以利用有向面积判断一个点是否在多边形内,源码如下

如何判断一个点是否在多边形内

原创文章,作者:ourygey,如若转载,请注明出处:https://ourygey.com/2024/09/20/%e5%a6%82%e4%bd%95%e5%88%a4%e6%96%ad%e4%b8%80%e4%b8%aa%e7%82%b9%e6%98%af%e5%90%a6%e5%9c%a8%e5%a4%9a%e8%be%b9%e5%bd%a2%e5%86%85/

发表评论

您的电子邮箱地址不会被公开。