REM gb2bbc.bas - jackord@kw.igs.net - revised 27 Feb 08 - BBC BASIC (RTR) REM potential plot for -Q, +2Q, -Q charge array INSTALL @lib$+"WINLIB5" WindowWidth=408 : REM pixel scale 0-408 WindowHeight=336 : REM pixel scale 0-336 VDU 23,22,WindowWidth;WindowHeight;8,15,16,128 button% = FN_button("Plot", 6, 6, 40, 18, FN_setproc(PROCplot), 0) SYS "SetWindowText", @hwnd%, "Potential Plotted in Color" DIM p(4), q(4), m(4), c%(6) p(1)=121: q(1)=120: p(2)=204: q(2)=120+166*SQR(3)/2: p(3)=287: q(3)=120 m(1)=0-1: m(2)=2: m(3)=m(1) c%(0)=12: c%(1)=14: c%(2)=9 c%(3)=11: c%(4)=5: c%(5)=10 FOR i=1 TO 3 STEP 2 GCOL 0 : CIRCLE p(i)*2, q(i)*2, 24 GCOL 13 : FILL p(i)*2, q(i)*2 GCOL 0 : VDU 5 : MOVE p(i)*2-16, q(i)*2+16 : PRINT "-Q"; NEXT i GCOL 0 : CIRCLE p(2)*2, q(2)*2, 24 GCOL 7 : FILL p(2)*2, q(2)*2 GCOL 0 : VDU 5 : MOVE p(2)*2-14, q(2)*2+16 : PRINT "2Q"; REPEAT WAIT 1 UNTIL FALSE DEF PROCplot FOR k=0 TO 336 FOR j=0 TO 408 u=0: plt=1 FOR i=1 TO 3 r2=(p(i)-j)*(p(i)-j)+(q(i)-k)*(q(i)-k) IF r2>144 THEN u=u+m(i)/SQR(r2) ELSE plt=0 NEXT i IF plt=1 THEN plt=INT(285.65*(.1+u)): plt=plt-6*INT(plt/6) GCOL c%(plt) PLOT j*2, k*2 ENDIF NEXT j NEXT k ENDPROC