16 lines
801 B
Lua
16 lines
801 B
Lua
function Bitmap:tree(x, y, angle, depth, forkfn, lengfn)
|
|
if depth <= 0 then return end
|
|
local fork, leng = forkfn(), lengfn()
|
|
local x2 = x + depth * leng * math.cos(angle)
|
|
local y2 = y - depth * leng * math.sin(angle)
|
|
self:line(math.floor(x), math.floor(y), math.floor(x2), math.floor(y2))
|
|
self:tree(x2, y2, angle+fork, depth-1, forkfn, lengfn)
|
|
self:tree(x2, y2, angle-fork, depth-1, forkfn, lengfn)
|
|
end
|
|
|
|
bitmap = Bitmap(128*3,128)
|
|
bitmap:tree( 64, 120, math.pi/2, 8, function() return 0.3 end, function() return 3 end)
|
|
bitmap:tree(192, 120, math.pi/2, 8, function() return 0.6 end, function() return 2.5 end)
|
|
bitmap:tree(320, 120, math.pi/2, 8, function() return 0.2+math.random()*0.3 end, function() return 2.0+math.random()*2.0 end)
|
|
bitmap:render({[0x000000]='.', [0xFFFFFFFF]='█'})
|