Difference between revisions of "workshop01G2:Codefarm"
From CECO
(→Visualised) |
(→Visualised) |
||
Line 76: | Line 76: | ||
==Visualised== | ==Visualised== | ||
− | + | <div style="float:left; width: 540px; height 304px; margin-right:10px; border:5px;" align="center"> | |
− | <div style="float:left; width: | + | [[File:Interactive week3 Fractileline.jpg|270px]]</div> |
− | [[File:Interactive week3 Fractileline.jpg|270px]] | + |
Revision as of 15:54, 24 September 2013
"Fractal Line"
import rhinoscriptsyntax as rs
import math
import scriptcontext
outputLine1 = []
outputLine2 = []
outputLine3 = []
outputLine4 = []
def fractal(x, position, line):
startPt = rs.CurveStartPoint(line) endPt = rs.CurveEndPoint(line) Pt = (endPt-startPt) * position + startPt newPt1 = (startPt + Pt) * 0.5 newPt2 = (Pt + endPt) * 0.5 vectorLine = rs.VectorSubtract(startPt, endPt) vectorNormal = rs.VectorCrossProduct(vectorLine, (0,0,1)) vectorNormal = rs.VectorUnitize(vectorNormal) vector1 = rs.VectorScale(vectorNormal, rs.Distance(startPt, Pt) * 0.5) vector2 = rs.VectorScale(vectorNormal, rs.Distance(Pt, endPt) * 0.5) newPt1move = rs.PointAdd(newPt1, vector1) newPt2move = rs.PointAdd(newPt2, -vector2) line1 = rs.AddLine(startPt, newPt1move) line2 = rs.AddLine(newPt1move, Pt) line3 = rs.AddLine(Pt, newPt2move) line4 = rs.AddLine(newPt2move, endPt) outputLine1.append(line1) outputLine2.append(line2) outputLine3.append(line3) outputLine4.append(line4) if x > 0: fractal(x-1, position, line1) fractal(x-1, position, line2) fractal(x-1, position, line3) fractal(x-1, position, line4) else: return
can_continue = True
startLine = rs.AddLine(ptA,ptB)
if startLine is None: can_continue = False
if can_continue:
if level is None: can_continue = False
if can_continue:
if percentage is None: can_continue = False
if can_continue:
fractal(level, percentage, startLine)