Project Description:
light seeking machines are programmed to push grounded bricks towards light cast onto the floor. (eg. the sunlight coming through a window). As the sun rises and sets the light path moves and the bricks follow, thus creating emergent patterns.
Lighting simluations via Ecotect will be used to:
1. Study how brick placement can change the daylight factor
2. Speculate and map the potential “buildable” area
3. Help calibrate the sensitivity of the machine’s light sensors (eg. only drive towards x range in lumens)
Daylight Factor – Analysis Grid:
This study shows how will the number of bricks, it’s placement and material effect the daylight factor of a space?
Using Tedngai’s “Ecotect Analysis Grid 2 Rhino” script, DF analysis data was converted to a surface as a means of 3D mapping “buildable“ area. The surface peaks and valleys represent high and low lumen levels, and or the absence or prsence of a brick.
Sample Ecotect Data:
1.2768, 1.28509, 1.28971, 2.2466, 3.2209, 6.85491, 13.5377, 16.4381, 17.3614, 19.4248, 19.1552, 17.8918, 17.594, 14.5499, 6.93391, 2.14391, 2.20469, 1.53283, 1.28647, 1.27194, 2.30118, 2.73324, 2.74547, 3.41999, 6.16329, 8.74706, 12.8397, 15.7009, 16.3073, 16.8703, 17.0259, 16.4576, 14.7066, 12.666, 8.22195, 4.83835, 2.97473, 2.02677, 2.40924, 2.30426, 2.0747, 2.02002, 2.69397, 3.96526, 5.18788, 7.06709, 9.70132, 11.1143, 12.1092, 13.5396, 11.7393, 12.2442, 11.5015, 9.74278, 6.9234, 4.75648, 3.81966, 3.62953, 2.42884, 2.75764, 1.83838, 1.94818, 2.2208, 3.75749, 4.04008, 5.90577, 7.41432, 8.33884, 9.43079, 9.25285, 9.03335, 8.62411, 8.31394, 7.14627, 5.73228, 3.91285, 3.94581, 3.76494, 2.97021, 2.5216, 1.89475, 2.14126, 3.055, 3.08061, 2.89965, 4.04766, 5.57898, 6.80126, 6.36056, 6.40134, 6.67575, 7.15078, 5.91055, 5.69576, 4.27529, 3.05747, 2.99106, 3.09462, 2.20309, 2.05633,
1.85562, 2.03552, 3.10559, 2.49052, 3.13657, 3.41528, 5.54401, 5.92736, 6.36552, 5.90912, 5.88865, 6.22181, 6.2505, 5.57344, 4.11307, 3.71256, 3.17819, 2.73857, 1.96613, 3.06346, 2.01836, 2.02988, 2.26621, 2.35518, 3.38627, 3.344, 4.12191, 3.99017, 4.26249, 4.88275, 4.80359, 4.77441, 4.54185, 4.21487, 3.04055, 3.04184, 2.35258, 2.26329, 1.94979, 1.9444, 1.90657, 2.31015, 2.42426, 2.38327, 2.82048, 2.84921, 3.04882, 3.74024, 3.54746, 4.0733, 3.77888, 3.4448, 3.30655, 3.87451, 3.02156, 2.93381, 3.04403, 2.37739, 2.16169, 1.75126, 1.79731, 2.16931, 2.24606, 2.35343, 2.81032, 2.36299, 3.24828, 3.10861, 3.5611, 3.06863, 3.19607, 3.57656, 3.15272, 3.18106, 2.37691, 2.42856, 2.24275, 1.9301, 2.16177, 1.62165, 2.13292, 1.90805, 1.95094, 2.0845, 2.36087, 2.33945, 2.7065, 2.82244, 2.27793, 2.52459, 2.57047, 3.29654, 2.67105, 2.57165, 2.75952, 2.37649, 1.95443, 1.97441, 1.92028, 1.77821,
1.41463, 1.58291, 2.00339, 2.00491, 2.26463, 1.8814, 2.3462, 2.30018, 2.37029, 2.60315, 2.60932, 2.44595, 2.74773, 2.57349, 2.31259, 2.23082, 2.06018, 2.02529, 1.9747, 1.72442, 1.6252, 1.88378, 1.61556, 2.26583, 1.98621, 2.32065, 2.27648, 2.52604, 2.45433, 2.76427, 2.46203, 2.74566, 3.12017, 3.00515, 2.29023, 1.89043, 1.71414, 1.86376, 1.57139, 1.4298, 1.56866, 1.52367, 1.86996, 1.47389, 2.20521, 1.97464, 2.366, 0, 2.96831, 0, 0, 3.04562, 0, 0, 2.24489, 1.906, 1.79433, 1.72464, 1.61449, 1.58028, 1.59958, 1.44488, 1.46463, 1.82442, 1.55283, 1.95514, 2.27154, 2.33628, 2.42075, 2.46626, 0, 2.10981, 1.96945, 2.27968, 2.1647, 1.9145, 1.54681, 1.75096, 1.45142, 1.45571, 1.37694, 1.41833, 1.47806, 1.76558, 1.86742, 1.41017, 2.28152, 1.92666, 0, 2.4009, 2.37541, 0, 1.97827, 1.96118, 1.95548, 1.57764, 1.83329, 1.42455, 1.40263, 1.56174, 1.50026, 1.39591, 1.39619, 1.53413, 1.49531, 1.43636, 1.8753, 1.84723, 2.19027, 1.90457, 0, 1.83741, 1.63231, 1.77766, 1.56946, 1.5087, 1.50814, 1.50956, 1.46052, 1.57554,
Rhinoscript to Convert Ecotect Data:
Option Explicit
'Script written by Ted Ngai Apr 2008
'This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.
'http://creativecommons.org/licenses/by-sa/3.0/us/
Call ReadPts()
Sub ReadPts()
Dim strFilter, strFileName
strFilter = "Text File (*.txt)|*.txt|All Files (*.*)|*.*||"
strFileName = Rhino.OpenFileName("Open Point File", strFilter)
If IsNull(strFileName) Then Exit Sub
Dim objFSO, objFile, objFileCC
Set objFSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set objFile = objFSO.OpenTextFile(strFileName, 1)
Set objFileCC = objFSO.OpenTextFile(strFileName, 1)
If Err Then
MsgBox Err.Description
Exit Sub
End If
'Read all the numbers into an array
Dim txt, a
txt = objFile.ReadAll
a = Split(txt,",")
If Not IsArray(a) Then Exit Sub
'Rhino.Print Ubound(a)
'Rhino.Print a(0)
'Check for number of columns
Dim col, row, b
row = 1
b = objFileCC.ReadLine
col = Split(b,",")
'Check for number of rows
Do While objFileCC.AtEndOfStream <> True
objFileCC.SkipLine
row = row+1
Loop
Rhino.Print "U : " & Ubound(col)
Rhino.Print "V : " & row
'create points
Dim u,v, x, y, z, n,nMax, arrPoints()
'Find max value
Dim aMax, aTemp, k
ReDim aTemp(row*Ubound(col)-1)
k = 0
For v = 1 To row
For u = 1 To Ubound(col)
aTemp(k) = CDbl(a(k))
k = k+1
Next
Next
aMax = Rhino.SortNumbers(aTemp, False)
'assign value to x,y,z
n = 0
nMax = row*Ubound(col)
ReDim arrPoints(nMax-1)
'Call Rhino.EnableRedraw(False)
For v = 1 To row
For u = 1 To Ubound(col)
'Scale the u v points or apply mathematical other functions to transform the points
x=10*u
y=10*v
z=(CDbl(a(n))/aMax(0)*50)-55
arrPoints(n) = array(x,y,z)
n = n+1
Next
Next
Dim UVcount(1)
UVcount(0) = Ubound(col)
UVcount(1) = row
If Ubound(col) > 1 And row > 1 Then
Rhino.AddsrfPtGrid UVcount,arrPoints
Else
Rhino.Print "Cannot make surface"
End If
'Call Rhino.EnableRedraw(True)
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
End Sub
Once in Rhino, the infomation was altered via the mesh patch command in order to make a more legible surface
Results from Data:
Further Alterations:
The data currently shows the presence of bricks as valleys and the absence of bricks as peaks. Further alterations to the script itself or to the surface in Rhino in order to reverse the values. By doing so, this information can simulate what the brick composition may look like.