### Author Topic: Sierpinsky forest  (Read 1784 times)

#### B+

• Guest
##### Sierpinsky forest
« on: January 14, 2016, 01:37:15 AM »
Computer fixed here is older one:
Code: [Select]
`'sierpinski forest.bas 2015-12-13 SmallBASIC 0.12.2 [B+=MGA]randomize timercolor 12,0maxfactor=xmax*ymaxhorizon=.65*ymax:ntrees=.063*xmax:land=ymax-horizondim xt(ntrees),yt(ntrees),wt(ntrees),ht(ntrees),ct(ntrees)f=xmax/ntrees 'need to spread trees out, no groupsfor i=1 to ntrees 'random placement in zones  xt(i)=int(f*i-1.5*f*rnd)nextfor i=ntrees to 2 step -1  'now shuffle them  r=int(rnd*i)+1  swap xt(i),xt(r)nextf=land/ntrees:d=(land-20)^(1/ntrees)for i=1 to ntrees  yt(i)=horizon+d^i  ht(i)=((d^i)/land)*.9*ymax+rnd*.09*ymax  yt(i)=yt(i)-ht(i)  wt(i)=(.35+rnd*.35)*ht(i)  ct(i)=rgb(0,int(rnd*40+80),0)nextfor i=0 to horizon 'sky  line 0,i,xmax,i,rgb(i/horizon*128,i/horizon*32,64)nextfor i=horizon to ymax 'snow covered land  cc=128+(i-horizon)/land*127  line 0,i,xmax,i,rgb(cc,cc,cc)nextstars=maxfactor*10^-4for i=1 to stars 'stars in sky  pset rnd*xmax,rnd*horizon,11nextstars=stars/2for i=1 to stars  circle rnd*xmax,rnd*horizon,1,1,11 fillednextstars=stars/2for i=1 to stars  circle rnd*xmax,rnd*horizon,2,1,11 fillednextcolor 6,0at 0,0:?"When you see the forest, color 14,0at 0,1.5*txth("By"):?"move pointer horizontally to see the trees"showpagedelay 10for i=1 to ntrees  sier xt(i),yt(i),wt(i),ht(i),ct(i)next  pen on   while 1   mx=pen(4)  far=5000  for i=1 to ntrees    if (mx-(xt(i)+.5*wt(i)))^2<far then ifar=i:far=(mx-(xt(i)+.5*wt(i)))^2  next  if lastfar then sier xt(lastfar),yt(lastfar),wt(lastfar),ht(lastfar),ct(lastfar)  sier xt(ifar),yt(ifar),wt(ifar),ht(ifar),0  lastfar=ifar   showpage  delay 100wendpen offsub sier(tlx,tly,width,height,c)  ax = tlx  ay = tly+height  bx = tlx+width  by = tly+height  cx = tlx+width/2  cy = tly  px = tlx  py = tly+height  top=width*height*.25  for n=0 to top    if c=0 then pset px,py,int(rnd*16) else circle px,py,1,1,c filled    select Case int(rnd*3)    case 0      px = (px + ax) / 2.0      py = (py + ay) / 2.0    case 1      px = (px + bx) / 2.0      py = (py + by) / 2.0    case 2      px = (px + cx) / 2.0      py = (py + cy) / 2.0    end select           next  showpageend`
As you move your pointer left and right the individual trees light up.
« Last Edit: January 14, 2016, 01:39:31 AM by B+ »

#### johnno56

• Guest
##### Re: Sierpinsky forest
« Reply #1 on: January 14, 2016, 09:16:04 PM »
Cool...

J

#### B+

• Guest
##### Re: Sierpinsky forest
« Reply #2 on: January 14, 2016, 10:17:28 PM »
Hey, I hear you could use some cool!

#### jj2007

• Guest
##### Re: Sierpinsky forest
« Reply #3 on: January 14, 2016, 11:01:55 PM »
Nice stuff, Mark

Currently too busy adding Gdi+ to MasmBasic, otherwise I would try to port your code