transform inverse()函数解析

transform inverse() const

{

const Quaternion rotation = rotation_.conjugate();

const Vector translation = -(rotation * translation_);

return transform(translation, rotation);

}

这段代码定义了一个inverse()成员函数,用于计算一个变换(transform)的逆。这个变换包含旋转(rotation)和平移(translation)两部分。

让我们逐行解析这段代码:

  1. const Quaternion rotation = rotation_.conjugate();

这行代码计算了rotation_的共轭。在四元数(Quaternion)中,共轭是将四元数的虚部取反而实部保持不变。对于表示旋转的四元数,其共轭代表了反向的旋转。
2. const Vector translation = -(rotation * translation_);

这行代码首先计算rotation_translation_的乘积,然后将结果取反。这是因为在原变换中,translation_是在rotation_之后应用的。所以,为了得到逆变换,我们需要首先应用反向的旋转(即rotation),然后再应用相反的平移。
3. return transform(translation, rotation);

最后,使用上面计算得到的translationrotation创建一个新的变换并返回。

总之,inverse()函数计算了一个变换的逆,使得当你首先应用原变换然后再应用其逆变换时,结

果是一个没有变化的恒等变换。这在图形学、机器人学和物理模拟等领域中是非常有用的,因为有时你需要“撤销”一个变换或找到一个变换的反向操作。

rotation_与translation_的乘积换位置是不可以的

在变换矩阵或者仿射变换中,旋转和平移的操作通常不是交换的。这意味着先应用旋转再应用平移与先应用平移再应用旋转通常会得到不同的结果。

在数学和计算机图形学中,变换通常是以特定的顺序进行的,特别是当涉及到3D变换时。例如,在3D图形中,通常先应用旋转,然后应用平移,以得到正确的变换效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#君#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值