PROGRAM LSYS_H_H_DRAGON !(© W.van Duyn 27th April 2004)
SET MODE "color"
SET WINDOW 0,1199,0,903
SET BACKGROUND COLOR "white"
CLEAR
CALL init
END
SUB init
OPTION ANGLE degrees
PRINT "input: x try 800, y try 300"
INPUT x,y
PRINT "input: Size try 600,level try 20"
INPUT size,level
CLEAR
SET COLOR "black"
FLOOD 1,1
LET lev =level
LET k=90
LET a=0
LET r=1.414
LET d=size/r^level
CALL axiom(d,lev,a,x,y,k)
END SUB
SUB axiom(d,lev,a,x,y,k)
SET COLOR 15
CALL moveX(d,lev,a,x,y,k)
CALL turnLEFT(a,k)
SET COLOR 9
CALL travelON(d,a,x,y)
CALL moveX(d,lev-1,a,x,y,k)
CALL turnLEFT(a,k)
SET COLOR 10
CALL travelON(d,a,x,y)
CALL moveX(d,lev-2,a,x,y,k)
CALL turnLEFT(a,k)
SET COLOR 12
CALL travelON(d,a,x,y)
CALL moveX(d,lev-3,a,x,y,k)
CALL turnLEFT(a,k)
SET COLOR 14
CALL travelON(d,a,x,y)
CALL moveX(d,lev-4,a,x,y,k)
SET COLOR 11
CALL travelON(d,a,x,y)
CALL moveX(d,lev-5,a,x,y,k)
END SUB
SUB moveY(d,lev,a,x,y,k)
IF lev=0 THEN
EXIT IF
ELSE
CALL turnRIGHT(a,k)
CALL travelON(d,a,x,y)
CALL moveX(d,lev-1,a,x,y,k)
CALL turnRIGHT(a,k)
CALL moveY(d,lev-1,a,x,y,k)
END IF
END SUB
SUB moveX(d,lev,a,x,y,k)
IF lev=0 THEN
EXIT IF
ELSE
CALL moveX(d,lev-1,a,x,y,k)
CALL turnLEFT(a,k)
CALL moveY(d,lev-1,a,x,y,k)
CALL travelON(d,a,x,y)
CALL turnLEFT(a,k)
END IF
END SUB
SUB travelON(d,a,x,y)
OPTION ANGLE degrees
LET x2=x+d*cos(a)
LET y2=y+d*sin(a)
PLOT x,y;x2,y2
LET x=x2
LET y=y2
END SUB
SUB turnLEFT(a,k)
LET a=a+k
END SUB
SUB turnRIGHT(a,k)
LET a=a-k
END SUB
SUB backDrop !optional sky backdrop for dragon
FOR ii=0 TO 1200 STEP 10
SET COLOR MIX (col) 1-ii/2400,1-ii/4800,1
SET COLOR col
BOX AREA ii,ii+10,0,903
NEXT ii
END SUB
|