MAT 594X_2.5D Pattern

Introduction: MAT 594X_2.5D Pattern

The project is based on a linear extrusion of a pattern made out of triangulated point array.
I played with a combination of randomness, order, and attractor points. Below you can see the result.

Overall, the pattern may be too complicated to print. My computer crashed several times trying to unify these polygons via a boolean operation.

I tried to introduce noise and attractor points into the system as a means to complexity, but maybe it worked against the major task at hand --printability.

Supplies

Rhino & Grasshopper

Step 1: Completely Random

First, I played with simple implementation of randomness

        if((i*j) % mod) == random.randint(1,5): 
                pt.append(rs.CreatePoint(x, y, 0.0))

Step 2: Attractor Point With Randomness

Second, I aimed to create varying "densities" using an attractor point. The idea would be that the biggest concentration would be around this attractor point and the concentration would go down towards the periphery of the point array. The distribution in this gradient would be noisy.

I created a point in rhino and referenced this to a point param object in GH. This is the attractor point. Calculated the distance between this point and any given point. att is the attractor point.

myDist = math.sqrt((att.X - x)*(att.X - x) + (att.Y - y)*(att.Y - y))

Scaled the distance between the attractor point and any given point to a range of 0 and 1.

maxDist =  math.sqrt((p2.X-p1.X)*(p2.X-p1.X) + (p2.Y-p1.Y)*(p2.Y-p1.Y))
distMapped = abs(1 - myDist / maxDist) 

Also created a random number between 0 and 1

r = random.random(); 

If the distance between the attractor point and any given point in the array is below an arbitrary input value (dist), the points get appended to the array. This creates a uniform distribution around the attractor point.

At the same time, if the normalized distance between the attractor point and any given point is below a random number, this point also gets appended to the array. The bigger the distance, the less likely the condition will pass, so the density goes down towards the periphery.

Please note that the attractor point is at the geometric center of the point array.

if(myDist < dist) | (r <= distMapped * distMapped):
       pt.append(rs.CreatePoint(x, y, 0.0))

Step 3: Order and Attractor

#This one is a combination of simple pattern and the distance between an attractor point and any given point. Note that the attractor point is at the very center in these renderings.

 if(myDist < dist) | ((i*i - j*j) % 5 == 0): 
 pt.append(rs.CreatePoint(x, y, 0.0))

Step 4:

Step 3 with 2 attractor points

Be the First to Share

    Recommendations

    • Teach With Tinkercad Contest

      Teach With Tinkercad Contest
    • Crayons Challenge

      Crayons Challenge
    • Cheese Challenge

      Cheese Challenge

    5 Comments

    0
    kobernik
    kobernik

    2 years ago on Step 4

    I appreciate the shift in complexity at the center of the pattern. Very cool use of attractors. My machine was very slow as well. Pressing the wrong button and having to wait 60 seconds for results on the screen feels like timeout. Excited to see what you come up with next!

    0
    weidi
    weidi

    2 years ago

    Always impressed with your work! love it

    0
    stejaraiulia
    stejaraiulia

    2 years ago

    Your design is beautiful and your documentation is superb. Very interested in your process regarding attractor points!

    0
    sambourgault
    sambourgault

    2 years ago

    I am glad you explain how you are using attractors! I have encountered this component during my first exploration of the Rhino+Grasshopper but haven't investigated it yet. I appreciate how you express it in terms density, the result is beautiful.

    0
    baojingyinyin
    baojingyinyin

    2 years ago

    I like your approach. very inspiring!