Spherical linear interpolation for Quaternions 2(四元数的球面插值计算,另一种方式)

本文详细介绍了四元数的球面线性插值(Spherical Linear Interpolation, Slerp)计算过程,通过构建坐标系分解向量,解析2.7和2.8公式,求解垂直向量并归一化,最终得出向量的Slerp表达式。" 5850106,157384,C#读取doc、pdf、ppt文件并转换为txt,"['c#', 'office', 'pdf处理', '文件转换', 'powerpoint']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >





解析:


为什么要求 v⊥,其实,这里主要的思想就是为 v' 构建一个坐标系,这个坐标系的一个轴 为 v1, 另一个轴为 v⊥,简单理解就是x,y轴,那么,v'就可以分解成v1, v⊥轴上的分量,这样就可以求出v'了;


开始解释 2.7, 2.8 公式:




v0,v1都是单位向量。

为了求 v⊥,那么可以尝试求蓝色的向量。

1. 红色的向量 r = ( v0 点积 v1 ) * v1


2. 求蓝色的向量 b , 


常规方法:

sin(θ) = b / v0

b = v0 * sin(θ)

由于 v⊥ 与 v1 垂直,b 也与 v1 垂直,所以  v⊥ 与 b 是平行的,那么这里求出了b也就是求出了v⊥,只要将b执行归一化。


pbrt方法:

利用向量关系来求 b,

红色的向量 r + 蓝色的向量 b = v0

b = v0 - r

b = v0 -  ( v0 点积 v1 ) * v1   

这里就求出了 2.7 公式了。

当然这里还是要把b执行归一化。


3. 那么b得到了,也就是v'的坐标系已经构建完了,就可以直接求出 v'的在 v1,  v⊥ 上的分量,也就是 sin(θ')和cos(θ')

那么最后得到的就是:

 v' = cos(θ') * v0 + sin(θ') *  v⊥


这里也可以得到了2.8公式了。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值