IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 17, 2009, 12:07:42 PM (17 years ago)
Author:
beaumont
Message:

merged with head

Location:
branches/cnb_branches/cnb_branch_20090301/psModules
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/cnb_branches/cnb_branch_20090301/psModules

  • branches/cnb_branches/cnb_branch_20090301/psModules/src/objects/pmSourceVisual.c

    r21183 r23351  
    77#include "pmSourceVisual.h"
    88
    9 # if (HAVE_KAPA)
    10 # include <kapa.h>
     9#if (HAVE_KAPA)
     10#include <kapa.h>
     11#include "pmVisual.h"
    1112
    1213// functions used to visualize the analysis as it goes
    1314// these are invoked by the -visual options
    1415
    15 static bool isVisual = false;
    1616static int kapa1 = -1;
     17static bool plotPSF = true;
    1718// static int kapa2 = -1;
    1819// static int kapa3 = -1;
    1920
     21bool pmSourceVisualClose() {
     22    if (kapa1 != -1)
     23        KiiClose(kapa1);
     24    return true;
     25}
     26
    2027bool pmSourcePlotPoints3D (int myKapa, Graphdata *graphdata, psVector *xn, psVector *yn, psVector *zn, float theta, float phi);
    2128
    22 bool pmSourceSetVisual (bool mode) {
    23 
    24     isVisual = mode;
    25     return true;
    26 }
    2729
    2830bool pmSourceVisualPSFModelResid (pmTrend2D *trend, psVector *x, psVector *y, psVector *param, psVector *mask) {
    2931
    30     KapaSection section;  // put the positive profile in one and the residuals in another? 
     32    KapaSection section;  // put the positive profile in one and the residuals in another?
    3133
    3234    Graphdata graphdata;
    3335
    34     if (!isVisual) return true;
     36    if (!pmVisualIsVisual() || !plotPSF) return true;
    3537
    3638    if (kapa1 == -1) {
    3739        kapa1 = KapaOpenNamedSocket ("kapa", "pmSource:plots");
    38         if (kapa1 == -1) {
    39             fprintf (stderr, "failure to open kapa; visual mode disabled\n");
    40             isVisual = false;
    41             return false;
    42         }
    43     } 
     40        if (kapa1 == -1) {
     41            fprintf (stderr, "failure to open kapa; visual mode disabled\n");
     42            pmVisualSetVisual(false);
     43            return false;
     44        }
     45    }
    4446
    4547    KapaClearPlots (kapa1);
     
    5557
    5658    for (int i = 0; i < x->n; i++) {
    57         model->data.F32[i] = pmTrend2DEval (trend, x->data.F32[i], y->data.F32[i]);
    58         resid->data.F32[i] = param->data.F32[i] - model->data.F32[i];
    59         if (mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) continue;
    60         min = PS_MIN (min, resid->data.F32[i]);
    61         max = PS_MAX (max, resid->data.F32[i]);
    62         Min = PS_MIN (min, param->data.F32[i]);
    63         Max = PS_MAX (max, param->data.F32[i]);
     59        model->data.F32[i] = pmTrend2DEval (trend, x->data.F32[i], y->data.F32[i]);
     60        resid->data.F32[i] = param->data.F32[i] - model->data.F32[i];
     61        if (mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) continue;
     62        min = PS_MIN (min, resid->data.F32[i]);
     63        max = PS_MAX (max, resid->data.F32[i]);
     64        Min = PS_MIN (min, param->data.F32[i]);
     65        Max = PS_MAX (max, param->data.F32[i]);
    6466    }
    6567
     
    7072    psVector *Fn = psVectorAlloc (x->n, PS_TYPE_F32);
    7173    for (int i = 0; i < x->n; i++) {
    72         xn->data.F32[i] = x->data.F32[i] / 5000.0;
    73         yn->data.F32[i] = y->data.F32[i] / 5000.0;
    74         zn->data.F32[i] = (resid->data.F32[i] - min) / (max - min);
    75         Zn->data.F32[i] = (param->data.F32[i] - Min) / (Max - Min);
    76         Fn->data.F32[i] = (model->data.F32[i] - Min) / (Max - Min);
     74        xn->data.F32[i] = x->data.F32[i] / 5000.0;
     75        yn->data.F32[i] = y->data.F32[i] / 5000.0;
     76        zn->data.F32[i] = (resid->data.F32[i] - min) / (max - min);
     77        Zn->data.F32[i] = (param->data.F32[i] - Min) / (Max - Min);
     78        Fn->data.F32[i] = (model->data.F32[i] - Min) / (Max - Min);
    7779    }
    7880
     
    152154    // pause and wait for user input:
    153155    // continue, save (provide name), ??
    154     char key[10];
    155     fprintf (stdout, "[c]ontinue? ");
    156     if (!fgets(key, 8, stdin)) {
    157         psWarning("Unable to read option");
    158     }
     156    pmVisualAskUser(&plotPSF);
     157
    159158    return true;
    160159}
     
    173172
    174173    for (int i = 0; i < xn->n; i++) {
    175         xv->data.F32[2*i+0] = +xn->data.F32[i]*cos(theta) + yn->data.F32[i]*sin(theta)*cos(phi) + zn->data.F32[i]*sin(theta)*sin(phi);
    176         yv->data.F32[2*i+0] = -xn->data.F32[i]*sin(theta) + yn->data.F32[i]*cos(theta)*cos(phi) + zn->data.F32[i]*cos(theta)*sin(phi);
    177         zv->data.F32[2*i+0] = -yn->data.F32[i]*sin(phi)   + zn->data.F32[i]*cos(phi);
    178         xv->data.F32[2*i+1] = +xn->data.F32[i]*cos(theta) + yn->data.F32[i]*sin(theta)*cos(phi);
    179         yv->data.F32[2*i+1] = -xn->data.F32[i]*sin(theta) + yn->data.F32[i]*cos(theta)*cos(phi);
    180         zv->data.F32[2*i+1] = -yn->data.F32[i]*sin(phi);
    181         graphdata->xmin = PS_MIN(graphdata->xmin, xv->data.F32[2*i+0]);
    182         graphdata->xmax = PS_MAX(graphdata->xmax, xv->data.F32[2*i+0]);
    183         graphdata->ymin = PS_MIN(graphdata->ymin, zv->data.F32[2*i+0]);
    184         graphdata->ymax = PS_MAX(graphdata->ymax, zv->data.F32[2*i+0]);
    185         graphdata->xmin = PS_MIN(graphdata->xmin, xv->data.F32[2*i+1]);
    186         graphdata->xmax = PS_MAX(graphdata->xmax, xv->data.F32[2*i+1]);
    187         graphdata->ymin = PS_MIN(graphdata->ymin, zv->data.F32[2*i+1]);
    188         graphdata->ymax = PS_MAX(graphdata->ymax, zv->data.F32[2*i+1]);
     174        xv->data.F32[2*i+0] = +xn->data.F32[i]*cos(theta) + yn->data.F32[i]*sin(theta)*cos(phi) + zn->data.F32[i]*sin(theta)*sin(phi);
     175        yv->data.F32[2*i+0] = -xn->data.F32[i]*sin(theta) + yn->data.F32[i]*cos(theta)*cos(phi) + zn->data.F32[i]*cos(theta)*sin(phi);
     176        zv->data.F32[2*i+0] = -yn->data.F32[i]*sin(phi)   + zn->data.F32[i]*cos(phi);
     177        xv->data.F32[2*i+1] = +xn->data.F32[i]*cos(theta) + yn->data.F32[i]*sin(theta)*cos(phi);
     178        yv->data.F32[2*i+1] = -xn->data.F32[i]*sin(theta) + yn->data.F32[i]*cos(theta)*cos(phi);
     179        zv->data.F32[2*i+1] = -yn->data.F32[i]*sin(phi);
     180        graphdata->xmin = PS_MIN(graphdata->xmin, xv->data.F32[2*i+0]);
     181        graphdata->xmax = PS_MAX(graphdata->xmax, xv->data.F32[2*i+0]);
     182        graphdata->ymin = PS_MIN(graphdata->ymin, zv->data.F32[2*i+0]);
     183        graphdata->ymax = PS_MAX(graphdata->ymax, zv->data.F32[2*i+0]);
     184        graphdata->xmin = PS_MIN(graphdata->xmin, xv->data.F32[2*i+1]);
     185        graphdata->xmax = PS_MAX(graphdata->xmax, xv->data.F32[2*i+1]);
     186        graphdata->ymin = PS_MIN(graphdata->ymin, zv->data.F32[2*i+1]);
     187        graphdata->ymax = PS_MAX(graphdata->ymax, zv->data.F32[2*i+1]);
    189188    }
    190189    xv->n = xn->n;
     
    253252}
    254253
    255 # else
    256 # endif
     254#else
     255
     256bool pmSourceSetVisual(bool mode)
     257{
     258    return true;
     259}
     260
     261bool pmSourceVisualPSFModelResid(pmTrend2D *trend, psVector *x, psVector *y, psVector *param, psVector *mask)
     262{
     263    return true;
     264}
     265
     266#endif
Note: See TracChangeset for help on using the changeset viewer.