如何判断一个点或线在一个封闭的多边形区域中
如何判断一个点或线在一个封闭的多边形区域中
多边形区域(各个点有数字)
多边形区域中间一个点,如何用算法证明他在该区域中.
(另外一点证明如何在一条线上)
算法???
[解决办法]
如何判断一个点或线在一个封闭的多边形区域中,就是判断该点与所有顶点之间的连线是否与该多边形的边线偶数次相交[解方程,与顶点相交算2次]。
那么第一个问题就变成了如何判断边线了。
另外一点证明如何在一条线上,就是作一个线方程,然后代入该点,看是否成立并且该点的坐标落在两个顶点之间。
[解决办法]
边线的判断算法:从一个顶点出发,遍历所有顶点,连接线不相交为判断条件,最后要回到原点,即得到边线集合。
[解决办法]
判断边线要求一个顶点有且仅有两条线。
与顶点相交的情况似乎很复杂,前面所说的不一定正确,俺再想想。
[解决办法]
不用边线
内点连各顶点 循环到原顶点 角度变化为2pi 每次角度变化[-pi,pi] 超过就换顺序遍历
角度变化可以用arccos( <a,b> /|a||b| )
外点就小于2pi
点在边上也是=2pi