Data Validation and Error Trapping
Tipcorner - binary file access
Updating the Open Source Editor
Spotlight on Polar Coordinates
polar1.bas by Nally
atari2.bas by Nally
polar coordinate demo
Thanks for a wonderful polar coordinate demo, Guy!!
Demo to easy understand use of polar coordinates
'
' Guy Canida March 31, 2002
'
' Just run it and follow instructions nomainwin
' Set up main window
BackgroundColor$ = "blue"
WindowWidth = 540
WindowHeight = 385
UpperLeftX = 50
UpperLeftY = 50
pi=3.141592
centerx=150:centery=150
radius=100
open "Polar Coordinates in Motion" for window_popup as #m
call message " Just click when told", 4000
' box for explanation
BackgroundColor$ = "white"
ForegroundColor$ = "blue"
WindowWidth = 180
WindowHeight = 330
UpperLeftX = 390
UpperLeftY = 75
graphicbox #t.txt, 0, 0, 250, 350
open " " for window_popup as #t
print #t.txt, " fill white ; color yellow ; backcolor yellow ; down ; size 2"
print #t.txt, "place 30 210":print #t.txt, "piefilled 90 90 0 -30" ' angle
print #t.txt, "color black ; place 60 200":print #t.txt, "\a"
print #t.txt, "color darkcyan ; backcolor white"
print #t.txt, "line 10 210 170 210" ' x axis
print #t.txt, "line 30 60 30 240" ' y axis
print #t.txt, "color red ; line 150 110 150 210" ' Y
print #t.txt, "place 155 165":print #t.txt, "\Y"
print #t.txt, "color blue ; line 30 110 150 110" ' X
print #t.txt, "place 85 225":print #t.txt, "\X"
print #t.txt, "color black ; line 30 210 150 110" ' R
print #t.txt, "place 70 165":print #t.txt, "\R"
print #t.txt, "place 45 245":print #t.txt, "\ 2 2 2"
print #t.txt, "place 45 256":print #t.txt, "\ X + Y = R"
print #t.txt, "place 45 276":print #t.txt, "\ X=R*COS(a)"
print #t.txt, "place 45 296":print #t.txt, "\ Y=R*SIN(a)"
' box for animated demo
BackgroundColor$ = "white"
ForegroundColor$ = "blue"
WindowWidth = 310
WindowHeight = 330
UpperLeftX = 70
UpperLeftY = 75
graphicbox #1.po, 0,0,310,330
open " " for window_popup as #1
print #1.po, "fill white ; down ; size 2"
' popup message
print #t.txt, "when leftButtonUp"
print #1.po, "when leftButtonUp"
call message "First, 2 axis , X Y coordinates", 3000
print #1.po, "when leftButtonUp [endit]"
print #t.txt, "when leftButtonUp [endit]"
' loop forever
while pi=3.141592
' go around a full circle from x axis counter clockwise
for degree=359 to 1 step -1
if degree=325 then
print #1.po, "when leftButtonUp"
print #t.txt, "when leftButtonUp"
call message " Click to end this", 2000
print #t.txt, "when leftButtonUp [endit]"
print #1.po, "when leftButtonUp [endit]"
end if
' LB needs angles expressed in radian in trig functions
radian=degree*pi/180
print #1.po, "color darkcyan"
x=centerx+radius*cos(radian)
y=centery+radius*sin(radian)
' redraw image at angle=degree
print #1.po, "backcolor white"
print #1.po, "place ";centerx;" ";centery
print #1.po, "circle ";radius+2
print #1.po, "place 297 ";centery+3:print #1.po, "\>"
print #1.po, "place 297 ";centery+17:print #1.po, "\X"
print #1.po, "place ";centerx-4;" 18":print #1.po, "\^"
print #1.po, "place ";centerx-15;" 18":print #1.po, "\Y"
print #1.po, "line 10 ";centerx;" 300 ";centerx
print #1.po, "line ";centery;" 10 ";centery;" 300"
' check in which quadrant we are to draw the pie that shows the angle
quadrant=4-int(degree/90)
select case quadrant
case 1
start=(quadrant-1)*90+1:at=degree-360
case 2
start=degree:at=180-degree
case 3
start=(quadrant-1)*90-1:at=degree-180
case 4
start=degree:at=degree*(-1)+3
end select
print #1.po, "place ";centerx;" ";centery
print #1.po, "color yellow ; backcolor yellow; piefilled 90 91 ";start;" ";at
print #1.po, "color black ; line ";centerx;" ";centery;" ";x;" ";" ";y ' radius
print #1.po, "color red"
print #1.po, "line ";x;" ";centery;" ";x;" ";y ' cos(angle)
print #1.po, "color blue"
print #1.po, "line ";centerx;" ";y;" ";x;" ";y ' sin(angle)
print #1.po, "flush"
' for good animation, please adapt
timer 15, [itHappened]
wait
[itHappened]
timer 0
print #1.po, "cls"
next
wend
[endit]
' reset control and image for next step
print #t.txt, "cls":print #1.po, "cls"
print #1, "trapclose"
print #1.po, "when leftButtonUp"
print #t.txt, "when leftButtonUp"
print #1.po, "backcolor white"
call message "Now let'go polar coordinates", 3500
' set explanation of polar coordinates
print #t.txt, "place 60 150"
print #t.txt, "color yellow ; backcolor yellow ; piefilled 90 90 2 -30"
print #t.txt, "color black ; place 80 145":print #t.txt, "\a"
print #t.txt, "backcolor white ; color darkcyan ; size 1"
print #t.txt, "line 30 150 150 150" ' X
t=140
z=150-80*sin(pi/4)
print #t.txt, "color red ; size 1 ; line 60 150 ";t;" ";z
print #t.txt, "place 105 110":print #t.txt, "\R"
print #t.txt, "color blue ; line ";t;" 150 ";t;" ";z
print #t.txt, "place ";t+5;" 125":print #t.txt, "\Y"
print #t.txt, "color black ; place 45 80":print #t.txt, "\ Y = R * SIN(a)"
print #t.txt, "place 30 180":print #t.txt, "\Horizontal axis is angle zero"
print #t.txt, "place 30 200":print #t.txt, "\R can also be a function"
call message "Only one axis x and an angle", 3500
print #1.po, "cls"
print #1.po, "backcolor white ; color darkcyan ; size 1 ; line 10 ";centerx;" 300 ";centerx
print #1.po, "place 297 ";centery+3:print #1.po, "\>"
print #1.po, "place 297 ";centery+17:print #1.po, "\X"
' run polar coordinates demo
for degree=269 to -90 step -1
radian=degree*pi/180
b=radius*cos(pi/4-radian)
x=centerx+radius*cos(radian)
y=centery+b*sin(radian)
print #1.po, "color black ; size 1 ; line ";centerx;" ";centery;" ";x;" ";" ";y ' radius
print #1.po, "color red"
c=(radius+3)*cos(pi/4-radian)
t=centerx+(radius+3)*cos(radian)
z=centery+c*sin(radian)
print #1.po, "size 4 ; set ";t;" ";z
print #1.po, "color darkcyan ; size 1 ; line 10 ";centerx;" 300 ";centerx
print #1.po, "flush"
timer 5, [itHappened2]
wait
[itHappened2]
timer 0
print #1.po, "color yellow ; line ";centerx;" ";centery;" ";x;" ";" ";y ' radius
next
call message " Click to end it", 3500
print #1.po, "when leftButtonUp [quit]"
print #t.txt, "when leftButtonUp [quit]"
timer 1200, [quit]
wait
[quit]
timer 0
call message "Guy Canida April 1st, 2002", 5000
close #1:close #m:close #t
' popup message subroutine
sub message msg$, time
BackgroundColor$ = "white"
ForegroundColor$ = "blue"
UpperLeftX = 250
UpperLeftY = 150
WindowWidth = 150
WindowHeight = 25
TEXTBOX #0.text, 0, 0, 150, 25
open " " for window_popup as #0
print #0.text, "when leftButtonUp [itHappened2]"
print #0.text, msg$
timer time, [itHappened2]
wait
[itHappened2]
timer 0
close #0
end sub
end