GLE Library: polarplot.gle
! Subroutines to create polar plots (r = f(theta))
sub polar fct$ from to tstep color$ fill$ lwidth
default tstep 0.025
default color black
default fill clear
default lwidth 0.02
t = from
r = eval(fct$)
gsave
set color color$ lwidth lwidth
begin path stroke fill fill$
amove xg(r*cos(t)) yg(r*sin(t))
for t = from+tstep to to step tstep
r = eval(fct$)
aline xg(r*cos(t)) yg(r*sin(t))
next t
closepath
end path
grestore
end sub
sub polar_data ds$ color$ fill$ lwidth type$
default color black
default fill clear
default lwidth 0.02
default type line
gsave
set color color$ lwidth lwidth
if type$="line" then
for i = 1 to ndata(ds$)
amove xg(0) yg(0)
local r = datayvalue(ds$,i)
!change deg to radians
local t = torad(dataxvalue(ds$,i))
aline xg(r*cos(t)) yg(r*sin(t))
next i
! here I should check for the type, but since there are only two...
else
begin path stroke fill fill$
local r = datayvalue(ds$,1)
!change deg to radians
local t = torad(dataxvalue(ds$,1))
amove xg(r*cos(t)) yg(r*sin(t))
for i = 2 to ndata(ds$)
r = datayvalue(ds$,i)
t = torad(dataxvalue(ds$,i))
aline xg(r*cos(t)) yg(r*sin(t))
next i
closepath
end path
end if
grestore
end sub
sub polar_grid radius rings sectors color$
default radius 1.0
default rings 4
default sectors 8
default color gray10
gsave
set color color$
for ring = 1 to rings
amove xg(0) yg(0)
circle xg(radius/rings*ring)-xg(0)
next ring
for sector = 1 to sectors
local theta = 2*pi/sectors*(sector-1)
amove xg(0) yg(0)
aline xg(radius*cos(theta)) yg(radius*sin(theta))
next sector
grestore
end sub
[Return to subroutines page]