IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 19, 2009, 7:59:50 AM (17 years ago)
Author:
beaumont
Message:

Added visualizations to ppSub. Set up a single variable in pmVisual to control when plots are drawn.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/cnb_branch_20090215/psModules/src/objects/pmSourceVisual.c

    r21183 r21536  
    99# if (HAVE_KAPA)
    1010# 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;
    1717// static int kapa2 = -1;
     
    2020bool pmSourcePlotPoints3D (int myKapa, Graphdata *graphdata, psVector *xn, psVector *yn, psVector *zn, float theta, float phi);
    2121
    22 bool pmSourceSetVisual (bool mode) {
    23 
    24     isVisual = mode;
    25     return true;
    26 }
    2722
    2823bool pmSourceVisualPSFModelResid (pmTrend2D *trend, psVector *x, psVector *y, psVector *param, psVector *mask) {
    2924
    30     KapaSection section;  // put the positive profile in one and the residuals in another? 
     25    KapaSection section;  // put the positive profile in one and the residuals in another?
    3126
    3227    Graphdata graphdata;
    3328
    34     if (!isVisual) return true;
     29    if (!pmVisualIsVisual()) return true;
    3530
    3631    if (kapa1 == -1) {
    3732        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     } 
     33        if (kapa1 == -1) {
     34            fprintf (stderr, "failure to open kapa; visual mode disabled\n");
     35            pmVisualSetVisual(false);
     36            return false;
     37        }
     38    }
    4439
    4540    KapaClearPlots (kapa1);
     
    5550
    5651    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]);
     52        model->data.F32[i] = pmTrend2DEval (trend, x->data.F32[i], y->data.F32[i]);
     53        resid->data.F32[i] = param->data.F32[i] - model->data.F32[i];
     54        if (mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) continue;
     55        min = PS_MIN (min, resid->data.F32[i]);
     56        max = PS_MAX (max, resid->data.F32[i]);
     57        Min = PS_MIN (min, param->data.F32[i]);
     58        Max = PS_MAX (max, param->data.F32[i]);
    6459    }
    6560
     
    7065    psVector *Fn = psVectorAlloc (x->n, PS_TYPE_F32);
    7166    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);
     67        xn->data.F32[i] = x->data.F32[i] / 5000.0;
     68        yn->data.F32[i] = y->data.F32[i] / 5000.0;
     69        zn->data.F32[i] = (resid->data.F32[i] - min) / (max - min);
     70        Zn->data.F32[i] = (param->data.F32[i] - Min) / (Max - Min);
     71        Fn->data.F32[i] = (model->data.F32[i] - Min) / (Max - Min);
    7772    }
    7873
     
    155150    fprintf (stdout, "[c]ontinue? ");
    156151    if (!fgets(key, 8, stdin)) {
    157         psWarning("Unable to read option");
     152        psWarning("Unable to read option");
    158153    }
    159154    return true;
     
    173168
    174169    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]);
     170        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);
     171        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);
     172        zv->data.F32[2*i+0] = -yn->data.F32[i]*sin(phi)   + zn->data.F32[i]*cos(phi);
     173        xv->data.F32[2*i+1] = +xn->data.F32[i]*cos(theta) + yn->data.F32[i]*sin(theta)*cos(phi);
     174        yv->data.F32[2*i+1] = -xn->data.F32[i]*sin(theta) + yn->data.F32[i]*cos(theta)*cos(phi);
     175        zv->data.F32[2*i+1] = -yn->data.F32[i]*sin(phi);
     176        graphdata->xmin = PS_MIN(graphdata->xmin, xv->data.F32[2*i+0]);
     177        graphdata->xmax = PS_MAX(graphdata->xmax, xv->data.F32[2*i+0]);
     178        graphdata->ymin = PS_MIN(graphdata->ymin, zv->data.F32[2*i+0]);
     179        graphdata->ymax = PS_MAX(graphdata->ymax, zv->data.F32[2*i+0]);
     180        graphdata->xmin = PS_MIN(graphdata->xmin, xv->data.F32[2*i+1]);
     181        graphdata->xmax = PS_MAX(graphdata->xmax, xv->data.F32[2*i+1]);
     182        graphdata->ymin = PS_MIN(graphdata->ymin, zv->data.F32[2*i+1]);
     183        graphdata->ymax = PS_MAX(graphdata->ymax, zv->data.F32[2*i+1]);
    189184    }
    190185    xv->n = xn->n;
Note: See TracChangeset for help on using the changeset viewer.