Animation 7

Metric structure

symmetry-rotation-vector-invariants.mp4

These are sparse samples decoded from the current MP4, not newly rendered illustrations. They can support checks of the sampled states and labels, but cannot establish continuous motion, timing, transitions, or the absence of problems between samples. Use the full MP4 when judging those properties.

1280 × 720 · 24 fps · 6 s · 144 frames · 12 samples

MP4 SHA-256 f82c316a58b99f9882752b4074fbb5fca732796d667707c321812c9e0fcff340

Frame manifest · Context markdown · Download complete review packet

Chapter context

Section: Invariants and Metrics. Excerpts are verbatim; line numbers refer to the included chapter markdown.

Caption

Metric structure

Image description

Rotation preserves vector lengths and angles

Before the animation

Chapter lines 341–341

What is the invariant of rotation in this representation? It is just the length of vectors and the angles between them.

After the animation

Chapter lines 349–349

These relationships are expressed by a single invariant, the dot product.

Chapter lines 351–355

$$ \mathbf u\cdot\mathbf v = u_xv_x+u_yv_y. $$

Generation source

Run the main script without arguments. It draws the rotation-and-invariants frames with Pillow and encodes them with FFmpeg. It has no local Python imports or input movie.

Mapping evidence and limits

main() explicitly writes symmetry-rotation-vector-invariants.mp4; constants specify 1280 x 720, 24 fps, 144 frames. No matching validation JSON is present. Attribution is by source/output name and pipeline, not a recorded movie hash.

Source SHA-256 values identify the exact downloadable bytes in this packet. The source mapping and recorded checks explain the likely generation pipeline; they do not prove that these exact source bytes produced the movie. A GitHub link pinned to a commit is provided only when the delivered source bytes exactly match that path at the build's Git HEAD.

Decoded contact sheet

Extraction method: Twelve evenly spaced decoded frame indices, including first and last. Native-resolution JPEGs from the encoded MP4; timestamps read from FFmpeg showinfo. No source rerendering. Frame indices are zero-based. Sparse samples do not establish continuous motion or capture every transition.. Frame indices are zero-based.

Timestamped decoded frames from symmetry-rotation-vector-invariants.mp4
Open contact sheet at full size

Full-size sampled frames

Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:00.000 · frame 0
00:00.000 · frame 0 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:00.542 · frame 13
00:00.542 · frame 13 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:01.083 · frame 26
00:01.083 · frame 26 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:01.625 · frame 39
00:01.625 · frame 39 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:02.167 · frame 52
00:02.167 · frame 52 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:02.708 · frame 65
00:02.708 · frame 65 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:03.250 · frame 78
00:03.250 · frame 78 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:03.792 · frame 91
00:03.792 · frame 91 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:04.333 · frame 104
00:04.333 · frame 104 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:04.875 · frame 117
00:04.875 · frame 117 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:05.417 · frame 130
00:05.417 · frame 130 · Full-size frame
Decoded frame from symmetry-rotation-vector-invariants.mp4 at 00:05.958 · frame 143
00:05.958 · frame 143 · Full-size frame