// Under a shell type: box -l g fractree.box
// ---
// Here we give an example of fractal drawing.
include "g"
// We define a new object, which contains all the details about
// the Pythagorean tree
PythagTree = (Int level, Point p1, p2, Real xmid, h)
PythagTree@@Window[
xmid = $.xmid, h = $.h, level = $.level, p1 = $.p1, p2 = $.p2, d = 1e-10
Color[g = 1.0/(level+1), b = 1 - g, (0.5*b, g, 0)]
side = PointList[p1, p2]
p = .Poly[side.Get[1], side.Get[2-d], side.Get[(2-d, 1)], side.Get[(1, 1)]]
t = PointList[p.Get[3], p.Get[4], p.Get[(3+xmid, -h)]]
pt1 = PythagTree[.level = level-1, .xmid = xmid, .h = h
.p1 = t.Get[3], .p2 = t.Get[1]]
pt2 = PythagTree[.level = level-1, .xmid = xmid, .h = h
.p1 = t.Get[2], .p2 = t.Get[3]]
\ $$[If[level >= 1], pt1, pt2]
]
w = Window[][
// Now we can draw the tree with the following line
PythagTree[.level = 11, .xmid = 0.6, .h = 0.45, .p1 = (0, 0), .p2 = (20, 0)]
.Save["fractree.png"]
]
|