> ArcScape  By David Lawrence  For Archimedes only ( (C) BAU September 1989 2: < 13: F init Pfaults(faults) Z levels d draw n x: init size% = 80 xscale% = 8 yscale% = 4 zscale% = 4 circular = linear = faults = 100 delta = 3 :  land(size%,size%) ! s%(2),x%(2),y%(2),height(3)  gcol%(23),tint%(23) :  Ȏ  13,15,21 : colours=256 " : colours=16 , 6: @ colours=256 J shades=23 Tyellow=%001111 ^ i%=0 11 hcol=(i% 4)+1 rtint%(i%)=(i% 4)<<6 |gcol%(i%)=col<<2 tint%(i%+12)=tint%(i%) $gcol%(i%+12)=(col<<4)+(3<<2)+col    shades=12  i%=0 15  r%,g%,b%  i%,r%,g%,b%  15   : faults(num%)  i%=1 num% %0,0);"Faults left:";num%-i%;" " & circular circle 0 linear line : D N: X circle bx%=(size%)-1 ly%=(size%)-1 vr%=((size%)-1)^2 add=*(1)*delta  X%=0 size% dx=(X%-x%)^2  dxsize% y2=size%-1  Y%=y1 y2 land(X%,Y%)+=add      :  line * 4s%(1)=(4):s%(2)=(4) >s%(1)<>s%(2) H R J%=1 2 \Ȏ s%(J%) f 1: p x%(J%)=0 zy%(J%)=(size%)-1  2: x%(J%)=(size%)-1 y%(J%)=size%  3: x%(J%)=size% y%(J%)=(size%)-1  4: x%(J%)=(size%)-1  y%(J%)=0    x%(1)<>x%(2) y%(1)<>y%(2) !M=(y%(2)-y%(1))/(x%(2)-x%(1)) C=y%(1)-M*x%(1) add=*(1)*delta  X%=0 size% $ Y%=M*X%+C . Y%<0 Y%=0 8 Y%<= size% B y%=Y% size% Lland(X%,y%)+=add V ` j t ~:  levels  base=0  peak=0 +land(size%,size%)=land(size%-1,size%-1)  X%=0 size%-1 #land(X%,size%)=land(X%,size%-1) #land(size%,X%)=land(size%-1,X%)  Y%=0 size%-1 Bav=(land(X%,Y%)+land(X%,Y%+1)+land(X%+1,Y%)+land(X%+1,Y%+1))/4  avpeak peak=av    #water=(Ǝ land())/(size%*size%) range=(peak-water)/shades depth=(water-base)/12 ( 2: < draw F P I%=0 size%-1 Z J%=0 size%-1 dpatch(I%,J%) n I%=size%-1 side(col%) x edge(col%)   black 3d(4,size%,size%,water) 3d(5,size%,size%,base) 3dd(5,size%,size%)  : patch(X%,Y%) height(0)=land(X%,Y%)-water !height(1)=land(X%+1,Y%)-water #height(2)=land(X%+1,Y%+1)-water !height(3)=land(X%,Y%+1)-water av%=(Ǝ height())/4 col%=av%/range sea%=av%/depth " col%<0 col%=0 , sea%>0 sea%=0 6 F$="FN" @ i%=0 3 J height(i%)<0 T F$+="b" ^ h F$+="a" r | sea(sea%+11) green(col%) null=(F$)  : edge(col%)  blue(0) 3d(4,I%,size%,base) 3d(4,I%+1,size%,base) 3d(85,I%,size%,water) 3d(85,I%+1,size%,water)  black 3d(5,I%,size%,water)  green(0) 3d(4,I%,size%,base) 3d(4,I%+1,size%,base) &3dd(85,I%,size%) 03dd(85,I%+1,size%) : black D3dd(5,I%,size%) N X: bside(col%) l blue(0) v3d(4,size%,J%,base) 3d(4,size%,J%+1,base) 3d(85,size%,J%,water) 3d(85,size%,J%+1,water)  black 3d(5,size%,J%,water)  green(0) 3d(4,size%,J%,base) 3d(4,size%,J%+1,base) 3dd(85,size%,J%) 3dd(85,size%,J%+1)  black 3dd(5,size%,J%)  :  sea(col%) blue(col%)  3d(4,X%,Y%,water) *3d(4,X%+1,Y%,water) 43d(85,X%,Y%+1,water) >3d(85,X%+1,Y%+1,water) H R: \ ݤaaaa f3dd(4,X%,Y%) p3dd(4,X%+1,Y%) z3dd(85,X%,Y%+1) 3dd(85,X%+1,Y%+1) =0 :  ݤaaab 3dd(4,X%,Y%) 3dd(4,X%+1,Y%) 3dm(85,3) 3dd(85,X%+1,Y%+1) 3dm(85,2)  yellow  3dm(5,3) =0 :  ݤaaba 3dd(4,X%,Y%) 3dd(4,X%,Y%+1) $3dd(85,X%+1,Y%) .3dm(85,2) 83dm(85,1) B yellow L 3dm(5,2) V=0 `: j ݤaabb t3dd(4,X%,Y%) ~3dd(4,X%+1,Y%) 3dm(85,3) 3dm(85,1) yellow 3dm(5,3) =0 : ݤabaa 3dd(4,X%,Y%+1) 3dd(4,X%+1,Y%+1) 3dd(85,X%,Y%) 3dm(85,1) 3dm(85,0) yellow 3dm(5,1) =0 : ( ݤabab 2 tri(0) <green(col%) F tri(2) P=0 Z: d ݤabba n3dd(4,X%,Y%) x3dd(4,X%,Y%+1) 3dm(85,0) 3dm(85,2) yellow 3dm(5,0) =0 : ݤabbb tri(0) =0 : ݤbaaa 3dm(4,3) 3dm(4,0) 3dd(85,X%,Y%+1) 3dd(85,X%+1,Y%) 3dd(85,X%+1,Y%+1) "=0 ,: 6 ݤbaab @3dd(4,X%+1,Y%+1) J3dd(4,X%+1,Y%) T3dm(85,2) ^3dm(85,0) h yellow r3dm(85,2) |=0 : ݤbaba tri(1) green(col%) tri(3) =0 : ݤbabb tri(1) =0 : ݤbbaa 3dd(4,X%+1,Y%+1) 3dd(4,X%,Y%+1) 3dm(85,1) 3dm(85,3) & yellow 0 3dm(5,1) :=0 D: N ݤbbab X tri(2) b=0 l: v ݤbbba tri(3) =0 : ݤbbbb =0 : tri(t%) Ȏ t%  0: tat(X%,Y%,3,0)  1: tat(X%+1,Y%,0,1)  2: tat(X%+1,Y%+1,1,2)  3: tat(X%,Y%+1,2,3)  * 4: >tat(x%,y%,s1%,s2%) H3dd(4,x%,y%) R3dm(4,s1%) \3dm(85,s2%) f yellow p3dm(5,s1%) z : 3dm(o%,s%) Ȏ s%  0: mid(o%,X%,Y%,1,0,0,1)  1: mid(o%,X%+1,Y%,0,1,1,2)  2: mid(o%,X%,Y%+1,1,0,3,2)  3: mid(o%,X%,Y%,0,1,0,3)   : mid(o%,xs,ys,xa,ya,zs,ze) (d=height(zs)/(height(zs)-height(ze)) $ xa .3d(o%,xs+d*xa,ys,water) 8 B3d(o%,xs,ys+d*ya,water) L V `: j3dd(o%,X,Y) t3d(o%,X,Y,land(X,Y)) ~ : 3d(o%,X,Y,Z) 6 o%,640+(X-Y)*xscale%,850-(X+Y)*yscale%+Z*zscale%  :  black  0 Ȝ 0  : blue(level%)  colours=256 . ((level% 4)+1)<<4 Ȝ ((level% 3)<<6)    1   (: 2 yellow < colours=256 F yellow Ȝ 192 P Z 2 d n x: green(level%)  colours=256 d gcol%((level%(level%<24))+(23 (level%>23))) Ȝ tint%((level%(level%<24))+(23 (level%>23)))   3+level%   : 8 &00,&00,&00, &10,&20,&90, &F0,&E0,&10, &00,&30,&00 8 &00,&40,&00, &00,&50,&00, &00,&60,&00, &00,&70,&00 8 &00,&80,&00, &00,&90,&00, &20,&A0,&20, &40,&B0,&40 8 &60,&C0,&60, &90,&D0,&90, &D0,&E0,&D0, &F0,&F0,&F0