Generative Components presentation at University of Technology Sydney

Page 1

SHAMSUL AKMAL

RMIT UNIVERSITY

GENERATIVE COMPONENTS: SURFACE EFFECTS


Component outline and depth


1 A B C D E F

2

3

4

5


Random formation of modules

Solid and Void derived from cuts on original module . This can be used to emit natural light and resulting in light patterns according to the random voids


Hamer Hall from Melbourne CBD

The terrace level and balcony


Building outline

Wall type division for different density configurations


Component Making

Points on circle to house hexagon

Point centroid of set of the base polygon

This hexagon will be the base polygon to construct the components

Coordinate system by origin XY points


Component Making

Create a polygon on top of the base polygon using its vertices

RotateSequence(polygon02.Vertices,Random(0,6))

Draw component lines using vertice ID as guide

function (Point pts) { Text T = {}; for (int i = 0; i < pts.Count-1; i++) { T[i] = new Text(); T[i].ByPointOrPlaneOrCoordinateSystem(pts[i], ToString(i)); } return T; }

Use the new coordinate system for solid offset from close curve

Finished component ( one out of five)


Symbolic view of component CoordinateSystem baseCS

Construction guides use only

Point point01

Circle circle01

Point point02

Structure of component

Polygon

Polygon

basePolygon

compPolygon

Generate component using basepolygon

Point

Text

centroidPointCompCS

text03

CoordinateSystem

Point

compCS

centroidCompPolygon

PolyLine compPolyline

Solid component01

Resulting view of solid component


Hexagon Grid

Polygon By Function

function (CoordinateSystem CS, Point ptGd, int floors, int bays) { Polygon pol = {}; int hexi = 0; int hexj = 0; int col = 0; Point verts = {}; int shift = 0; int patternOffseti = {1, 0, 1, 2, 3, 2}; //0 1 2 3 4 5 - handy index label int patternOffsetj = {0, 1, 2, 2, 1, 0}; for (int i = 0; i < floors-3; i=i+2) { if (col%2!=0) { shift = 1; } else { shift = 0; } pol[hexi] = {}; for (int j = 0; j < bays-2; j=j+2) { for (int k = 0; k < 6; k++) { verts[k] = ptGd[ i + patternOffseti[k] ][ j + patternOffsetj[k] + shift ]; } pol[hexi][hexj] = new Polygon(); pol[hexi][hexj].ByVertices(verts); hexj++; } hexi++; col++; } return pol; }


Form Making Two circles would form the base for the building outline. Next step is to have tangent lines


Form Making From www.gcuser.com forum

function (Circle A, Circle B) { double theta; double circleDistance = Distance(A.CenterPoint, B.CenterPoint); Line tanLines = {}; CoordinateSystem refCS = new CoordinateSystem(); refCS.ByOriginXPoint(A.CenterPoint, B.CenterPoint); theta = Acos((A.Radius-B.Radius)/circleDistance); CoordinateSystem thetaCSB1 = new CoordinateSystem(); thetaCSB1.ByOriginRotationAboutCoordinateSystem(B.CenterPoint, refCS, theta, AxisOption.Z); CoordinateSystem thetaCSB2 = new CoordinateSystem(); thetaCSB2.ByOriginRotationAboutCoordinateSystem(B.CenterPoint, refCS, -theta, AxisOption.Z); CoordinateSystem thetaCSA1 = new CoordinateSystem(); thetaCSA1.ByOriginRotationAboutCoordinateSystem(A.CenterPoint, refCS, theta, AxisOption.Z); CoordinateSystem thetaCSA2 = new CoordinateSystem(); thetaCSA2.ByOriginRotationAboutCoordinateSystem(A.CenterPoint, refCS, -theta, AxisOption.Z); Line tangencyFinderB1 = new Line(); tangencyFinderB1.ByStartPointDirectionLength(B.CenterPoint, thetaCSB1.XDirection, B.Radius); Line tangencyFinderB2 = new Line(); tangencyFinderB2.ByStartPointDirectionLength(B.CenterPoint, thetaCSB2.XDirection, B.Radius); Line tangencyFinderA1 = new Line(); tangencyFinderA1.ByStartPointDirectionLength(A.CenterPoint, thetaCSA1.XDirection, A.Radius); Line tangencyFinderA2 = new Line(); tangencyFinderA2.ByStartPointDirectionLength(A.CenterPoint, thetaCSA2.XDirection, A.Radius); tanLines[0] = new Line(); tanLines[0].ByPoints(tangencyFinderA1.EndPoint, tangencyFinderB1.EndPoint); tanLines[1] = new Line(); tanLines[1].ByPoints(tangencyFinderA2.EndPoint, tangencyFinderB2.EndPoint); return tanLines; }

( Source : Cuong of gcuser )

( Source : Gustav of gcuser )


Form Making

Tangent is resolved

Make new lines and arcs using established outline. Adjust the radius and distance


Form Making

Bspline Surface from closed curve

Make hexagon grid by Polygon By Function

Replicate points on surface

Resulting grid to generate components


Form Making Crate random number IDs to associate to hexagon tiles. This variable can be used as an input for the colour property of the hexagon grid to show randomness

transaction script "New script transaction" { int val = {}; for (int i = 0; i < polygon05.Count; i++) { val[i] = {}; for (int j = 0; j < polygon05[0].Count; j++) { val[i][j] = Random(1,6); } } GraphVariable idents = new GraphVariable("idents"); idents = val; }


Form Making Adjust density of grid


Component Generation Generate each component seperately using generate new component by function

function (int switchList, Polygon polys) { SHComponent01 sh = {}; int k = 0; for (int i = 0; i < polys.Count; i++) { for (int j = 0; j < polys[0].Count; j++) { if (switchList[i][j]==1) { sh1[k] = new SHComponent01(); sh1[k].ByDefault(polys[i][j]); k++; } } } return sh; }


Component Generation All five components generated to fill every hexagon tile


Completed Model Resulting surface pattern


Density Density levels

Big Arc

Straight lines

Small Arc


Model Symbol

Tangent line from two circles Hexagon Grid

Components

Perimeter Surface

Point Grid


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.