我需要通过出切线围绕一个点对三次贝塞尔样条曲线进行排序。我的第一次尝试是确定出切角并按此排序。对于具有四个点 的样条曲线p0, p1, p2, p3
,出切角为:
p0 != p1 ? angle(p0, p1) : p0 != p2 ? angle(p0, p2) : angle(p0, p3)
这处理退化的三次方,实际上是二次方甚至一条线。但是,该点可能有两条切线角度相同的输出样条曲线,但稍后在样条曲线上的控制点或终点位置不同,这会影响排序顺序。
是否有一个很好的封闭式算法,用于按出射角度对两个任意贝塞尔样条进行排序,以处理退化情况,并在切线相等时使用样条的其余部分来消除情况的歧义?我可以通过尝试t
值来做到这一点,直到我消除歧义,但似乎可能有一个封闭形式的算法。