我们都知道如何检查if a 2D point is inside a 2D polygon但是如何确切地检查一个点是否在由线,弧,椭圆弧和样条线构成的复杂轮廓内?我的意思是不使用偏差容差将其转换为2D多边形。
你知道这个问题的任何有效方法吗?
感谢。
答案 0 :(得分:3)
绕线/交叉测试不仅适用于多边形。您只需要能够将轮廓与特定线相交(并且在绕组编号的情况下,以评估该点处轮廓的切线)。你还需要对数值精度有点小心,并记住双根算作2个交点。
对于样条线,虽然有线/样条交叉方法,但是对多边形进行离散化(并且记住只需要通过线的多边形的小部分)可能是最简单的方法。
答案 1 :(得分:0)
我不确定您使用的数据类型,但如果您能以某种方式对图像处理进行类比... Ray Casting Algorithm可以帮助您找到答案。
point in polygon问题可以在任何类型的复杂结构中实现,通常效果很好。检查此链接是否有伪代码:Ray Casting。
但是,如果您没有任何明确定义的方法来查找复杂轮廓中的交点,则无法使用。
您可以尝试打破寻找交叉路口的子问题: