好的,我一直在阅读有关此内容的论文,但其中没有照片。车道Riesenfeld算法提供了一种使用B样条转换细分点集的方法。

问题很简单?如果您可以给我提供一组图片,最好的解释是数学,而不是最好的解释。

第一步(即复制原始顶点)似乎很清楚,但是我不完全了解中点平均的工作原理。

目前,我的理解非常非常差:

从以下4点开始



我们复制每个点(用灰色区域表示)



我们将新集合中的所有奇数点都移到连接2个连续点的线的中间要点:



我现在该怎么办?从这里开始我完全迷路了

#1 楼

Lane-Riesenfeld算法细分了B样条曲线的控制多边形,以创建具有相同极限样条曲线的新控制多边形。它由两个步骤组成:首先,将所有控制点$ P_i $复制到$ P ^ \ prime_ {2i} $和$ P ^ \ prime_ {2i + 1} $。然后,将每个点移到与下一个点之间的中点,因此$ P ^ \ prime_i \ rightarrow \ frac {1} {2} P ^ \ prime_i + \ frac {1} {2} P ^ \ prime_ {i +1} $。这些步骤在图中进行了说明:



左侧是初始控制多边形。在中间,我复制了顶点。在右侧,顶点已移动到下一个顶点的一半。请注意,只有一半的顶点在移动的第一步中移动:这是因为$ P ^ \ prime_ {2i} = P ^ \ prime_ {2i + 1},$但是$ P ^ \ prime_ {2i + 1} \ neq P ^ \ prime_ {2i + 2}。$这八个顶点是由最初四个顶点定义的线性B样条的精炼控制多边形。

现在,我们可以执行第二步移动(无需重复):



在左侧,我们将每个顶点移到了它与邻居之间的中点;请注意,所有顶点这次都移动(因为没有一个顶点在同一位置)。在右侧,我们绘制了具有这八个顶点的多边形。这是由初始四个顶点定义的二次B样条的精炼控制多边形。您可能还会将其识别为与Chaikin角切割得到的多边形相同,这也使您得到了二次B样条。多边形,因此更接近二次B样条曲线:



以下是此过程的动画: >
如果相反,我们执行了第三步移动而没有重复步骤(即,一次重复然后进行三个连续运动),则将得到由初始四个顶点定义的三次B样条的精炼控制多边形:


以下过程的动画: $ C ^ k $ B样条曲线的精炼多边形。

编辑:添加了动画。

评论


$ \ begingroup $
尽管这是一个明确的答案,但我还是很希望看到这个过程充满生气。但是,嘿,我们是图形程序员,应该不会太难。明天试试。
$ \ endgroup $
– joojaa
17年7月7日在20:49

$ \ begingroup $
另外,您使用什么软件来绘制/生成此图?
$ \ endgroup $
– Makogan
17年11月8日在1:22

$ \ begingroup $
@Makogan,您可能想看一下这篇文章,以获取有关绘画的想法。尽管选择是高度个人化的选择。
$ \ endgroup $
– joojaa
17年11月8日在7:32

$ \ begingroup $
@Makogan我用开源的渐近线绘制了图表。
$ \ endgroup $
– gilgamec
17年9月9日在9:09

$ \ begingroup $
@joojaa我添加了二次和三次B样条曲线生成的动画。
$ \ endgroup $
– gilgamec
17年11月9日在12:37