gpt4 book ai didi

闭合轮廓的绕数算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:44:16 24 4
gpt4 key购买 nike

假设我有一个由两个函数 x(p)y(p) 定义的轮廓形状,其中 p 是距离沿着形状的周边移动,在 01 之间归一化。例如,关于原点的单位圆将定义为 x(p) = sin(2 * pi * p)y(p) = cos(2 * pi * p)

确定一个点是否在该圆内的一个简单测试是计算该点与原点的距离,然后检测该距离是否小于或等于 1

但是,如果我的形状有多个交叉点,并且比圆形复杂得多怎么办?

存在一个point in polygon测试由一组点定义的离散形状。这个算法很容易找到,因为它被用在很多地方。但是,如果我不想使用形状的离散定义,我可以使用什么算法来确定绕组数,假设形状是在编译时定义的?

最佳答案

推广多边形测试中的点,您可以找到y(p)=0 的所有解决方案,使得x(p)>0 并使用它们的奇偶校验数。

在圆的情况下,cos(2πp)=0 for p=(k+1/2)π只有一个值[0,1) 范围内的 p 使 sin(2πp)>0

到目前为止,如果您可以解析地求解 y 方程,那就太好了。否则,您将需要一个可靠的数值求解器,能够找出所有的根。另一种方法是使曲线变平(将其绘制为多段线,确保最大偏差容差),然后应用多边形算法。

enter image description here


为了第二个例子,让我们用等式 r = 0.5 + cos Θ 和沿 X 的一些测试点来考虑 Pascal 的 limaçon。

enter image description here

y = (0.5 + cos Θ) sin Θ = 0

Θ=02π/3π4π/3。对应的横坐标为1.500.50

您可以得出结论,X 轴上的内部点在 0.51.5 之间(也在 0 处,以退化的方式) .

关于闭合轮廓的绕数算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33247472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com