- 2017-12-06 07:55:56
问题: 如何将一条曲线沿另一条曲线进行扭曲或变形?
是很早以前看到的一个问题了, 我也曾经遇到过相关的具体问题, 不过当时采用简单的方法解决了. 最近重新思考了一下这个问题, 得到了比较一般的解决方法.
举个例子来说吧, 对于圆柱螺旋线, 如果其轴心线变为正弦曲线, 那螺旋线如何变化? 如果我们将圆柱螺旋线视为有弹性的螺线管, 那就相当于我们要将它套到正弦形状的柱子上, 只要螺旋管的弹性和柱子的形状匹配, 那螺旋管是可以套在上面的. 再推广一下就是任意的变形了. 这种问题在三维建模或者动画设计中应用较多, 也有一些相关的理论.
一般的解决方法是以弧长对参考曲线进行参数化, 然后借助旋转和平移将原曲线上的点变换到参考曲线标架上. 旋转时最好利用四元数方法, 因为更方便. 下面就是实现的一个例子:
这种方法可以推广到更复杂的情况, 如化学中的纳米管扭曲等.