Pythagoras Tree (Affine Version 3) Fractal Construction
Loading the math board and drawing, please wait…
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
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}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}}}]]]]]]]]]]]]]]]]]]) → LB9Point(Semicircle[P2, P1, xOyPlane]) → PPolygon({P1, P, P2, (-0.5, 0, 1), (0.5, 0, 1)}) → PolVector(P2, P) → vLVector(P, P1) → vRVector((0, 0, 0), Midpoint[P, P2]) → tLVector((0, 0, 0), Midpoint[P, P1]) → tRLaTeX(L, true, true) → TextLLaTeX(R, true, true) → TextRSequence(1, N) → LNJoin(Zip[{(M * L), (M * R)}, M, LM0]) → LM1Join(Zip[{(M * L), (M * R)}, M, LM1]) → LM2Join(Zip[{(M * L), (M * R)}, M, LM2]) → LM3Join(Zip[{(M * L), (M * R)}, M, LM3]) → LM4Join(Zip[{(M * L), (M * R)}, M, LM4]) → LM5Join(Zip[{(M * L), (M * R)}, M, LM5]) → LM6Join(Zip[{(M * L), (M * R)}, M, LM6]) → LM7Join(Zip[{(M * L), (M * R)}, M, LM7]) → LM8Zip(ApplyMatrix[M, Pol], M, LM1) → LB1Zip(ApplyMatrix[M, Pol], M, LM2) → LB2Zip(ApplyMatrix[M, Pol], M, LM3) → LB3Zip(ApplyMatrix[M, Pol], M, LM4) → LB4Zip(ApplyMatrix[M, Pol], M, LM5) → LB5Zip(ApplyMatrix[M, Pol], M, LM6) → LB6Zip(ApplyMatrix[M, Pol], M, LM7) → LB7Zip(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.