' gd1lib.bas - jackord@kw.igs.net - revised 28 Feb 08 - Liberty Basic v4.02 ' solution of Laplace's equation: ' 128 iterations at 4 pixel steps ' 16 iterations at 2 pixel steps ' 6 iterations at 1 pixel steps nomainwin button#1.b, "Plot", [plot], UL, 30, 170, 65, 20 ' textbox#1.tx, 110, 170, 65, 20 WindowWidth=222 ' pixel scale 0-204 WindowHeight=228 ' pixel scale 0-190 UpperLeftX=100: UpperLeftY=50 open "Laplace's Equation" for graphics_nsb as #1 #1 "trapclose [quit]" dim p(4): dim q(4): dim c$(6): dim v(205, 169) p(1)=60: q(1)=108: p(2)=102: q(2)=36: p(3)=144: q(3)=108 c$(0)="blue": c$(1)="cyan": c$(2)="red" c$(3)="yellow": c$(4)="darkpink": c$(5)="green" gosub [pin] [waitHere] wait [pin] #1 "backcolor white ; cls ; color black ; down" #1 "place 105 168": #1 "\\Pass/150" #1 "color blue ; place 0 0": #1 "box 204 168" #1 "color red ; backcolor red" for i=1 to 3 #1 "place "; p(i); " "; q(i) #1 "circlefilled 6" next i return [plot] d=4: nplt=8 for k=d to 168-d for j=d to 204-d v(j, k)=50 next j next k for i=1 to 3 for k=q(i)-6 to q(i)+6 for j=p(i)-6 to p(i)+6 r2=(p(i)-j)*(p(i)-j)+(q(i)-k)*(q(i)-k) if r2<=36 then v(j, k)=100 next j next k next i for i=1 to 150 #1 "color white ; backcolor white ; place 105 168 ; boxfilled 200 189 ; color black" #1 "\\Pass "; str$(i); "/150" for k=d to 168-d step d for j=d to 204-d step d if v(j, k)<100 then v(j, k)=(v(j, k-d)+v(j, k+d)+v(j+d, k)+v(j-d, k))/4 end if if i=1 or i=nplt then plt=int(v(j, k)/7): plt=plt-6*int(plt/6) #1 "color "; c$(plt) if d<2 then #1 "line "; j-1; " "; k; " "; j; " "; k else #1 "place "; j-d/2; " "; k-d/2 #1 "backcolor "; c$(plt) #1 "boxfilled "; j+d/2; " "; k+d/2 end if end if next j next k if i=128 or i=144 then d=d/2 for k=d to 168-d step 2*d for j=2*d to 204-2*d step 2*d if v(j, k)<100 then v(j, k)=(v(j, k-d)+v(j, k+d))/2 next j next k for k=d to 168-d step d for j=d to 204-d step 2*d if v(j, k)<100 then v(j, k)=(v(j-d, k)+v(j+d, k))/2 next j next k end if if i=nplt then nplt=nplt+2*d scan next i #1 "color white ; place 105 168 ; boxfilled 200 189 ; color black" #1 "\\Finished!" goto [waitHere] [quit] close#1 end