File: polarplot.gle

package info (click to toggle)
gle-graphics-library 4.3.9-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,164 kB
  • sloc: python: 183; makefile: 2
file content (124 lines) | stat: -rw-r--r-- 4,799 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!                                                                      !
! GLE - Graphics Layout Engine <http://www.gle-graphics.org/>          !
!                                                                      !
! Modified BSD License                                                 !
!                                                                      !
! Copyright (C) 2009 GLE.                                              !
!                                                                      !
! Redistribution and use in source and binary forms, with or without   !
! modification, are permitted provided that the following conditions   !
! are met:                                                             !
!                                                                      !
!    1. Redistributions of source code must retain the above copyright !
! notice, this list of conditions and the following disclaimer.        !
!                                                                      !
!    2. Redistributions in binary form must reproduce the above        !
! copyright notice, this list of conditions and the following          !
! disclaimer in the documentation and/or other materials provided with !
! the distribution.                                                    !
!                                                                      !
!    3. The name of the author may not be used to endorse or promote   !
! products derived from this software without specific prior written   !
! permission.                                                          !
!                                                                      !
! THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR   !
! IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED       !
! WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE   !
! ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY       !
! DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL   !
! DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE    !
! GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS        !
! INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER !
! IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR      !
! OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN  !
! IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                        !
!                                                                      !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

! 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_segment fct$ from to tstep color$ lwidth
   default tstep  0.025
   default color  black
   default lwidth 0.02
   t = from
   r = eval(fct$)
   gsave
   set color color$ lwidth lwidth
   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
   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)
          local t = torad(dataxvalue(ds$,i))
          aline xg(r*cos(t)) yg(r*sin(t))
      next i
   else
     begin path stroke fill fill$
        local r = datayvalue(ds$,1)
        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