3 ms·
Derivatives and Logarithms of 3D Transforms
- moktonar 2y agoWhat if you spherically interpolate the basis vectors and linearly interpolate the translation vector?
- xeonmc 2y agoessentially you decompose the transformation into (axial translation) + (screw rotation) + (oriented orthogonal stretch) and each of them are just straightforward interpolation: axial is linear, screw is angular, and stretch is exponential.
- nosferalatu123 2y ago(author here) Be careful because (ignoring scale for to keep things simple) a transformation T can be decomposed into a translation and rotation, such that T=Rotation * Translation, but that translation is not along the axis of rotation. You probably want to instead interpolate with a screw motion, which is a rotation about an axis along with a translation along that axis (a helical curve; a curve along the outside of a cylinder). The screw motion is what you get when you interpolate with exp(log(T)*t).
- xeonmc 2y agoYes, hence I wrote (axial translation)+(screw rotation) instead of just (translation)+(rotation).
- nosferalatu123 2y agoYep!
- lenkite 2y agoJust amazed that applets are still being used and are still working. Many folks here are younger than Java Applet technology.
- nextts 2y agoAn applet? I thought they didn't work? Or is this Java on WASM?
- billfruit 2y agoIs that an applet? What type of libraries could have been used to build that type of interactive 3D graphics
- nosferalatu123 2y agoIt's using the three.js library and a bit of javascript I wrote.
- MITSardine 2y agoCool article. Regarding section "The exponential map and logarithm map", if you're interested in computing the matrix exponential, there is the classic: C Moler, C Van Loan, "Nineteen dubious ways to compute the exponential of a matrix, twenty-five years later". Also, using the series expansion is not necessarily unrobust as long as you don't stop at a fixed number of iterations but instead go on as long as terms have a norm greater than some tolerance. Scaling and squaring can be used to remain always in a given range of norms (less than 1, say). Regarding Pitfall #3, the interpolation scheme exp(tlog(A) + (1-t)log(B)) is shortest path in a sense, just not with the usual matrix norms. See V Arsigny et al., "Log‐Euclidean metrics for fast and simple calculus on diffusion tensors". I can't help but find it more elegant than exp(log(BA^{-1})t)A which could just as well have been exp(log(A^{-1}B)t)A, or even Aexp(log(A^{-1}B)t), right? It also fixes the "no more than two transforms", as you can put any convex combination in exp(sum_i x_i log(A_i)).
- ndriscoll 2y agoIn addition to the differential equation, you can also tweak the definition of the exponential function as a limit used with e.g. compound interest: exp(tA) = lim n->infinity (I+tA/n)^n = lim n->infinity (I+tA/n)...(I+tA/n) (n times) So you can interpret A (or log T) as a direction to move from the identity, and exp does infinite iterated compositions of an infinitesimal shift away from the identity in that direction.
- imtringued 2y agoSee also: Screw Theory: https://en.wikipedia.org/wiki/Screw_theory https://en.wikipedia.org/wiki/Screw_theory