Difference between revisions of "workshop01G2:Codefarm"
From CECO
Line 75: | Line 75: | ||
fractal(level, percentage, startLine) | fractal(level, percentage, startLine) | ||
− | Visualised: | + | ==Visualised== |
− | [[ | + | <div style=" width: 850px; margin:0px; padding: 0px; padding-top: 20px; overflow: hidden;"> |
+ | <div style="float:left; width: 5400px; height 304px; margin-right:10px; border:5px;" align="center"> | ||
+ | [[File:Interactive week3 Fractileline.jpg|270px]]</div> |
Revision as of 15:53, 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)