March Madness Bracket - Iterative Function Systems





Description
Made By: J Chan
September 16, 2026
George Mason University Math 401: Mathematics Through 3D Printing
Instructions for Printing
Printer used: Creality Ender-3 Pro
Print Settings:
- Layer Height: 0.2mm
- Infill Density: 20.0
- Infill Pattern: Cubic
- Printing Temp: 215.0
- Build Plate Temp: 60
- Supports: Yes – Normal
- Build Plate Adhesion Type: Skirt
Total Print Time: 7hours 29minutes
Total Filament Used: 48grams
Background on Iterative Function Systems
Iterative function systems (IFSs) are a method that we use in mathematics to construct fractals which are essentially patterns that are built from similar shapes across different scales. An IFS consists of a finite set of contraction mappings on a complete matric space so that the function strictly decreases the distance between points, ensuring the system converges to a stable limit. One of the most common examples is the Sierpinski Triangle which takes an equilateral triangle, divides it into four smaller equilateral triangles, removes the middle triangle and continually repeats the process in order to produce the Sierpinski Triangle.
Behind My Mathematical Formulation and Coding
I used the application of affine transformations in 3D space to figure out the math behind creating my IFS model. An affine transformation f:R^3→R^3 is defined as f(x)=Ax+b. Where x=〖[x,y,z]〗^T represents a point vector. A is a 3×3 matrix that affects both scaling and rotation while b is a 3×1 translation vector.
For my model, I decided to scale by a uniform scaling factor of 0.5 and use directional translations. For example, the first branch in “iterateonce” in my code is governed by the following matrix-vector pair:
A=[■(0.5&0&0@0&0.5&0@0&0&1)], b=[■(0.6 leng@0@hei)].
Similar, matrix-vector pairs were used in the other branches. The only change would be the b vector in each of the four branches, which is either a translation or a reflection over the y-axis depending on the branch.
The following is how I translated the recursion rules in OpenSCAD which is the coding platform that I used for my IFS.
- Base (initialshape): This is the initial set S_0, that is generated as a 4-sided extruded circle with $fn = 4 to form a square prism base of height (hei).
- Recursion (iterateonce and iterateonce2): This implements the contraction mappings by preforming the scale and translate transformations before passing the altered coordinate space to the children() module.
- Depth Control (recurse): Uses conditional logic to control the depth of the recursion and stops at n=0 to give the base geometry.
In order to create this specific model, I used two different but very similar IFS whose modules were named “Left” and “Right” which when combined created a model whose iterates branched out from the center of the model.
Problems That I Faced
One of the problems that I faced while completing this project was with the printing of my model. I learned from my peers that if my piece was too small the printer would have a hard time with accurately printing some of the smaller iterations. To combat this, I scaled up my model by a factor of 1.3 before my first print so that the printer would have an easier time printing the small details.
Citations
Riddle, L. (n.d.). Sierpinski Gasket. Larryriddle.Agnesscott.Org. Retrieved September 16, 2026, from https://larryriddle.agnesscott.org/ifs/siertri/siertri.htm