【发布时间】:2015-10-20 21:52:57
【问题描述】:
假设我有一个由x(p) 和y(p) 两个函数定义的轮廓形状,其中p 是沿形状周边行进的距离,在0 和1 之间进行归一化。例如,关于原点的单位圆将定义为x(p) = sin(2 * pi * p) 和y(p) = cos(2 * pi * p)。
确定一个点是否在该圆内的简单测试是计算该点与原点的距离,然后检测该距离是否小于或等于1。
但是如果我的形状有多个交叉点,并且比圆形复杂得多,该怎么办?
对于由一组点定义的离散形状存在point in polygon 测试。该算法很容易找到,因为它在很多地方都使用过。但是,如果我不想使用形状的离散定义,我可以使用什么算法来确定绕组数,假设形状是在编译时定义的?
【问题讨论】:
-
维基百科有帮助吗? en.wikipedia.org/wiki/Winding_number
-
@MarkRansom 我看到了,我希望它可以用 CS 术语而不是应用数学术语来解释。有离散算法的定义,但就微分几何而言,您在实现它时有点靠自己。
-
我看到的唯一代码是针对离散段的,你的代码是一种特殊情况。
标签: algorithm computational-geometry hlsl