1. A.Penaloza Caicedo , A.F.Utama, B. Vincent , D. Nam, O. Oladunjoye [ Hyperbody, Faculty of Architecture, TUDelft ] MSC 3 FALL 2008 STOMATA MEMBRANE Performative Skin
2. The Stomata Membrane - Parametric Facade - Interactive System A stomata is found in a leaf and stem epidermis and its used for internal to external exchange in terms of gas, and water vapor. The concept of the performative aspect of the stomata was an inspiration for our skin component. Stomata
3. Geometry - criteria The final geometry chosen was the fourth in the second behavior series. We were testing a geometry that suits the qualities of a stomata . Performance - Adaptable - Recursive pattern - Interactive. The geometry was thought of in relation to a building skin - wall, floors, and roof. In the phase of sustainability, our geometry tackles the following questions Can the geometry store water? Could the geometry permit light? Could the geometry generate wind energy? How adaptable is it? Geometry Evolution
5. Option Explicit 'script written by Dayo Oladunjoye' 'hyperbody research group, tudelft. december 2008' 'pseudocode 'select a mesh 'draw parrelelogram on the mesh 'locate points 'addsurface Call SurfaceUV() Sub SurfaceUV() Dim strSurface 'the surface Dim uDiv,vDiv, intMax : intMax = 100 Dim arrUDomain, arrVDomain Dim Ustep, Vstep Dim arrParameter Dim arrC1,arrC2,arrC3,arrC4 Dim arrMidpt Dim intWidth: intWidth = Rhino.getInteger("please select width",1) Dim intHeight: intHeight = Rhino.GetInteger("please select height",1) strSurface = Rhino.GetObject ("please pick surface",8, True) If IsNull(strSurface) Then Exit Sub uDiv = intwidth 'Rhino.GetInteger("please enter number in U-direction",10,1,intMax) If IsNull(uDiv) Then Exit Sub vDiv = intheight 'Rhino.GetInteger("please enter number in V-direction",10,1,intMax) If IsNull(vDiv) Then Exit Sub arrUDomain = Rhino.SurfaceDomain (strSurface, 0) arrVDomain = Rhino.SurfaceDomain (strSurface, 1) UStep = (arrUDomain(1)-arrUDomain(0)) / uDiv Vstep = (arrVDomain(1)-arrVDomain(0)) / vDiv Call Rhino.EnableRedraw (False) Component in line geometry mapping of line geometry Script Development
6. Call SurfaceUV() Sub SurfaceUV() Dim strSurface 'the surface Dim uDiv,vDiv, intMax : intMax = 100 Dim arrUDomain, arrVDomain Dim Ustep, Vstep Dim arrParameter Dim arrC1,arrC2,arrC3,arrC4 Dim arrMidpt Dim intWidth: intWidth = Rhino.getInteger("please select width",1) Dim intHeight: intHeight = Rhino.GetInteger("please select height",1) strSurface = Rhino.GetObject ("please pick surface",8, True) If IsNull(strSurface) Then Exit Sub uDiv = intwidth 'Rhino.GetInteger("please enter number in U-direction",10,1,intMax) If IsNull(uDiv) Then Exit Sub vDiv = intheight 'Rhino.GetInteger("please enter number in V-direction",10,1,intMax) If IsNull(vDiv) Then Exit Sub arrUDomain = Rhino.SurfaceDomain (strSurface, 0) arrVDomain = Rhino.SurfaceDomain (strSurface, 1) UStep = (arrUDomain(1)-arrUDomain(0)) / uDiv Vstep = (arrVDomain(1)-arrVDomain(0)) / vDiv Call Rhino.EnableRedraw (False) Dim u,v Dim lum Dim strName Dim arrObjects For u = 0 To uDiv-1 For v = 0 To vDiv -1 arrParameter = Array(arrUDomain(0)+ UStep * u, arrVDomain(0)+ VStep * v) arrC1 = Rhino.EvaluateSurface(strSurface,arrParameter) arrParameter = Array(arrUDomain(0)+ UStep * (u+1), arrVDomain(0)+ VStep * v) arrC2 = Rhino.EvaluateSurface(strSurface,arrParameter) arrParameter = Array(arrUDomain(0)+ UStep * (u+1), arrVDomain(0)+ VStep * (v+1)) arrC3 = Rhino.EvaluateSurface(strSurface,arrParameter) arrParameter = Array(arrUDomain(0)+ UStep * u, arrVDomain(0)+ VStep * (v+1)) arrC4 = Rhino.EvaluateSurface(strSurface,arrParameter) '__________________________________________________________________ Overall Surface
7. Function SurfaceOne(strSurface,arrC1,arrC2,arrC3) Dim arrPoints1, arrPoints11, arrPoints12 Dim addCurve1, addCurve11, addCurve12 Dim srfMain1, arrObjects1 arrPoints1 = Array(arrC1,arrC2,arrC3) addCurve1 = Rhino.AddCurve(arrPoints1,4) arrPoints11 = Array(arrC1,arrC2) addCurve11 = Rhino.AddCurve(arrPoints11) arrPoints12 = Array(arrC2,arrC3) addCurve12 = Rhino.AddCurve(arrPoints12) arrObjects1 = Array(addCurve1,addCurve11,addCurve12) srfMain1 = Rhino.AddEdgeSrf(arrObjects1) End Function Function SurfaceTwo(strSurface,arrC3,arrC4,arrC1) Dim arrPoints2, arrPoints21, arrPoints22 Dim addCurve2, addCurve21, addCurve22 Dim srfMain2, arrObjects2 arrPoints2 = Array(arrC1,arrC4,arrC3) addCurve2 = Rhino.AddCurve(arrPoints2,4) arrPoints21 = Array(arrC3,arrC4) addCurve21 = Rhino.AddCurve(arrPoints21) arrPoints22 = Array(arrC1,arrC4) addCurve22 = Rhino.AddCurve(arrPoints22) arrObjects2 = Array(addCurve2,addCurve21,addCurve22) srfMain2 = Rhino.AddEdgeSrf(arrObjects2) End Function Surface division into u-v
8. Function SurfaceThree(strSurface,arrC1,arrC2,arrC3,arrPeakPtMid) Dim arrPoints3, arrPoints31, arrPoints32, arrPoints33, arrPoints34 Dim addCurve3, addCurve31, addCurve32, addCurve33 Dim srfMain3, arrObjects3, arrDomain3 arrPoints3 = Array(arrC1,arrC2,arrC3) addCurve3 = Rhino.AddCurve(arrPoints3,4) arrDomain3 = Rhino.CurveDomain(addCurve3) Dim addCurve3midpt: addCurve3midpt = Rhino.CurveMidPoint(addcurve3) addCurve33 = Rhino.SplitCurve(addCurve3,0.5) arrPoints31 =Array(arrC3,arrPeakPtMid) addCurve31 = Rhino.AddCurve(arrPoints31) arrPoints32 = Array(addCurve3midpt,arrPeakPtMid) addCurve32 = Rhino.AddCurve(arrPoints32) arrObjects3 = Array(addCurve33(1),addCurve31,addCurve32) srfMain3 = Rhino.AddEdgeSrf(arrObjects3) End Function Function SurfaceSix(dblHeight,strSurface,arrPeakPtMidMin,arrC1,arrC4,arrC3) Dim addCurve6, addCurve61, addCurve62, addCurve63 Dim arrPoints6, arrPoints61, arrPoints62 Dim srfMain6,arrObjects6, arrDomain6 arrPoints6 = Array(arrC1,arrC4,arrC3) addCurve6 = Rhino.AddCurve(arrPoints6,4) arrDomain6 = Rhino.CurveDomain(addCurve6) Dim addCurve6midpt: addCurve6midpt = Rhino.CurveMidPoint(addCurve6) addCurve63 = Rhino.SplitCurve(addCurve6,0.5) arrPoints61 =Array(arrC1,arrPeakPtMidMin) addCurve61 = Rhino.AddCurve(arrPoints61) arrPoints62 = Array(addCurve6midpt,arrPeakPtMidMin) addCurve62 = Rhino.AddCurve(arrPoints62) arrObjects6 = Array(addCurve63(0),addCurve61,addCurve62) srfMain6 = Rhino.AddEdgeSrf(arrObjects6) End Function mapped geometry on surface division
9. Function surfaceFour(strSurface,arrPeakPtMid,arrC1,arrC4,arrC3) Dim addCurve4, addCurve41, addCurve42, addCurve43 Dim arrPoints4, arrPoints41, arrPoints42 Dim srfMain4,arrObjects4, arrDomain4 arrPoints4 = Array(arrC1,arrC4,arrC3) addCurve4 = Rhino.AddCurve(arrPoints4,4) arrDomain4 = Rhino.CurveDomain(addCurve4) Dim addCurve4midpt: addCurve4midpt = Rhino.CurveMidPoint(addCurve4) addCurve43 = Rhino.SplitCurve(addCurve4,0.5) arrPoints41 =Array(arrC3,arrPeakPtMid) addCurve41 = Rhino.AddCurve(arrPoints41) arrPoints42 = Array(addCurve4midpt,arrPeakPtMid) addCurve42 = Rhino.AddCurve(arrPoints42) arrObjects4 = Array(addCurve43(1),addCurve41,addCurve42) srfMain4 = Rhino.AddEdgeSrf(arrObjects4) End Function Function SurfaceFive(dblHeight,strSurface,arrPeakPtMidMin,arrC1,arrC2,arrC3) Dim arrPoints5, arrPoints51, arrPoints52, arrPoints53, arrPoints54 Dim addCurve5, addCurve51, addCurve52, addCurve53 Dim srfMain5, arrObjects5, arrDomain5 arrPoints5 = Array(arrC1,arrC2,arrC3) addCurve5 = Rhino.AddCurve(arrPoints5,4) arrDomain5 = Rhino.CurveDomain(addCurve5) Dim addCurve5midpt: addCurve5midpt = Rhino.CurveMidPoint(addcurve5) addCurve53 = Rhino.SplitCurve(addCurve5,0.5) arrPoints51 =Array(arrC1,arrPeakPtMidMin) addCurve51 = Rhino.AddCurve(arrPoints51) arrPoints52 = Array(addCurve5midpt,arrPeakPtMidMin) addCurve52 = Rhino.AddCurve(arrPoints52) arrObjects5 = Array(addCurve53(0),addCurve51,addCurve52) srfMain5 = Rhino.AddEdgeSrf(arrObjects5) End Function mapped open geometry on surface division Add surfaces on mapped open geometry
19. The Components location is determined by the elevation. The highest position are light components in order to maximize solar gain. The energy generating components are located in the slope to take advantage of water flow and wind, while the Water capturing components are located in the lowest part to catch the rain water. Components Location