#dual #quaternions #skinning #lie-theory

bin+lib dq

双四元数的完整实现

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2019年3月20日

#17 in #quaternion

BSD-3-Clause

19KB
433 代码行

dual_quaternion.rs

这是一个基于 nalgebra & dual_num 的双四元数实现。

三角函数实现与网上找到的略有不同(例如 维基百科)。四元数构成一个非交换代数,乘以 u' 应实际上是另一个顺序。例如,sin(u, u') = (sin(u), u'*cos(u)) 应实际上是 sin(u, u') = (sin(u), cos(u) * u')

https://github.com/potan/dual.rs/blob/master/src/lib.rs

https://blog.demofox.org/2014/12/30/dual-numbers-automatic-differentiation/

https://idontgetoutmuch.wordpress.com/2013/10/13/backpropogation-is-just-steepest-descent-with-automatic-differentiation-2/

https://github.com/hoechp/ultracomplexmath/blob/954c19190e/src/util/hypercomplex/Dual.java

注意,由于四元数是非交换的,三角函数在某些地方与 idontgetoutmuch 不一致。

待办事项

  • 三角函数略有误差

依赖项

~4MB
~70K SLoC