Pythagoras Tree (Affine Version 3) Fractal Construction

Pythagoras Tree (Affine Version 3) Fractal Construction
Loading the math board and drawing, please wait…
2021-01-24 05:29
This example demonstrates how to generate a “Pythagoras tree” fractal by repeatedly applying affine-style geometric mappings. Starting from an initial right-triangle/square configuration, the construction uses similarity relations and right-triangle structure to iteratively copy and transform smaller sub-shapes, producing a self-similar tree pattern. The key mathematics includes Pythagorean-theorem-associated right-triangle geometry, similar triangles and proportional scaling across recursion, and the consistent placement of squares/triangles to preserve right angles and similarity. From the GeoGebra construction summary, it is built with commands such as Zip (object packaging/management), Point (defining key vertices), Polygon (drawing the square/triangle regions), Vector (directions and displacement), LaTeX and Text (formula/text annotations), Sequence (iterating over recursion levels), and Join (connecting related geometric objects). It also follows a create/delete pattern for layered elements (e.g., buttCreate/buttDelete and indexed objects like LB* and LM*) to manage which segments appear at each iteration. Suitable for middle/high school enrichment, early university geometry, fractal visualization lessons, and interactive dynamic-geometry practice.

GeoGebra Commands & Parameters

  1. Zip(ApplyMatrix[M, Polygon[{(0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1), (-0.5, 0, 1), (0.5, 0, 1)}]], M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, {{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}}]]]]]]]]]]]]]]]]) → LB8_{1}
  2. Zip(ApplyMatrix[M, Polygon[{(0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1), (-0.5, 0, 1), (0.5, 0, 1)}]], M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, Join[Zip[{(M * {{x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), (-y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {y(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), x(Vector[(-0.5, 1, 1), Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]]]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (-0.5, 1, 1)]])}, {0, 0, 1}}), (M * {{x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), (-y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)])), x(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {y(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), x(Vector[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]), y(Vector[(0, 0, 0), Midpoint[Point[Semicircle[(-0.5, 1, 1), (0.5, 1, 1), xOyPlane]], (0.5, 1, 1)]])}, {0, 0, 1}})}, M, {{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}}]]]]]]]]]]]]]]]]]]) → LB9
  3. Point(Semicircle[P2, P1, xOyPlane]) → P
  4. Polygon({P1, P, P2, (-0.5, 0, 1), (0.5, 0, 1)}) → Pol
  5. Vector(P2, P) → vL
  6. Vector(P, P1) → vR
  7. Vector((0, 0, 0), Midpoint[P, P2]) → tL
  8. Vector((0, 0, 0), Midpoint[P, P1]) → tR
  9. LaTeX(L, true, true) → TextL
  10. LaTeX(R, true, true) → TextR
  11. Sequence(1, N) → LN
  12. Join(Zip[{(M * L), (M * R)}, M, LM0]) → LM1
  13. Join(Zip[{(M * L), (M * R)}, M, LM1]) → LM2
  14. Join(Zip[{(M * L), (M * R)}, M, LM2]) → LM3
  15. Join(Zip[{(M * L), (M * R)}, M, LM3]) → LM4
  16. Join(Zip[{(M * L), (M * R)}, M, LM4]) → LM5
  17. Join(Zip[{(M * L), (M * R)}, M, LM5]) → LM6
  18. Join(Zip[{(M * L), (M * R)}, M, LM6]) → LM7
  19. Join(Zip[{(M * L), (M * R)}, M, LM7]) → LM8
  20. Zip(ApplyMatrix[M, Pol], M, LM1) → LB1
  21. Zip(ApplyMatrix[M, Pol], M, LM2) → LB2
  22. Zip(ApplyMatrix[M, Pol], M, LM3) → LB3
  23. Zip(ApplyMatrix[M, Pol], M, LM4) → LB4
  24. Zip(ApplyMatrix[M, Pol], M, LM5) → LB5
  25. Zip(ApplyMatrix[M, Pol], M, LM6) → LB6
  26. Zip(ApplyMatrix[M, Pol], M, LM7) → LB7
  27. Zip(ApplyMatrix[M, Pol], M, LM8) → LB8

AI Drawing Prompt Reference

Draw a Pythagoras tree fractal. Start with a right triangle configuration, then repeatedly apply affine geometric mappings: each iteration generates smaller right triangles and squares based on the Pythagorean theorem and similarity relations, scaling and rotating them accordingly. New sub-shapes are connected to the original, maintaining right angles and similarity. The process begins with the first layer and gradually creates finer tree-like structures, resulting in a self-similar fractal pattern. The drawing should clearly show the recursive construction hierarchy, including right triangles, squares, and connecting lines, with a symmetric and proportionally coordinated layout.
The prompt above was compiled from the original drawing commands and is for reference only.