Hacker News new | past | comments | ask | show | jobs | submit login

You 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".

Here 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.

Apparently 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.

This package was useful for visualizing them 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.

Thanks, 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.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact