All animations · In the chapter · Open full MP4
Animation 2
A triangle's symmetries
symmetry-triangle-actions.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.
900 × 620 · 18 fps · 20 s · 360 frames · 12 samples
MP4 SHA-256 d03afb8e8f4d486b40907a7d551496836714e27650b67037f92d42f2a7ee44a9
Frame manifest · Context markdown · Download complete review packet
Chapter context
Section: Discrete symmetries. Excerpts are verbatim; line numbers refer to the included chapter markdown.
Caption
A triangle's symmetries
Image description
Triangle symmetry actions
Before the animation
Chapter lines 40–46
We can see its obvious symmetry. To categorize its symmetry we can write down all the actions that leave it unchanged:
- Do nothing
- Rotate 120°
- Rotate 240°
- Flip along an axis
- Flip then rotate 120°
- Flip then rotate 240°
After the animation
Chapter lines 54–54
We say the triangle "belongs to the $D_3$ symmetry group." Any number of objects possess $D_3$ symmetry.
Generation source
Run the main script without arguments. It draws the triangle-action frames with Pillow and encodes them with FFmpeg, then writes a poster. It has no local Python imports or input movie.
Mapping evidence and limits
main() explicitly writes symmetry-triangle-actions.mp4; constants specify 900 x 620 at 18 fps. 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.
- scripts/generate_symmetry_triangle_actions_animation.py · GitHub at 974f9de35254
SHA-256 233476265d3bbde8b9736f509059e0346cc778c45152c69fde68880ab1bb89c5
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.

Full-size sampled frames











