- Timestamp:
- Feb 8, 2009, 5:32:23 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/cnb_branch_20090113/psModules/src/extras/pmVisual.c
r21208 r21421 33 33 *kapid = KapaOpenNamedSocket("kapa", name); 34 34 if (*kapid == -1) { 35 fprintf (stderr, " failure to open kapa; visual mode disabled.\n");35 fprintf (stderr, "Failure to open kapa.\n"); 36 36 return false; 37 37 } … … 181 181 182 182 183 bool pmVisualResidPlot (psArray *rawstars, psArray *refstars, psArray *match, psMetadata *recipe,184 char *title, int *kapa, int *kapa2) {185 186 //set up the first window187 if (!pmVisualInitWindow(kapa, "plots")) return false;188 189 //initialize graph information190 Graphdata graphdata;191 KapaSection section;192 193 KapaInitGraph (&graphdata);194 KapaClearPlots (*kapa);195 196 graphdata.color = KapaColorByName ("black");197 graphdata.ptype = 7;198 graphdata.size = 0.5;199 graphdata.style = 2;200 201 section.dx = 0.4;202 section.dy = 0.4;203 204 //initialize and populate the plotting vectors205 bool status = false;206 float iMagMin = psMetadataLookupF32 (&status, recipe, "PSASTRO.PLOT.INST.MAG.MIN");207 float iMagMax = psMetadataLookupF32 (&status, recipe, "PSASTRO.PLOT.INST.MAG.MAX");208 float rMagMin = psMetadataLookupF32 (&status, recipe, "PSASTRO.PLOT.REF.MAG.MIN");209 float rMagMax = psMetadataLookupF32 (&status, recipe, "PSASTRO.PLOT.REF.MAG.MAX");210 211 psVector *xVec = psVectorAlloc (match->n, PS_TYPE_F32);212 psVector *yVec = psVectorAlloc (match->n, PS_TYPE_F32);213 psVector *zVec = psVectorAlloc (match->n, PS_TYPE_F32);214 215 // X vs dX216 section.x = 0.0;217 section.y = 0.5;218 section.name = NULL;219 psStringAppend (§ion.name, "a0");220 KapaSetSection (*kapa, §ion);221 psFree (section.name);222 223 int n = 0;224 for (int i = 0; i < match->n; i++) {225 pmAstromMatch *pair = match->data[i];226 pmAstromObj *raw = rawstars->data[pair->raw];227 pmAstromObj *ref = refstars->data[pair->ref];228 229 if (!isfinite(raw->Mag)) continue;230 if (raw->Mag < iMagMin) continue;231 if (raw->Mag > iMagMax) continue;232 if (ref->Mag < rMagMin) continue;233 if (ref->Mag > rMagMax) continue;234 235 xVec->data.F32[n] = raw->chip->x;236 yVec->data.F32[n] = raw->chip->x - ref->chip->x;237 zVec->data.F32[n] = raw->Mag;238 n++;239 }240 xVec->n = yVec->n = zVec->n = n;241 242 KapaSendLabel (*kapa, "X", KAPA_LABEL_XM);243 KapaSendLabel (*kapa, "dX", KAPA_LABEL_YM);244 pmVisualTriplePlot (*kapa, &graphdata, xVec, yVec, zVec, false);245 246 // X vs dY247 section.x = 0.5;248 section.y = 0.5;249 section.name = NULL;250 psStringAppend (§ion.name, "a1");251 KapaSetSection (*kapa, §ion);252 psFree (section.name);253 254 n = 0;255 for (int i = 0; i < match->n; i++) {256 pmAstromMatch *pair = match->data[i];257 pmAstromObj *raw = rawstars->data[pair->raw];258 pmAstromObj *ref = refstars->data[pair->ref];259 260 if (!isfinite(raw->Mag)) continue;261 if (raw->Mag < iMagMin) continue;262 if (raw->Mag > iMagMax) continue;263 if (ref->Mag < rMagMin) continue;264 if (ref->Mag > rMagMax) continue;265 266 xVec->data.F32[n] = raw->chip->x;267 yVec->data.F32[n] = raw->chip->y - ref->chip->y;268 zVec->data.F32[n] = raw->Mag;269 n++;270 }271 xVec->n = yVec->n = zVec->n = n;272 273 KapaSendLabel (*kapa, "X", KAPA_LABEL_XM);274 KapaSendLabel (*kapa, "dY", KAPA_LABEL_YM);275 pmVisualTriplePlot (*kapa, &graphdata, xVec, yVec, zVec, false);276 277 // Y vs dX278 section.x = 0.0;279 section.y = 0.0;280 section.name = NULL;281 psStringAppend (§ion.name, "a2");282 KapaSetSection (*kapa, §ion);283 psFree (section.name);284 285 n = 0;286 for (int i = 0; i < match->n; i++) {287 pmAstromMatch *pair = match->data[i];288 pmAstromObj *raw = rawstars->data[pair->raw];289 pmAstromObj *ref = refstars->data[pair->ref];290 291 if (!isfinite(raw->Mag)) continue;292 if (raw->Mag < iMagMin) continue;293 if (raw->Mag > iMagMax) continue;294 if (ref->Mag < rMagMin) continue;295 if (ref->Mag > rMagMax) continue;296 297 xVec->data.F32[n] = raw->chip->y;298 yVec->data.F32[n] = raw->chip->x - ref->chip->x;299 zVec->data.F32[n] = raw->Mag;300 n++;301 }302 xVec->n = yVec->n = zVec->n = n;303 304 KapaSendLabel (*kapa, "Y", KAPA_LABEL_XM);305 KapaSendLabel (*kapa, "dX", KAPA_LABEL_YM);306 pmVisualTriplePlot (*kapa, &graphdata, xVec, yVec, zVec, false);307 308 // Y vs dY309 section.x = 0.5;310 section.y = 0.0;311 section.name = NULL;312 psStringAppend (§ion.name, "a3");313 KapaSetSection (*kapa, §ion);314 psFree (section.name);315 316 n = 0;317 for (int i = 0; i < match->n; i++) {318 pmAstromMatch *pair = match->data[i];319 pmAstromObj *raw = rawstars->data[pair->raw];320 pmAstromObj *ref = refstars->data[pair->ref];321 322 if (!isfinite(raw->Mag)) continue;323 if (raw->Mag < iMagMin) continue;324 if (raw->Mag > iMagMax) continue;325 if (ref->Mag < rMagMin) continue;326 if (ref->Mag > rMagMax) continue;327 328 xVec->data.F32[n] = raw->chip->y;329 yVec->data.F32[n] = raw->chip->y - ref->chip->y;330 zVec->data.F32[n] = raw->Mag;331 n++;332 }333 xVec->n = yVec->n = zVec->n = n;334 335 KapaSendLabel (*kapa, "Y", KAPA_LABEL_XM);336 KapaSendLabel (*kapa, "dY", KAPA_LABEL_YM);337 pmKapaPlotVectorTriple_AutoLimits_OpenGraph (*kapa, &graphdata, xVec, yVec, zVec, false);338 339 section.x = 0.0;340 section.y = 0.0;341 section.dx = 0.95;342 section.dy = 0.95;343 section.name = NULL;344 psStringAppend (§ion.name, "a5");345 KapaSetSection (*kapa, §ion);346 KapaSendLabel (*kapa, title, KAPA_LABEL_XP);347 psFree (section.name);348 349 350 // X vs Y plot (different window)351 if (!pmVisualInitWindow( kapa2, "psastro:plots"))352 return false;353 354 KapaInitGraph (&graphdata);355 KapaClearPlots (*kapa2);356 357 graphdata.color = KapaColorByName ("black");358 graphdata.ptype = 2;359 graphdata.style = 2;360 361 psFree (xVec);362 psFree (yVec);363 psFree (zVec);364 365 xVec = psVectorAlloc (rawstars->n, PS_TYPE_F32);366 yVec = psVectorAlloc (rawstars->n, PS_TYPE_F32);367 zVec = psVectorAlloc (rawstars->n, PS_TYPE_F32);368 369 // X vs Y by mag (raw)370 n = 0;371 for (int i = 0; i < rawstars->n; i++) {372 pmAstromObj *raw = rawstars->data[i];373 if (!isfinite(raw->Mag)) continue;374 if (raw->Mag < iMagMin) continue;375 if (raw->Mag > iMagMax) continue;376 377 xVec->data.F32[n] = raw->chip->x;378 yVec->data.F32[n] = raw->chip->y;379 zVec->data.F32[n] = raw->Mag;380 n++;381 }382 xVec->n = yVec->n = zVec->n = n;383 384 KapaSendLabel (*kapa2, "X", KAPA_LABEL_XM);385 KapaSendLabel (*kapa2, "Y", KAPA_LABEL_YM);386 KapaSendLabel (*kapa2,387 "Chip Coordinates. Black = Raw Stars. Red = Ref Stars. Blue = Matched Stars"388 , KAPA_LABEL_XP);389 pmVisualTriplePlot (*kapa2, &graphdata, xVec, yVec, zVec, false);390 391 // X vs Y by mag (ref)392 psFree (xVec);393 psFree (yVec);394 psFree (zVec);395 396 xVec = psVectorAlloc (refstars->n, PS_TYPE_F32);397 yVec = psVectorAlloc (refstars->n, PS_TYPE_F32);398 zVec = psVectorAlloc (refstars->n, PS_TYPE_F32);399 400 graphdata.color = KapaColorByName ("red");401 graphdata.ptype = 7;402 graphdata.style = 2;403 404 n = 0;405 for (int i = 0; i < refstars->n; i++) {406 pmAstromObj *ref = refstars->data[i];407 if (!isfinite(ref->Mag)) continue;408 if (ref->Mag < rMagMin) continue;409 if (ref->Mag > rMagMax) continue;410 411 xVec->data.F32[n] = ref->chip->x;412 yVec->data.F32[n] = ref->chip->y;413 zVec->data.F32[n] = ref->Mag;414 n++;415 }416 xVec->n = yVec->n = zVec->n = n;417 pmVisualTripleOverplot (*kapa2, &graphdata, xVec, yVec, zVec, false);418 419 //rescale the graph to include all points420 float xmin = graphdata.xmin;421 float ymin = graphdata.ymin;422 float xmax = graphdata.xmax;423 float ymax = graphdata.ymax;424 pmVisualScaleGraphdata(&graphdata, xVec, yVec, true);425 graphdata.xmin = PS_MIN(xmin, graphdata.xmin);426 graphdata.ymin = PS_MIN(ymin, graphdata.ymin);427 graphdata.xmax = PS_MAX(xmax, graphdata.xmax);428 graphdata.ymax = PS_MAX(ymax, graphdata.ymax);429 KapaSetLimits (*kapa2, &graphdata);430 431 //overplot matched stars in blue432 psFree (xVec);433 psFree (yVec);434 psFree (zVec);435 436 xVec = psVectorAlloc (match->n, PS_TYPE_F32);437 yVec = psVectorAlloc (match->n, PS_TYPE_F32);438 zVec = psVectorAlloc (match->n, PS_TYPE_F32);439 440 graphdata.color = KapaColorByName ("blue");441 n = 0;442 for (int i = 0; i < match->n; i++) {443 pmAstromMatch *pair = match->data[i];444 pmAstromObj *raw = rawstars->data[pair->raw];445 pmAstromObj *ref = refstars->data[pair->ref];446 if (raw->Mag < iMagMin) continue;447 if (raw->Mag > iMagMax) continue;448 if (ref->Mag < rMagMin) continue;449 if (ref->Mag > rMagMax) continue;450 451 xVec->data.F32[n] = raw->chip->x;452 yVec->data.F32[n] = raw->chip->y;453 zVec->data.F32[n] = iMagMin;454 n++;455 }456 xVec->n = yVec->n = zVec->n = n;457 pmVisualTripleOverplot (*kapa2, &graphdata, xVec, yVec, zVec, false);458 459 psFree (xVec);460 psFree (yVec);461 psFree (zVec);462 return true;463 }464 465 466 183 bool pmVisualScaleImage(int kapaFD, psImage *inImage, const char *name, int channel, bool clip) { 467 184
Note:
See TracChangeset
for help on using the changeset viewer.
