让曲线参数化定义
如何确定任意点是在这条曲线的内部还是外部?
此外,对于另一条曲线
我尝试使用集合和:
if 我认为该点在内部,但这对于某些点是不正确的。
让曲线参数化定义
如何确定任意点是在这条曲线的内部还是外部?
此外,对于另一条曲线
if 我认为该点在内部,但这对于某些点是不正确的。
有一个简单的测试来查看点是否包含在曲线内。画一条从到无穷远的射线,数一下它穿过曲线的次数;如果计数是奇数,则在封闭区域内;否则,它在外面。
要将其转化为实用算法,您可以首先构建曲线的多边形近似,并查找来自的光线相交的所有线段。该操作在多边形的段数上是线性的。获得所有候选线段后,您可以将它们用作牛顿搜索的基础,以找到更精确的射线与曲线的交点。
最后一步可能看起来过于谨慎,但如果该点比分段线性近似的精度更接近曲线,您很容易得到错误的答案。由于您有曲线的解析表达式,因此您还可以解析计算它的导数;如果光线真的很接近与曲线相切,那就麻烦了。
即使对于完全是多边形的曲线,奇偶规则也可能在有限精度算术中失败。计算几何很棘手,因为经常有奇怪的、不直观的边缘情况。
de Berg 和 Cheong的书是这方面的一个很好的参考。如果你想要一个 Python 库来进行实验,我对Shapely很幸运。