## 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 d****istance 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

## 5 Comments

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!

2 years ago

Always impressed with your work! love it

2 years ago

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

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.

2 years ago

I like your approach. very inspiring!