HuntsvilleEngineers mark
HE Reference Shelf — huntsvilleengineers.com
The Reference Shelf · Geometry & Mechanics

Geometric transformations

The rules for moving, spinning, mirroring, and resizing geometry without lying about it — every CAD mirror, pattern, and scale command is one of these, and they compose by matrix multiplication.

Also known as: translation · reflection · scaling · rigid motions

The formula (the core equation(s), each with a one-line reading of what it says)

Translation:   p' = p + t

Reads: slide every point by the same offset vector t — shape, size, and orientation untouched.

Rotation (2D, about the origin, angle θ CCW):
p' = R·p,   R = [ cos θ   −sin θ ]
                [ sin θ    cos θ ]

Reads: every point pivots by θ about the origin; lengths and angles survive. Rotating (1, 0) by 30° gives (0.866, 0.500).

Reflection (2D, across a line through the origin at angle α):
M = [ cos 2α    sin 2α ]
    [ sin 2α   −cos 2α ]

Reads: fold the plane across the mirror line. Note the 2α — the matrix depends on twice the line's angle.

Scaling:   p' = S·p,   S = diag(sₓ, s_y, s_z)

Reads: stretch each axis by its own factor. Equal factors preserve shape (a similarity); unequal factors do not.

Homogeneous form (3D):   [p']   [ R   t ] [p]
                         [1 ] = [ 0   1 ] [1]

Reads: pad the point with a 1 and a single 4×4 matrix carries rotation and translation together — composition becomes plain matrix multiplication, applied right-to-left.

Isometry (distance-preservation) test:   |T(p) − T(q)| = |p − q|  for all p, q

Reads: a transformation is an isometry exactly when no distance between any two points changes. Translations, rotations, and reflections pass; scaling fails. The isometries then split by determinant sign: proper rigid motions (det +1 — translations and rotations, achievable by physically moving the part) and improper isometries (det −1 — reflections, achievable only by remaking the part opposite-hand).

Where you meet it (2-4 concrete engineering situations, specific: bench, test stand, review board)

The CAD mirror command, and the review board that catches it. You model the right-hand bracket and mirror it for the left side. Mirroring is a reflection — determinant −1 — and it flips handedness. Right-hand threads become left-hand, weld symbols swap sides, and an asymmetric dowel pattern lands where no rotation of the original could put it. No amount of rotating a part reproduces its mirror image. The drawing checker who flags "opposite-hand part, verify thread callouts" is enforcing a determinant sign.

The circular pattern on a bolt flange. Eight holes on a bolt circle is one hole composed with seven rotations of 45° about the flange axis — a rotation about a point that is not the origin, which is really three operations: translate the center to the origin, rotate, translate back. The CNC equivalent is a work offset (G54) plus coordinate rotation (G68). When a patterned feature lands wrong, it is almost always because one of those three steps ran in the wrong order.

The subscale test article. Scale a model by factor s and lengths scale by s, areas by s², volumes and masses by s³. A half-scale tank has one-quarter the panel area and one-eighth the mass — which is why test loads, natural frequencies, and Reynolds numbers do not scale with the geometry, and why the wind tunnel group runs similarity analysis instead of just shrinking the drawing.

The test stand alignment problem. An accelerometer reports in its own axes; the review wants vehicle axes. Converting is one rigid transform — a rotation matrix from the mounting orientation plus the offset to the vehicle origin. The same math runs the CMM's part-coordinate-system alignment and every robot arm's tool frame: find the rigid motion that best maps measured points onto nominal ones, then report deviations in the frame that matters.

How it works (the real substance — behavior, gotchas, limits of validity, the mistake people make)

The organizing idea: transformations form a hierarchy by what they preserve. Rigid motions (translation + rotation, det = +1) preserve distances, angles, and handedness — this is what "moving a part" means. Add reflections and you get the full class of isometries: distances still preserved, but handedness can flip — the det −1 half of the split in the boxed test above. Add uniform scaling and you get similarities: angles survive, sizes don't. Go to independent per-axis scaling and even angles die: a 45° diagonal under a 3× stretch in x alone becomes an 18.4° diagonal, circles become ellipses, and a scaled-up thread profile is no longer a valid thread. That is why CAD scale commands are for models and mockups, not for turning an M6 into an M8.

Order matters. Rotate a point at (1, 0) by 90° then translate by (10, 0): it lands at (10, 1). Translate first, rotate second: (0, 11). Composition of transformations is matrix multiplication, and matrix multiplication does not commute. Every "the pattern came out orbiting the origin" bug in a script or post-processor is a rotate-about-a-point done as a bare rotation — the fix is the conjugation T(c)·R·T(−c): move the pivot to the origin, rotate, move it back.

Two mirrors make a rotation. Compose reflections across two lines meeting at angle φ and you get a pure rotation by 2φ — reflect across the x-axis, then across a line at 20°, and the product is exactly a 40° rotation, determinant back to +1. This is why mirroring a mirrored part returns a rotated original, and why the determinant, not visual inspection, is the reliable test for whether a transform chain has flipped handedness. Odd number of reflections in the chain: opposite-hand part. Even: same hand.

Normals are not points. Under rotation, surface normals transform like everything else. Under non-uniform scaling they do not — they transform by the inverse transpose of the matrix. Scale the surface y = x by 3× in x: the tangent direction (1, 1) becomes (3, 1), but naively scaling the normal (1, −1) gives (3, −1), which is no longer perpendicular (dot product 8, not 0). The inverse-transpose gives (1/3, −1), which is (dot product 0). Graphics engines, mold-draft checks, and offset-surface algorithms all carry this correction; homegrown scripts routinely don't.

Small rotations add; finite rotations don't. To first order, small rotations about different axes commute — which is why an alignment stack-up of milliradian misalignments can be summed in any order and why small-angle error budgets work. Finite 3D rotations do not commute at all: roll-then-pitch is not pitch-then-roll, Euler angle conventions matter, and swapping the assumed order is a classic integration-lab failure. The small-angle shortcut is valid to roughly the square of the angle — fine at 0.1°, dangerous at 10°.

Numerical drift. Chain a few thousand composed rotation matrices — an IMU integration loop, a long feature-tree regeneration — and floating-point error walks the product off orthonormality: it starts shearing and scaling slightly. The standard fixes are periodic re-orthonormalization or carrying the rotation as a unit quaternion and normalizing. Also: transformations about a distant global origin subtract large nearly-equal coordinates; work in a local frame when deviations are microns and coordinates are meters.

History (who derived it and when, told as a short story with inline [n] citations)

Engineers had moved and mirrored geometry forever; the mathematics of what a motion is came late. Leonhard Euler proved the first structural fact in 1775: any displacement of a rigid body that keeps one point fixed is a single rotation about some axis through that point [1][2]. The paper, published in 1776, means every possible reorientation of a satellite, a gimbal, or a fixture reduces to one axis and one angle — the result that makes attitude representation possible at all.

The general case — no fixed point — was settled earlier than most textbooks say. Giulio Mozzi, in a 1763 treatise printed in Naples, showed that the most general rigid displacement is a screw: a rotation about a line combined with a slide along it [3][4]. Italians still call the screw axis the asse di Mozzi, but the theorem carries Michel Chasles' name from his better-circulated 1830 statement of the same result [3][4]. Screw theory, robot kinematics, and every "helical" joint in a multibody code descend from it.

The algebra arrived with August Ferdinand Möbius, whose 1827 Der barycentrische Calcul introduced homogeneous coordinates and treated geometric transformations — congruences, similarities, affinities, and the projective maps beyond them — as objects worth classifying in their own right [5][6]. Felix Klein finished the thought in 1872 at Erlangen: a geometry simply is the study of properties invariant under a chosen group of transformations [7][8]. Rigid motions preserve distance, similarities preserve angles, affine maps preserve parallelism — Klein's program turned that hierarchy from an observation into the definition.

The reason your CAD kernel does all of this with 4×4 matrices traces to Lawrence Roberts at MIT Lincoln Laboratory. In work attached to his 1963 thesis on machine perception of 3D solids and reissued as a 1965 report, Roberts used homogeneous coordinates to pack rotation, translation, scaling, and perspective into a single matrix representation [9][10]. Every graphics pipeline and solid modeler since has kept that convention — Möbius's 1827 bookkeeping, running silently under every mirror and pattern command you click.

Related tools (bullet list of HE calculator slugs that use or neighbor this topic, as /tools/ links)

  • /tools/convert-angle — rotation angles move between degrees, radians, and mils; the matrix wants radians
  • /tools/moment-of-inertia-shapes — inertia values depend on the reference axes; shifting them is a translation of frame (the parallel-axis correction)
  • /tools/convert-length — scale factors between a model and the article, and between unit systems, before any s² and s³ effects get computed

Sources

  1. https://en.wikipedia.org/wiki/Euler%27s_rotation_theorem
  2. https://arxiv.org/abs/2008.05378
  3. https://en.wikipedia.org/wiki/Chasles%27_theorem_(kinematics)
  4. https://www.sciencedirect.com/science/article/abs/pii/S0094114X99000464
  5. https://www.britannica.com/biography/August-Ferdinand-Mobius
  6. https://en.wikipedia.org/wiki/Homogeneous_coordinates
  7. https://mathshistory.st-andrews.ac.uk/Biographies/Klein/
  8. https://en.wikipedia.org/wiki/Erlangen_program
  9. https://www.historyofinformation.com/detail.php?entryid=2528
  10. https://www.researchgate.net/publication/242529510_Homogeneous_matrix_representation_and_manipulation_of_n-dimensional_constructs

Written by HE in our own words from the cited sources — engineering judgment included, your stamp still required. All entries →

★ The Reference Shelf

Reading is free. The shelf is for cardholders.

Your library card is an email address: pin it to your shelf, print the card, take the FE/PE quick-reference pack, read the Huntsville history. The shelf remembers what you reach for.

Already on the list? Enter with your subscribed email →