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

    • Fandom Contest

      Fandom Contest
    • Metal Contest

      Metal Contest
    • Summer Fun: Student Design Challenge

      Summer Fun: Student Design Challenge

    5 Comments

    0
    kobernik
    kobernik

    1 year 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

    1 year ago

    Always impressed with your work! love it

    0
    stejaraiulia
    stejaraiulia

    1 year ago

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

    0
    sambourgault
    sambourgault

    1 year 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

    1 year ago

    I like your approach. very inspiring!