双圆弧插值算法(一)
Biarc Interpolation
在游戏开发中经常出现两点间的插值问题。大多数情况下,只需要一个简单的线性插值。线性插值很好,因为不会真的弄错。只有一条可能的线连接这些点。跟着走。当需要曲线插值时,求解会变得复杂得多。有无限数量的曲线可供选择,并有许多方法来生成:NURBS、Catmull Rom、Bézier、Hermite等。
想讨论一种生成圆形圆弧的不太常见的方法。
为什么想要一个圆插值?一个原因可能是看起来很悦目,但也有一些实际用途。如果正在制作一个放置道路的水平编辑工具(或使用程序性道路制作游戏),可能希望转弯处与真实世界中的道路相似。第二个例子,也是经常遇到的一个例子,是在剑后产生轨迹。挥剑的动作通常非常快。当剑在攻击中弧线时,只能得到几个样本点。如果以慢动作播放动画,会发现剑尖的轨迹相当圆。通过在采样点之间生成圆弧,可以生成干净的轨迹。
这里有一个为间谍编程的剑迹的例子。整个旋转过程中可能只有五到六个样本,但能够创建一个平滑的顶点弧。Spyborgs算法与将要介绍的有点不同,但是产生了类似的结果(如果知道要查找什么,实际上会稍微差一点)。
那么,要如何创建这些曲线呢?解决方案在于一个称为biarc的几何学。
双圆弧
双圆弧是由两个圆