3 ms·
In my experience, dual quaternions have little to no practical interest unless you need to blend rigid transformations, in which case they provide a cheap proje
by chombier 7y ago
In my experience, dual quaternions have little to no practical interest unless you need to blend rigid transformations, in which case they provide a cheap projection operator similar to quaternion normalization. (See that SIGGRAPH paper by Kavan on dual quaternion skinning)
On the theoretical side however, it is quite magic to see how rigid transformations arise from the unit quaternion tangent bundle.
- layoutIfNeeded 7y agoYou seem to be knowledgeable on the subject. Could you point me to material which gives insight on why dual quaternions work the way they do? I know that unit complex numbers can represent 2d rotations, dual complex numbers can represent 2d rigid transformations, and similarly unit quaternions can represent 3d rotations and dual quaternions can represent 3d rigid transformations... I can derive their properties algebraically and indeed they work the way they do. Still I want to see the "big picture".
- tzm 7y agoThis might be helpful http://www.chinedufn.com/dual-quaternion-shader-explained/ http://www.chinedufn.com/dual-quaternion-shader-explained/
- layoutIfNeeded 7y agoThanks, but I know how to work with dual quaternions. I’m looking for more of a higher level mathematical approach, which would explain why dual quaternions (or dual complex numbers in 2d) are capable of describing Euclidean rigid motions.
- adamnemecek 7y agoThis package was useful for visualizing them https://github.com/neka-nat/dq3d/ https://github.com/neka-nat/dq3d/ Essentially, dual quaternions represent screws (or rotation and translation at once). Why are they different from matrices? They are interpolable. This is a big deal. They are super useful for thinking about 3D developing over time. A skeleton can be represented as a collection of dqs. Your bones are translations and your joins are rotations.
- chombier 7y agoHere is a tentative explanation: Dual numbers introduce a constant `eps` whose purpose is to cancel out anything second-order and more. A dual number a + eps * b can be thought of as encoding a tangent vector at position a, with velocity b. Everything plays nicely so that one can extend regular functions to dual numbers using derivatives: f(a + eps * b) = f(a) + eps * df(a).b (try it out on product, inverses and so on to see how it works) The same idea can be applied to rotation matrices to get dual rotation matrices R + eps * dR, where dR is the derivative of a rotation matrix at R. As such, dR is a matrix that can be decomposed using the spatial velocity or the body-fixed velocity, which are both 3-vectors. Now when you compose rotations R1, R2 with spatial angular velocities w1, w2, the spatial angular velocity of the composition is w1 + R1w2, which is the translation you get when composing rigid transformations. In other words, if we encode a rigid transformation (R, t) as a tangent vector R + eps * dR where dR has spatial velocity t, then we can compose the encoded rigid transformations by multiplying dual rotation matrices. Dual unit quaternions are simply the implementation of this idea using unit quaternions instead of rotations, but the principle remains the same. In the end it all boils down to how the Euclidean group somehow arises from the tangent bundle of the rotation group (both 2d or 3d). It still looks kind of magic to me, but maybe the construction above always gives the semi-direct product of the Lie group by its Lie algebra.
- chombier 7y agoApparently this construction always provides the (outer) semi-direct product of the Lie group by its Lie algebra with respect to the group adjoint. This also means we should get another one considering body-fixed velocities instead, which I suspect will be some form of outer semi-direct product with respect to the coadjoint representation of the group.