1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16if known metafun_loaded_grid : endinput ; fi ;
17
18newinternal boolean metafun_loaded_grid ; metafun_loaded_grid := true ; immutable metafun_loaded_grid ;
19
20string fmt_separator ; fmt_separator := "@" ;
21numeric fmt_precision ; fmt_precision := 3 ;
22boolean fmt_initialize ; fmt_initialize := false ;
23boolean fmt_zerocheck ; fmt_zerocheck := true ;
24
25if unknown fmt_loaded : input "mp-form.mpxl" ; fi ;
26
27boolean fmt_pictures ; fmt_pictures := true ;
28
29def do_format = if fmt_pictures : format else : formatstr fi enddef ;
30def do_mformat = if fmt_pictures : Mformat else : Mformatstr fi enddef ;
31
32numeric grid_eps ; grid_eps = eps ;
33
34def hlingrid (expr asked_min, asked_max, asked_step, asked_length, asked_width) text t =
35 image (
36 for i=asked_min step asked_step until asked_maxgrid_eps :
37 draw (origin--(asked_width,0)) shifted (0,i(asked_lengthasked_max)) t ;
38 endfor ;
39 ) ;
40enddef ;
41
42def vlingrid (expr asked_min, asked_max, asked_step, asked_length, asked_height) text t =
43 image (
44 for i=asked_min step asked_step until asked_maxgrid_eps :
45 draw (origin--(0,asked_height)) shifted (i(asked_lengthasked_max),0) t ;
46 endfor ;
47 ) ;
48enddef ;
49
50def hloggrid (expr asked_min, asked_max, asked_step, asked_length, asked_width) text t =
51 image (
52 for i=max(asked_min,1) step asked_step until min(asked_max,10)grid_eps :
53 draw (origin--(asked_width,0)) shifted (0,asked_lengthlog(i)) t ;
54 endfor ;
55 ) ;
56enddef ;
57
58def vloggrid (expr asked_min, asked_max, asked_step, asked_length, asked_height) text t =
59 image (
60 for i=max(asked_min,1) step asked_step until min(asked_max,10)grid_eps :
61 draw (origin--(0,asked_height)) shifted (asked_lengthlog(i),0) t ;
62 endfor ;
63 ) ;
64enddef ;
65
66vardef hlintext@#(expr asked_min, asked_max, asked_step, asked_length, asked_format) text t =
67 image (
68 for i=asked_min step asked_step until asked_maxgrid_eps :
69 draw textext@#(mfun_format_number(asked_format,i)) shifted (0,i(asked_lengthasked_max)) t ;
70 endfor ;
71 )
72enddef ;
73
74vardef vlintext@#(expr asked_min, asked_max, asked_step, asked_length, asked_format) text t =
75 image (
76 for i=asked_min step asked_step until asked_maxgrid_eps :
77 draw textext@#(mfun_format_number(asked_format,i)) shifted (i(asked_lengthasked_max),0) t ;
78 endfor ;
79 )
80enddef ;
81
82vardef hlogtext@#(expr asked_min, asked_max, asked_step, asked_length, asked_format) text t =
83 image (
84 for i=max(asked_min,1) step asked_step until min(asked_max,10)grid_eps :
85 draw textext@#(mfun_format_number(asked_format,i)) shifted (0,asked_lengthlog(i)) t ;
86 endfor ;
87 )
88enddef ;
89
90vardef vlogtext@#(expr asked_min, asked_max, asked_step, asked_length, asked_format) text t =
91 image (
92 for i=max(asked_min,1) step asked_step until min(asked_max,10)grid_eps :
93 draw textext@#(mfun_format_number(asked_format,i)) shifted (asked_lengthlog(i),0) t ;
94 endfor ;
95 )
96enddef ;
97
98vardef hlinlabel@#(expr asked_min, asked_max, asked_step, asked_length) text t =
99 image (
100 for i=asked_min step asked_step until asked_maxgrid_eps :
101 draw thelabel@#(decimal i,(0,i(asked_lengthasked_max))) t ;
102 endfor ;
103 )
104enddef ;
105
106vardef vlinlabel@#(expr asked_min, asked_max, asked_step, asked_length) text t =
107 image (
108 for i=asked_min step asked_step until asked_maxgrid_eps :
109 draw thelabel@#(decimal i,(i(asked_lengthasked_max),0)) t ;
110 endfor ;
111 )
112enddef ;
113
114
115
116vardef linlog(expr xy) = ( xpart xy, log(ypart xy)) enddef ;
117vardef loglin(expr xy) = (log(xpart xy), ypart xy) enddef ;
118vardef loglog(expr xy) = (log(xpart xy), log(ypart xy)) enddef ;
119vardef linlin(expr xy) = ( (xpart xy), (ypart xy)) enddef ;
120
121vardef loglinpath primary p = processpath (p) (loglin) enddef ;
122vardef linlogpath primary p = processpath (p) (linlog) enddef ;
123vardef loglogpath primary p = processpath (p) (loglog) enddef ;
124vardef linlinpath primary p = processpath (p) (linlin) enddef ;
125
126permanent hlingrid, vlingrid, hloggrid, vloggrid, hlintext, vlintext, hlogtext, vlogtext, hlinlabel, vlinlabel ;
127permanent linlog, loglin, loglog, linlin, loglinpath, linlogpath, loglogpath, linlinpath ;
128 |