- Timestamp:
- May 3, 2010, 8:50:52 AM (16 years ago)
- Location:
- branches/simtest_nebulous_branches
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/simtest_nebulous_branches
- Property svn:mergeinfo changed
-
branches/simtest_nebulous_branches/Ohana
-
Property svn:mergeinfo
set to (toggle deleted branches)
/trunk/Ohana merged eligible /branches/eam_branches/Ohana.20100407 27635-27772 /branches/pap_delete/Ohana 27530-27595
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
branches/simtest_nebulous_branches/Ohana/src/opihi/cmd.astro/cgrid.c
r20936 r27840 1 1 # include "astro.h" 2 # define CHECKELEMENTS \ 3 if (N == NELEMENTS) { \ 4 NELEMENTS +=200; \ 5 REALLOCATE (Xvec.elements.Flt, opihi_flt, NELEMENTS); \ 6 REALLOCATE (Yvec.elements.Flt, opihi_flt, NELEMENTS); \ 2 3 # define GRID_SPACING 0.002 4 5 # define CHECKELEMENTS \ 6 if (N == NELEMENTS) { \ 7 NELEMENTS +=200; \ 8 REALLOCATE (Xvec.elements.Flt, opihi_flt, NELEMENTS); \ 9 REALLOCATE (Yvec.elements.Flt, opihi_flt, NELEMENTS); \ 10 } 11 12 # define ADD_COORDINATE(RA,DEC) \ 13 status = RD_to_XY (&Xvec.elements.Flt[N], &Yvec.elements.Flt[N], (RA), (DEC), &graphmode.coords); \ 14 if ((Xvec.elements.Flt[N] >= graphmode.xmin) && (Xvec.elements.Flt[N] <= graphmode.xmax) && \ 15 (Yvec.elements.Flt[N] >= graphmode.ymin) && (Yvec.elements.Flt[N] <= graphmode.ymax) && status) { \ 16 N++; \ 17 CHECKELEMENTS; \ 18 OnPic = TRUE; \ 19 if (!First) { \ 20 Xvec.elements.Flt[N] = Xvec.elements.Flt[N-1]; \ 21 Yvec.elements.Flt[N] = Yvec.elements.Flt[N-1]; \ 22 N++; \ 23 CHECKELEMENTS; \ 24 } else { \ 25 if (N > 1) { \ 26 Xvec.elements.Flt[N-2] = Xvec.elements.Flt[N-1]; \ 27 Yvec.elements.Flt[N-2] = Yvec.elements.Flt[N-1]; \ 28 N--; \ 29 } \ 30 First = FALSE; \ 31 } \ 32 } else { \ 33 LOnPic = FALSE; \ 34 First = TRUE; \ 35 } 36 37 # define ADD_DEC_LINE(RA) \ 38 /* first, DEC increasing */ \ 39 LOnPic = TRUE; \ 40 OnPic = FALSE; \ 41 First = TRUE; \ 42 for (d = firstDEC; (d < 90 + dD) && (LOnPic || NorthPole || SouthPole); d += dD) { \ 43 D = MAX (-90, MIN(90, d)); \ 44 ADD_COORDINATE((RA), D); \ 45 } \ 46 /* next, DEC decreasing */ \ 47 First = TRUE; \ 48 LOnPic = TRUE; \ 49 for (d = firstDEC; (d > -90 - dD) && (LOnPic || NorthPole || SouthPole); d -= dD) { \ 50 D = MAX (-90, MIN(90, d)); \ 51 ADD_COORDINATE((RA), D); \ 52 } 53 54 # define ADD_RA_LINE(DEC) \ 55 D = MAX (-90, MIN(90, (DEC))); \ 56 /* first, RA increasing */ \ 57 LOnPic = TRUE; \ 58 OnPic = FALSE; \ 59 First = TRUE; \ 60 lastRA = graphmode.coords.crval1 + 180.0; \ 61 for (r = firstRA; (r < lastRA + dR) && (LOnPic || NorthPole || SouthPole); r += dR) { \ 62 R = MIN (r, lastRA); \ 63 ADD_COORDINATE(R, D); \ 64 } \ 65 /* next, RA decreasing */ \ 66 First = TRUE; \ 67 LOnPic = TRUE; \ 68 lastRA = graphmode.coords.crval1 - 180.0; \ 69 for (r = firstRA; (r > lastRA - dR) && (LOnPic || NorthPole || SouthPole); r -= dR) { \ 70 R = MAX (r, lastRA); \ 71 ADD_COORDINATE(R, D); \ 7 72 } 8 73 9 74 int cgrid (int argc, char **argv) { 10 75 11 double range, lrange, factor, mantis, power, fmantis;12 double firstRA, firstDEC, minorRA, minorDEC;13 double r, d, dR, dD, D;76 double range, minor, major; 77 double firstRA, lastRA, firstDEC, minorRA, minorDEC; 78 double r, d, dR, dD, R, D; 14 79 double x, y; 15 80 Vector Xvec, Yvec; 16 int kapa, NorthPole, SouthPole, N, OnPic, LOnPic, status, NELEMENTS, First; 81 int kapa, NorthPole, SouthPole, N, OnPic, LOnPic, status, NELEMENTS; 82 int First, RAbyHour, Labels; 17 83 Graphdata graphmode; 84 85 RAbyHour = FALSE; 86 if ((N = get_argument (argc, argv, "-ra-by-hour"))) { 87 remove_argument (N, &argc, argv); 88 RAbyHour = TRUE; 89 } 90 91 Labels = FALSE; 92 if ((N = get_argument (argc, argv, "-labels"))) { 93 remove_argument (N, &argc, argv); 94 Labels = TRUE; 95 } 18 96 19 97 if (!style_args (&graphmode, &argc, argv, &kapa)) return FALSE; … … 37 115 /* set spacings for RA */ 38 116 minorRA = minorDEC = 0.1; 39 range = MIN (fabs(graphmode. xmax-graphmode.xmin), fabs(graphmode.ymax-graphmode.ymin));117 range = MIN (fabs(graphmode.coords.cdelt1*(graphmode.xmax-graphmode.xmin)), fabs(graphmode.coords.cdelt2*(graphmode.ymax-graphmode.ymin))); 40 118 if (NorthPole || SouthPole) range = 360; 41 lrange = log10(MAX(fabs(range), 1e-30)); 42 factor = (int) (lrange); 43 if (lrange < 0) { factor -= 1; } 44 mantis = lrange - factor; 45 power = pow(10.0, factor); 46 fmantis = pow(10.0, mantis); 47 if ((fmantis >= 1.0) && (fmantis <= 2.0)) { 48 minorRA = 0.1 * power; 49 } 50 if ((fmantis > 2.0) && (fmantis <= 4.0)) { 51 minorRA = 0.2 * power; 52 } 53 if ((fmantis > 4.0) && (fmantis <= 6.0)) { 54 minorRA = 0.5 * power; 55 } 56 if ((fmantis > 6.0) && (fmantis <= 10.0)) { 57 minorRA = 0.5 * power; 58 } 59 dR = range / 100.0; 119 120 if (RAbyHour) { 121 SetGridScales (&major, &minor, range / 15.0); 122 minorRA = minor * 15.0; 123 } else { 124 SetGridScales (&major, &minor, range); 125 minorRA = minor; 126 } 127 dR = range * GRID_SPACING; 128 60 129 /* set spacings for DEC */ 61 range = MIN (fabs(graphmode.xmax-graphmode.xmin), fabs(graphmode.ymax-graphmode.ymin)); 62 lrange = log10(MAX(fabs(range), 1e-30)); 63 factor = (int) (lrange); 64 if (lrange < 0) { factor -= 1; } 65 mantis = lrange - factor; 66 power = pow(10.0, factor); 67 fmantis = pow(10.0, mantis); 68 if ((fmantis >= 1.0) && (fmantis <= 2.0)) { 69 minorDEC = 0.1 * power; 70 } 71 if ((fmantis > 2.0) && (fmantis <= 4.0)) { 72 minorDEC = 0.2 * power; 73 } 74 if ((fmantis > 4.0) && (fmantis <= 6.0)) { 75 minorDEC = 0.5 * power; 76 } 77 if ((fmantis > 6.0) && (fmantis <= 10.0)) { 78 minorDEC = 0.5 * power; 79 } 80 dD = range / 100.0; 130 range = MIN (fabs(graphmode.coords.cdelt1*(graphmode.xmax-graphmode.xmin)), fabs(graphmode.coords.cdelt2*(graphmode.ymax-graphmode.ymin))); 131 SetGridScales (&major, &minor, range); 132 minorDEC = minor; 133 dD = range * GRID_SPACING; 81 134 82 135 /* choose a starting point */ … … 102 155 /*** do consecutive RA lines, first increasing **/ 103 156 OnPic = TRUE; 104 for (r = firstRA; (r <= firstRA + 180) && (OnPic); r += minorRA) { 105 /* first, DEC increasing */ 106 LOnPic = TRUE; 107 OnPic = FALSE; 108 First = TRUE; 109 for (d = firstDEC; (d < 90 + dD) && (LOnPic || NorthPole || SouthPole); d += dD) { 110 D = MAX (-90, MIN(90, d)); 111 status = RD_to_XY (&Xvec.elements.Flt[N], &Yvec.elements.Flt[N], r, D, &graphmode.coords); 112 /* 113 if ((fabs(Xvec.elements.Flt[N] - Xvec.elements.Flt[N-1]) > 10) && (fabs(Yvec.elements.Flt[N] - Yvec.elements.Flt[N-1]) > 10)) 114 First = TRUE; 115 */ 116 if ((Xvec.elements.Flt[N] >= graphmode.xmin) && (Xvec.elements.Flt[N] <= graphmode.xmax) && 117 (Yvec.elements.Flt[N] >= graphmode.ymin) && (Yvec.elements.Flt[N] <= graphmode.ymax) && status) { 118 N++; 119 CHECKELEMENTS; 120 OnPic = TRUE; 121 if (!First) { 122 Xvec.elements.Flt[N] = Xvec.elements.Flt[N-1]; 123 Yvec.elements.Flt[N] = Yvec.elements.Flt[N-1]; 124 N++; 125 CHECKELEMENTS; 126 } else { 127 if (N > 1) { 128 Xvec.elements.Flt[N-2] = Xvec.elements.Flt[N-1]; 129 Yvec.elements.Flt[N-2] = Yvec.elements.Flt[N-1]; 130 N--; 131 } 132 First = FALSE; 133 } 157 lastRA = graphmode.coords.crval1 + 180.0; 158 for (r = firstRA; (r <= lastRA) && (OnPic); r += minorRA) { 159 ADD_DEC_LINE (r); 160 } 161 if (r != lastRA) { 162 ADD_DEC_LINE (lastRA); 163 } 164 165 /*** do consecutive RA lines, decreasing **/ 166 OnPic = TRUE; 167 lastRA = graphmode.coords.crval1 - 180.0; 168 for (r = firstRA; (r >= lastRA) && (OnPic); r -= minorRA) { 169 ADD_DEC_LINE (r); 170 } 171 if (r != lastRA) { 172 ADD_DEC_LINE (lastRA); 173 } 174 175 /*** do consecutive DEC lines, first increasing **/ 176 OnPic = TRUE; 177 for (d = firstDEC; (d < 90 + dD) && (OnPic); d += minorDEC) { 178 ADD_RA_LINE (d); 179 } 180 181 /*** do consecutive DEC lines, decreasing **/ 182 OnPic = TRUE; 183 for (d = firstDEC; (d > -90 - dD) && (OnPic); d -= minorDEC) { 184 ADD_RA_LINE (d); 185 } 186 187 // add labels for center lines: 188 if (Labels) { 189 char line[16], format[8]; 190 double xt, yt, dx, dy, frac; 191 dx = +0.01 * (graphmode.xmax - graphmode.xmin); 192 dy = -0.02 * (graphmode.ymax - graphmode.ymin); 193 194 for (r = firstRA; r <= graphmode.coords.crval1 + 180.0; r += minorRA) { 195 status = RD_to_XY (&xt, &yt, r, graphmode.coords.crval2, &graphmode.coords); 196 if (!status) continue; 197 if (xt < graphmode.xmin) continue; 198 if (xt > graphmode.xmax) continue; 199 if (yt < graphmode.ymin) continue; 200 if (yt > graphmode.ymax) continue; 201 frac = -1.0 * log10(minorRA); 202 if (frac != (int)frac) { 203 frac += 1.0; 204 } 205 if (frac <= 0.0) frac = 0.0; 206 snprintf (format, 8, "%%.%df", (int) frac); 207 if (RAbyHour) { 208 snprintf (line, 16, format, r / 15.0); 134 209 } else { 135 LOnPic = FALSE; 136 First = TRUE; 137 } 138 } 139 /* next, DEC decreasing */ 140 First = TRUE; 141 LOnPic = TRUE; 142 for (d = firstDEC; (d > -90 - dD) && (LOnPic || NorthPole || SouthPole); d -= dD) { 143 D = MAX (-90, MIN(90, d)); 144 status = RD_to_XY (&Xvec.elements.Flt[N], &Yvec.elements.Flt[N], r, D, &graphmode.coords); 145 /* 146 if ((fabs(Xvec.elements.Flt[N] - Xvec.elements.Flt[N-1]) > 10) && (fabs(Yvec.elements.Flt[N] - Yvec.elements.Flt[N-1]) > 10)) 147 First = TRUE; 148 */ 149 if ((Xvec.elements.Flt[N] >= graphmode.xmin) && (Xvec.elements.Flt[N] <= graphmode.xmax) && 150 (Yvec.elements.Flt[N] >= graphmode.ymin) && (Yvec.elements.Flt[N] <= graphmode.ymax) && status) { 151 N++; 152 CHECKELEMENTS; 153 OnPic = TRUE; 154 if (!First) { 155 Xvec.elements.Flt[N] = Xvec.elements.Flt[N-1]; 156 Yvec.elements.Flt[N] = Yvec.elements.Flt[N-1]; 157 N++; 158 CHECKELEMENTS; 159 } else { 160 if (N > 1) { 161 Xvec.elements.Flt[N-2] = Xvec.elements.Flt[N-1]; 162 Yvec.elements.Flt[N-2] = Yvec.elements.Flt[N-1]; 163 N--; 164 } 165 First = FALSE; 166 } 210 snprintf (line, 16, format, r); 211 } 212 KapaSendTextline (kapa, line, xt + dx, yt + dy, 0.0); 213 } 214 for (r = firstRA; r >= graphmode.coords.crval1 - 180.0; r -= minorRA) { 215 status = RD_to_XY (&xt, &yt, r, graphmode.coords.crval2, &graphmode.coords); 216 if (!status) continue; 217 if (xt < graphmode.xmin) continue; 218 if (xt > graphmode.xmax) continue; 219 if (yt < graphmode.ymin) continue; 220 if (yt > graphmode.ymax) continue; 221 frac = -1.0 * log10(minorRA); 222 if (frac != (int)frac) { 223 frac += 1.0; 224 } 225 if (frac <= 0.0) frac = 0.0; 226 snprintf (format, 8, "%%.%df", (int) frac); 227 if (RAbyHour) { 228 snprintf (line, 16, format, r / 15.0); 167 229 } else { 168 LOnPic = FALSE; 169 First = TRUE; 170 } 171 } 172 } 173 174 /*** do consecutive RA lines, decreasing **/ 175 OnPic = TRUE; 176 for (r = firstRA; (r >= firstRA - 180) && (OnPic); r -= minorRA) { 177 /* first, DEC increasing */ 178 First = TRUE; 179 LOnPic = TRUE; 180 OnPic = FALSE; 181 for (d = firstDEC; (d < 90 + dD) && (LOnPic || NorthPole || SouthPole); d += dD) { 182 D = MAX (-90, MIN(90, d)); 183 status = RD_to_XY (&Xvec.elements.Flt[N], &Yvec.elements.Flt[N], r, D, &graphmode.coords); 184 /* 185 if ((fabs(Xvec.elements.Flt[N] - Xvec.elements.Flt[N-1]) > 10) && (fabs(Yvec.elements.Flt[N] - Yvec.elements.Flt[N-1]) > 10)) 186 First = TRUE; 187 */ 188 if ((Xvec.elements.Flt[N] >= graphmode.xmin) && (Xvec.elements.Flt[N] <= graphmode.xmax) && 189 (Yvec.elements.Flt[N] >= graphmode.ymin) && (Yvec.elements.Flt[N] <= graphmode.ymax) && status) { 190 N++; 191 CHECKELEMENTS; 192 OnPic = TRUE; 193 if (!First) { 194 Xvec.elements.Flt[N] = Xvec.elements.Flt[N-1]; 195 Yvec.elements.Flt[N] = Yvec.elements.Flt[N-1]; 196 N++; 197 CHECKELEMENTS; 198 } else { 199 if (N > 1) { 200 Xvec.elements.Flt[N-2] = Xvec.elements.Flt[N-1]; 201 Yvec.elements.Flt[N-2] = Yvec.elements.Flt[N-1]; 202 N--; 203 } 204 First = FALSE; 205 } 206 } else { 207 LOnPic = FALSE; 208 First = TRUE; 209 } 210 } 211 /* next, DEC decreasing */ 212 First = TRUE; 213 LOnPic = TRUE; 214 for (d = firstDEC; (d > -90 - dD) && (LOnPic || NorthPole || SouthPole); d -= dD) { 215 D = MAX (-90, MIN(90, d)); 216 status = RD_to_XY (&Xvec.elements.Flt[N], &Yvec.elements.Flt[N], r, D, &graphmode.coords); 217 /* 218 if ((fabs(Xvec.elements.Flt[N] - Xvec.elements.Flt[N-1]) > 10) && (fabs(Yvec.elements.Flt[N] - Yvec.elements.Flt[N-1]) > 10)) 219 First = TRUE; 220 */ 221 if ((Xvec.elements.Flt[N] >= graphmode.xmin) && (Xvec.elements.Flt[N] <= graphmode.xmax) && 222 (Yvec.elements.Flt[N] >= graphmode.ymin) && (Yvec.elements.Flt[N] <= graphmode.ymax) && status) { 223 N++; 224 CHECKELEMENTS; 225 OnPic = TRUE; 226 if (!First) { 227 Xvec.elements.Flt[N] = Xvec.elements.Flt[N-1]; 228 Yvec.elements.Flt[N] = Yvec.elements.Flt[N-1]; 229 N++; 230 CHECKELEMENTS; 231 } else { 232 if (N > 1) { 233 Xvec.elements.Flt[N-2] = Xvec.elements.Flt[N-1]; 234 Yvec.elements.Flt[N-2] = Yvec.elements.Flt[N-1]; 235 N--; 236 } 237 First = FALSE; 238 } 239 } else { 240 LOnPic = FALSE; 241 First = TRUE; 242 } 243 } 244 } 245 246 /*** do consecutive DEC lines, first increasing **/ 247 OnPic = TRUE; 248 for (d = firstDEC; (d < 90 + dD) && (OnPic); d += minorDEC) { 249 D = MAX (-90, MIN(90, d)); 250 /* first, RA increasing */ 251 LOnPic = TRUE; 252 OnPic = FALSE; 253 First = TRUE; 254 for (r = firstRA; (r < firstRA + 180) && (LOnPic || NorthPole || SouthPole); r += dR) { 255 status = RD_to_XY (&Xvec.elements.Flt[N], &Yvec.elements.Flt[N], r, D, &graphmode.coords); 256 /* 257 if ((fabs(Xvec.elements.Flt[N] - Xvec.elements.Flt[N-1]) > 10) && (fabs(Yvec.elements.Flt[N] - Yvec.elements.Flt[N-1]) > 10)) 258 First = TRUE; 259 */ 260 if ((Xvec.elements.Flt[N] >= graphmode.xmin) && (Xvec.elements.Flt[N] <= graphmode.xmax) && 261 (Yvec.elements.Flt[N] >= graphmode.ymin) && (Yvec.elements.Flt[N] <= graphmode.ymax) && status) { 262 N++; 263 CHECKELEMENTS; 264 OnPic = TRUE; 265 if (!First) { 266 Xvec.elements.Flt[N] = Xvec.elements.Flt[N-1]; 267 Yvec.elements.Flt[N] = Yvec.elements.Flt[N-1]; 268 N++; 269 CHECKELEMENTS; 270 } else { 271 if (N > 1) { 272 Xvec.elements.Flt[N-2] = Xvec.elements.Flt[N-1]; 273 Yvec.elements.Flt[N-2] = Yvec.elements.Flt[N-1]; 274 N--; 275 } 276 First = FALSE; 277 } 278 } else { 279 LOnPic = FALSE; 280 First = TRUE; 281 } 282 } 283 /* next, RA decreasing */ 284 First = TRUE; 285 LOnPic = TRUE; 286 for (r = firstRA; (r > firstRA - 180) && (LOnPic || NorthPole || SouthPole); r -= dR) { 287 status = RD_to_XY (&Xvec.elements.Flt[N], &Yvec.elements.Flt[N], r, D, &graphmode.coords); 288 /* 289 if ((fabs(Xvec.elements.Flt[N] - Xvec.elements.Flt[N-1]) > 10) && (fabs(Yvec.elements.Flt[N] - Yvec.elements.Flt[N-1]) > 10)) 290 First = TRUE; 291 */ 292 if ((Xvec.elements.Flt[N] >= graphmode.xmin) && (Xvec.elements.Flt[N] <= graphmode.xmax) && 293 (Yvec.elements.Flt[N] >= graphmode.ymin) && (Yvec.elements.Flt[N] <= graphmode.ymax) && status) { 294 N++; 295 CHECKELEMENTS; 296 OnPic = TRUE; 297 if (!First) { 298 Xvec.elements.Flt[N] = Xvec.elements.Flt[N-1]; 299 Yvec.elements.Flt[N] = Yvec.elements.Flt[N-1]; 300 N++; 301 CHECKELEMENTS; 302 } else { 303 if (N > 1) { 304 Xvec.elements.Flt[N-2] = Xvec.elements.Flt[N-1]; 305 Yvec.elements.Flt[N-2] = Yvec.elements.Flt[N-1]; 306 N--; 307 } 308 First = FALSE; 309 } 310 } else { 311 LOnPic = FALSE; 312 First = TRUE; 313 } 314 } 315 } 316 317 /*** do consecutive DEC lines, decreasing **/ 318 OnPic = TRUE; 319 for (d = firstDEC; (d > -90 - dD) && (OnPic); d -= minorDEC) { 320 D = MAX (-90, MIN(90, d)); 321 /* first, RA increasing */ 322 LOnPic = TRUE; 323 OnPic = FALSE; 324 First = TRUE; 325 for (r = firstRA; (r < firstRA + 180) && (LOnPic || NorthPole || SouthPole); r += dR) { 326 status = RD_to_XY (&Xvec.elements.Flt[N], &Yvec.elements.Flt[N], r, D, &graphmode.coords); 327 /* 328 if ((fabs(Xvec.elements.Flt[N] - Xvec.elements.Flt[N-1]) > 10) && (fabs(Yvec.elements.Flt[N] - Yvec.elements.Flt[N-1]) > 10)) 329 First = TRUE; 330 */ 331 if ((Xvec.elements.Flt[N] >= graphmode.xmin) && (Xvec.elements.Flt[N] <= graphmode.xmax) && 332 (Yvec.elements.Flt[N] >= graphmode.ymin) && (Yvec.elements.Flt[N] <= graphmode.ymax) && status) { 333 N++; 334 CHECKELEMENTS; 335 OnPic = TRUE; 336 if (!First) { 337 Xvec.elements.Flt[N] = Xvec.elements.Flt[N-1]; 338 Yvec.elements.Flt[N] = Yvec.elements.Flt[N-1]; 339 N++; 340 CHECKELEMENTS; 341 } else { 342 if (N > 1) { 343 Xvec.elements.Flt[N-2] = Xvec.elements.Flt[N-1]; 344 Yvec.elements.Flt[N-2] = Yvec.elements.Flt[N-1]; 345 N--; 346 } 347 First = FALSE; 348 } 349 } else { 350 LOnPic = FALSE; 351 First = TRUE; 352 } 353 } 354 /* next, RA decreasing */ 355 First = TRUE; 356 LOnPic = TRUE; 357 for (r = firstRA; (r > firstRA - 180) && (LOnPic || NorthPole || SouthPole); r -= dR) { 358 status = RD_to_XY (&Xvec.elements.Flt[N], &Yvec.elements.Flt[N], r, D, &graphmode.coords); 359 /* 360 if ((fabs(Xvec.elements.Flt[N] - Xvec.elements.Flt[N-1]) > 10) && (fabs(Yvec.elements.Flt[N] - Yvec.elements.Flt[N-1]) > 10)) 361 First = TRUE; 362 */ 363 if ((Xvec.elements.Flt[N] >= graphmode.xmin) && (Xvec.elements.Flt[N] <= graphmode.xmax) && 364 (Yvec.elements.Flt[N] >= graphmode.ymin) && (Yvec.elements.Flt[N] <= graphmode.ymax) && status) { 365 N++; 366 CHECKELEMENTS; 367 OnPic = TRUE; 368 if (!First) { 369 Xvec.elements.Flt[N] = Xvec.elements.Flt[N-1]; 370 Yvec.elements.Flt[N] = Yvec.elements.Flt[N-1]; 371 N++; 372 CHECKELEMENTS; 373 } else { 374 if (N > 1) { 375 Xvec.elements.Flt[N-2] = Xvec.elements.Flt[N-1]; 376 Yvec.elements.Flt[N-2] = Yvec.elements.Flt[N-1]; 377 N--; 378 } 379 First = FALSE; 380 } 381 } else { 382 LOnPic = FALSE; 383 First = TRUE; 384 } 385 } 386 } 387 230 snprintf (line, 16, format, r); 231 } 232 KapaSendTextline (kapa, line, xt + dx, yt + dy, 0.0); 233 } 234 for (d = firstDEC; d <= graphmode.coords.crval2 + 90.0; d += minorDEC) { 235 status = RD_to_XY (&xt, &yt, graphmode.coords.crval1, d, &graphmode.coords); 236 if (!status) continue; 237 if (xt < graphmode.xmin) continue; 238 if (xt > graphmode.xmax) continue; 239 if (yt < graphmode.ymin) continue; 240 if (yt > graphmode.ymax) continue; 241 frac = -1.0 * log10(minorDEC); 242 if (frac != (int)frac) { 243 frac += 1.0; 244 } 245 if (frac <= 0.0) frac = 0.0; 246 snprintf (format, 8, "%%.%df", (int) frac); 247 snprintf (line, 16, format, d); 248 KapaSendTextline (kapa, line, xt + dx, yt + dy, 0.0); 249 } 250 for (d = firstDEC; d >= graphmode.coords.crval2 - 90.0; d -= minorDEC) { 251 status = RD_to_XY (&xt, &yt, graphmode.coords.crval1, d, &graphmode.coords); 252 if (!status) continue; 253 if (xt < graphmode.xmin) continue; 254 if (xt > graphmode.xmax) continue; 255 if (yt < graphmode.ymin) continue; 256 if (yt > graphmode.ymax) continue; 257 frac = -1.0 * log10(minorDEC); 258 if (frac != (int)frac) { 259 frac += 1.0; 260 } 261 if (frac <= 0.0) frac = 0.0; 262 snprintf (format, 8, "%%.%df", (int) frac); 263 snprintf (line, 16, format, d); 264 KapaSendTextline (kapa, line, xt + dx, yt + dy, 0.0); 265 } 266 } 267 388 268 /* send the line segments as connect-points */ 389 269 Xvec.Nelements = Yvec.Nelements = N;
Note:
See TracChangeset
for help on using the changeset viewer.
