Sierpinski Pentagon IFS project by khorstm 3d model
Warning. This content is not moderated and could be offensive.
smoke
3dmdb logo
Thingiverse
Sierpinski Pentagon IFS project by khorstm

Sierpinski Pentagon IFS project by khorstm

by Thingiverse
Last crawled date: 3 years, 3 months ago
In 1981, John E. Hutchinson introduced a concept known as iterated function systems (IFS) and was published in Fractals Everywhere by Michael Barnsley. An iterated function system (IFS) is a finite set of contractive mappings or constructions on a complete metric space. Let (M,f) be a metric space. A mapping T: M → M is a contruction if there exists a constant c , with 0 ≤ c ≤ 1,such that f(T(x), T(y)) ≤ cf(x, y) for all x, y contained in M. https://www.math.ucdavis.edu/~hunter/book/ch3.pdf
Constructions bring points closer together and so, make shapes smaller. Fractals are complex patterns that are self-similar across different scales created by a repeated process like IFS. Thus, the shape of an IFS fractal is made up of copies of itself, each of which are made up of smaller copies of itself, going further and further towards infinity. The most well-known example of this is the Sierpinski triangle (or gasket), an overall equilateral triangle subdivided recursively into smaller equilateral triangles.
Another example of IFS is the Sierpinski pentagon, which is similar to the Sierpinski triangle, which scales a pentagon and translates five smaller pentagons to fit inside the larger one. The scale factor for each function is r= (3-√5)/2 =0.381966. http://larryriddle.agnesscott.org/ifs/pentagon/details.htm
I wanted to focus my project on creating the Sierpinski pentagon using an iteration function in OpenSCAD. First, I started with the base shape using a length of 50 and height of 5 (all in mm).
len=50;
h=7;
module shape(){
linear_extrude(height=h)
circle(r=len, $fn=5);}
Before I started with the iteration function, I played around with the translate function to find a good layout for the smaller pentagons. Since I had length specified as the size of the pentagon, I simply modified the length for the translate inputs until I liked where they were.
Next, I created a module for the iterate function using if else statements, with n being the number of iterations.
module iterate(n){
if (n>0){…}
else shape();
I put in the if clause the code for each pentagon using color, translate, and scale. For color, since I wanted to be able to see each level of iteration, I used RGB color values instead of the color name, modifying each level of color with n so the lighter colors are the higher levels. Here is the code for one of the pentagons:
//red
color([(n+1)/8, 0, 0])
translate([0.2len, 0.6len, h])
scale(0.381966)
iterate(n-1);
Once I had my code all set and ready to go, I printed iterate 5 times (n = 0, 1, 2, 3, 4) until the computer could not handle rendering any further.
Due to Covid-19 restrictions at my university, I am unable to print myself and do not have a physical copy of the project to show.

Tags