‘ Patterns ’ category archive

Dec
08

Colony

This is still under a lot of progress. Just exploring ways to randomly populate a surface with mesh objects in this case with bikes and tanks.

Oct
18

Box – Sphere

Just a random study. Each cell is a a solid box carved by a sphere that is changing in shape performed by BooleanDifference in Rhino.

Oct
12

Learning through Repetition?

It’s been interesting to see how Korean students are almost always forced to memorize infinite amount of information as part of their education. If one fails to do so, unwanted consequences ranging from lower test scores to physical punishments follow. In efforts to compete and be successful in this system, the students often choose a path that maximizes their ability to memorize facts: learning through repetition. From this a type of art emerge, the process of learning is expressed through blank pieces of paper, ink, and time. The students refer to this as Ggamji meaning black paper.
 

 

It’s interesting to find that Koreans from few hundred years ago also had very similar ways of learning. These are scans of old books that you can easily buy all over Korea. These are traces of students from the past copying their textbooks over and over to memorize the contents. It’s a funny feeling buying thousands of hours of one’s effort to learn with just a few bucks.

 

 

Jul
28

Facade

Some images of an on-going facade design. Same-sized fins. Varied rotations.
Under progress, progress, and more progress.


Mar
24

Array/Orient Objects based on Two Surfaces

I’ve been trying to explore more with Rhino Explicit History and also with RhinoScript. Here’s a simple one that arrays basic object onto a surface and orients them to a target surface. It doesn’t deform the base object in any ways. It could be a useful tool in trying to create gradient patterns using just rotations without changing the shape of the basic components (so the fabrication process is more efficient). RhinoScript is still quite new to me. I started with the Honeycomb script that Andrew Kudless wrote few years ago. The code still needs to be more optimized and cleaned up. But, the code works nonetheless.

—-

Option Explicit
‘by Andrew Kudless | andrew@materialsystems.org | april, 2005
‘Edited by Howard Jiho Kim | kimjiho@gmail.com | March, 2008

Sub OrientObjTwoSurfaces()

Dim orientObj
Dim orientPoint(2)

Dim sourceSurf, sourceSurf2
Dim uDiv, vDiv, maxDiv
Dim uArray, vArray
Dim i,j, index

‘surface 1 variables
Dim uMax, vMax
Dim uInc, vInc
Dim uStart, vStart

‘surface 2 variables
Dim u2Max, v2Max
Dim u2Inc, v2Inc
Dim u2Start, v2Start

‘surface points variables
Dim arrParam(1), arr2Param(1), arrPoint, arr2Point
Dim surface1Points(), surface2Points()

‘Rhino.EnableRedraw vbFalse

orientObj = Rhino.GetObject (“Select the Object to Orient”)
If IsNull(orientObj) Then Exit Sub

orientPoint(0) = Rhino.GetPoint(“Select Point 1 to Orient”)
If IsNull(orientPoint(0)) Then Exit Sub
orientPoint(1) = Rhino.GetPoint(“Select Point 2 to Orient”)
If IsNull(orientPoint(1)) Then Exit Sub
orientPoint(2) = Rhino.GetPoint(“Select Point 3 to Orient”)
If IsNull(orientPoint(2)) Then Exit Sub

uDiv = Rhino.GetInteger (“Enter the number of divisions in the U direction”)
If IsNull(uDiv) Then Exit Sub

vDiv = Rhino.GetInteger (“Enter the number of divisions in the V direction”)
If IsNull(vDiv) Then Exit Sub

‘Get inputs
sourceSurf = Rhino.GetObject (“Select the base Surface”, 8)
If IsNull(sourceSurf) Then Exit Sub

‘Get inputs
sourceSurf2 = Rhino.GetObject (“Select a target Surface”, 8)
If IsNull(sourceSurf2) Then Exit Sub

ReDim uVal(uDiv)
ReDim vVal(vDiv)

ReDim u2Val(uDiv)
ReDim v2Val(vDiv)

uMax = Rhino.SurfaceDomain (sourceSurf, 0)
vMax = Rhino.SurfaceDomain (sourceSurf, 1)

uInc = uMax(1)/uDiv
vInc = vMax(1)/vDiv

For i = 0 To uDiv
uVal(i) = i * uInc
Rhino.Print “uVal(” & i & “):” & uVal(i)

Next

For i = 0 To vDiv
vVal(i) = i * vInc
Rhino.Print “vVal(” & i & “):” & vVal(i)
Next

u2Max = Rhino.SurfaceDomain (sourceSurf2, 0)
v2Max = Rhino.SurfaceDomain (sourceSurf2, 1)

u2Inc = u2Max(1)/uDiv
v2Inc = v2Max(1)/vDiv

For i = 0 To uDiv
u2Val(i) = i * u2Inc
Rhino.Print “u2Val(” & i & “):” & u2Val(i)
Next

For i = 0 To vDiv
v2Val(i) = i * v2Inc
Rhino.Print “v2Val(” & i & “):” & v2Val(i)
Next

Rhino.Print “Calculating Array…”

‘Find which direction has more points
If uDiv >= vDiv Then
maxDiv = uDiv
Else
maxDiv = vDiv
End If

‘ARRAY POINS on SURFACE1
Dim targetPoint(2)
Dim p1, arrVector, NewLine, NewLine2, line1, line2, line3, arrXform
Dim arrPlane, arrRotated

For i=0 To uDiv

For j=0 To vDiv
arrParam(0) = uVal(i)
arrParam(1) = vVal(j)
arrPoint = Rhino.EvaluateSurface(sourceSurf, arrParam)
line1 = Rhino.AddPoint(arrPoint)
targetPoint(0) = Rhino.PointCoordinates(line1)

arr2Param(0) = uVal(i)
arr2Param(1) = vVal(j)
arr2Point = Rhino.EvaluateSurface(sourceSurf2, arr2Param)
line2 = Rhino.AddPoint(arr2Point)
targetPoint(2) = Rhino.PointCoordinates(line2)

NewLine = Rhino.AddLine (arrPoint, arr2Point)

arrVector = Rhino.VectorCreate(arr2Point, arrPoint)
Rhino.ViewCPlane , Rhino.PlaneFromNormal(arrPoint, arrVector)

arrPlane = ViewCPlane
arrRotated = RotatePlane(arrPlane, 90, arrPlane(1))
Rhino.ViewCPlane , arrRotated

arrPlane = ViewCPlane

NewLine2 = Rhino.RotateObject(NewLine, arrPlane(0), 90.0, ,True)

arrPoint = Rhino.CurveEndPoint(NewLine2)
line3 = Rhino.AddPoint(arrPoint)
targetPoint(1) = Rhino.PointCoordinates(line3)

If IsArray(orientPoint) Then
If IsArray(targetPoint) Then
Rhino.OrientObject orientObj, orientPoint, targetPoint, 1
End If
End If

Rhino.DeleteObject (line1)
Rhino.DeleteObject (line2)
Rhino.DeleteObject (line3)
‘Rhino.DeleteObject (NewLine)
Rhino.DeleteObject (NewLine2)

Next
Next

‘Rhino.EnableRedraw vbTrue
End Sub

OrientObjTwoSurfaces
Rhino.Print “Array Complete”

Jan
08

Studies on gradient patterns

Studying different ways to distort a regular grid. Hmmm…

Oct
26

patterns in rhizhao

rhizhao

rhizhao

rhizhao

rhizhao

trip to rhizhao
10. 1 – 10.4

patterns by nature.