-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Full 3D Helmert transformation #7
Comments
Approach 1: to avoid recomputation of scale, introduce a latent property Approach 2: jump directly to full 3D Helmert with seven properties: Approach 3: introduce the explicit scale property and decompose the scale away from |
Approach 4: Use quaternions to store rotations. A quaternion is more compact and still quite efficient, requiring only four properties for rotation computations without trigonometric functions. The 3D Helmert transformation could be represented as |
Approach 4.2: It seems possible to store the scale into the quaternion so that |
Finding 1: When restricting to rotations around z-axis, we can derive that |
After studying lots of quaternions, it seems common to denote scale with Therefore it seems practical to use 8-parameter In the context of zoomable UIs and infinite scaling, it feels extremely practical to separate scale and rotation in order to extend the range of numerical stability. These changes require new major version increment, affineplane v3. |
In affineplane 2.x the helm3 is quite limited in 3D and more like 2.3 dimensional variant of the transformation.
The limitation brings complications: in order to make each dimension to respect the scale uniformly, we need to know the scale in almost every operation we make. For x and y, the scale is factored in the a and b properties. For z however, we would need to compute the scale explicitly with square root and squares. Computationally this is not a big deal, adding one square root, two multiplications and one addition to the necessary functions. From architectural perspective it just feels very wrong to compute the scale over and over again.
For a reference on full 3D Helmert matrices, see: https://proj.org/operations/transformations/helmert.html
See also 3D affine coordinate transformations by Constantin-Octavian 2006.
See also Helmert transformation in Wikipedia.
The text was updated successfully, but these errors were encountered: