如何使用Python检查二维点是否位于二维闭合贝塞尔曲线的内部或外部?
你好, 在我的2d软件中,我有两个可用的输入: XY点的数组如何使用Python检查二维点是否位于二维闭合贝塞尔曲线的内部或外部?,python,math,bezier,curve,points,Python,Math,Bezier,Curve,Points,你好, 在我的2d软件中,我有两个可用的输入: XY点的数组 [(x,y),(1,1),(2,2),(2,3),(-1,3),...] 和另一个表示闭合二维贝塞尔曲线控制柄的矩阵 [((x,y),(x,y),(x,y)), ((-1,-1),(1,1),(1,2)), ((1,1),(2,2),(2,3)), ...] 如何使用python检查点是否位于给定曲线的内部或外部?我不知道贝塞尔曲线的理论是怎样的,所以如果你的第二个点列表是一种表示贝塞尔曲线的压缩方法,首先尝试以你想要的精度
[(x,y),(1,1),(2,2),(2,3),(-1,3),...]
和另一个表示闭合二维贝塞尔曲线控制柄的矩阵
[((x,y),(x,y),(x,y)),
((-1,-1),(1,1),(1,2)),
((1,1),(2,2),(2,3)),
...]
如何使用python检查点是否位于给定曲线的内部或外部?我不知道贝塞尔曲线的理论是怎样的,所以如果你的第二个点列表是一种表示贝塞尔曲线的压缩方法,首先尝试以你想要的精度对曲线的一些点进行采样。 因此,曲线上有n个点,然后可以应用一个简单的PIP算法:
如果您想知道如何以编程方式进行,我可以稍后详细解释。我不能在这里编写代码,因为我需要正确理解整个程序,但是我可以提供两种方法来实现这一点
- 光线投射算法:该算法的简写:放置一条光线,光线从一个点开始,穿过整个多边形到达另一个点。有些直线位于多边形内部,有些位于多边形外部。然后检查特定点所属的线,如下所示:
- 绕组编号算法:。因此,如果卷绕编号非零,则该点位于多边形内
不,我只是有一些贝塞尔手柄作为输入。对不起,我错过了第二个矩阵。这是可能的,但首先我必须阅读如何将曲线定义为参数方程也许您可以提供样本(但完整)输入数据、一些“测试点”和预期结果?这将使其他人(至少是我)在给出答案时更愿意提供帮助,也更自信。我刚刚意识到,在过去的某个时候,实际上有一个专门的章节是关于确定形状的点,显然在过去7年的某个时候,它消失了。我目前正在完全重做底漆的技术堆栈,所以我想我必须重新介绍该部分。