slerp=spherical linear interpolation球面线性插值
来源:互联网 发布:dhcp服务的网络端口 编辑:程序博客网 时间:2024/05/29 11:02
四元数支持球形线性插值,也就是当点沿着球体表面移动也可以看做是从一个方位移到另一个方位。
http://en.wikipedia.org/wiki/Slerp
Slerp球面线性插值
在计算机图形学中,slerp是spherical linear interpolation(球面线性插值)的缩写。最初由Ken Shoemaker为了模拟3D旋转在四元数插值(quaternion interpolation)的基础上改进的方法。当给定末端且插值在0和1之间时,slerp指的是沿着单位半径大圆的常速运动。
Geometric Slerp(几何球面线性插值)
Slerp有一个独立于四元数(quaternion)和弧所在空间维数的几何方程。这个方程利用Glenn Davis提出的对称加权和方法,曲线上的任意一点必是两个终点的线性组合。假设P0和P1是圆弧的起点和终点,t代表参数且0≤ t ≤1,Ω是圆弧的圆心角,cosΩ=P0 • P1,即单位n维向量起点和终点的点积,几何方程可写做:
由于Slerp(P0, P1; t)=Slerp(P0, P1; 1- t),所以称该方程具有对称特性。Ω→0时,这个方程就退化为线性插值方程:
Slerp路径实际上就是平面线段在球面几何上的等效。一种特殊的情况就是两个终点向量垂直时,方程可写做:
当θ=tπ/2时就成了slerp方程。一般方程中的1/sinΩ是标准化因子,因为P1投影到⊥P0上的长度为sinΩ。
在一些特殊的例子中,Slerp允许更高效的运算。当圆弧用像素图表示时,更优先的方法是Bresenham的圆胡算法。在0,1/2,1处分别为P0,(P0+P1)/2,P1;如果Pk-1和Pk是两个连续的值,c是二者点积的2倍(所有步都是定值),则Pk+1=cPk-Pk-1。
Quaternion Slerp四元数球面线性插值
当Slerp用在单位四元数中时,四元数路径会映射到标准3D旋转路径,其效果就是绕着固定轴做匀速旋转。当初始点是同一四元数时,Slerp给出3D旋转李氏群S0(3)单参数子集和单位四元数泛覆盖群S^3的线段。Slerp给出它的四元数端点之间的最直接最短的路径,以及2^Ω角度的旋转。然而,因为覆盖是对称的(q和-q都可以是相同的旋转),旋转路径要么是最短的(<180°)要么是最长的(>180°),这可以用cosΩ(-90°≤Ω≤90°)来限定。Slerp也可以由四元数代数方程表述,都是用指数。
把单位四元数q写成规范化形式,cosΩ+vsinΩ,v是3维单位向量且v^2=-1(要写成欧拉方程),因此有e^vΩ=q,q^t=costΩ+vsintΩ。其中q=q1q0^(-1),以使q的实部为cosΩ。以下是四个等效的Slerp四元数表达式:
当终端确定时,Slerp(P0, P1; t)对t的导数为log(q1q0^(-1))乘四元数的自然对数是3D角速度向量一半时的函数值。最初的切向量被沿着曲线平行传输到每一个切线上,从而保证曲线是最短的。
在四元数Slerp曲线上的任何一点的切线空间中,指数映射的逆把曲线变换成了线段。没有通过一个点进行延伸的slerp曲线则不会。四元数slerp通过模仿类似被赛尔曲线de Casteljau 算法的仿射结构来构造平滑曲线。因为球面不是仿射空间所以就不能用仿射变换的特性,尽管这样构造的曲线可能不太满意。例如,de Casteljau算法用来分离一条仿射空间的曲线,这不能应用在球面上。
二值Slerp可以扩展到在许多单位四元数之间插值,但却以牺牲四元数算法运算时间为代价。
- slerp=spherical linear interpolation球面线性插值
- 球面线性插值(Spherical Linear Interpolation,Slerp)
- Spherical linear interpolation for Quaternions (四元数的球面插值计算)
- Spherical linear interpolation for Quaternions 2(四元数的球面插值计算,另一种方式)
- 【游戏课】技术片段之——球面线性插值(SLERP)
- Mathematics for 3D Game Programming and Computer Graphics - Spherical Linear Interpolation
- 我与插值萍水相逢:线性插值(Linear Interpolation)原理及使用
- bi-linear interpolation
- Linear,Bilinear,Trilinear Interpolation
- 球面坐标系与三角函数 Spherical Coordinates and Trigonometric Functions
- 图像处理之线性插值旋转算法(biline-interpolation rotate algorithm)
- 三十分钟理解:线性插值,双线性插值Bilinear Interpolation算法
- 三十分钟理解:线性插值,双线性插值Bilinear Interpolation算法
- 3.2 Piecewise Linear Interpolation(乱写的)
- 3.2 Piecewise Linear Interpolation(网站)
- zoj 3598 Spherical Triangle 一道很纯的公式题,经纬线计算球面内角和
- Interpolation
- 狄里克雷平滑(Dirichlet)、线性插值平滑(Linear Interpolated)、拉普拉斯平滑(Laplacian)
- sql server 2005 安装后连接不上的问题
- 关于IOS打包ipa
- java对象克隆(浅克隆和深克隆)
- android 4.2 SMS常见数据监听, 更新方式, ContentObserver, CursorLoader,AsyncQueryHandler
- 整理一下Go环境需要的东西(水帖~)
- slerp=spherical linear interpolation球面线性插值
- Android开发性能优化
- Linux 硬链接和软链接
- Eclipse取消自动切换透视图问题
- 基于JAVA的简易坦克大战(一)
- vim 查看函数列表
- java自学 抽象类和接口的应用
- iOS并发编程指南
- 走上征途