IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 20415


Ignore:
Timestamp:
Oct 27, 2008, 12:50:07 PM (18 years ago)
Author:
beaumont
Message:

Added a plot for the grid tweaking

Location:
branches/cnb_branch_20081011/psModules/src/astrom
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/cnb_branch_20081011/psModules/src/astrom/pmAstrometryObjects.c

    r20335 r20415  
    88*  @author EAM, IfA
    99*
    10 *  @version $Revision: 1.41.4.1 $ $Name: not supported by cvs2svn $
    11 *  @date $Date: 2008-10-22 23:35:13 $
     10*  @version $Revision: 1.41.4.2 $ $Name: not supported by cvs2svn $
     11*  @date $Date: 2008-10-27 22:50:07 $
    1212*
    1313*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    120120        i++;
    121121    }
    122 
    123122    return (matches);
    124123}
     
    659658        }
    660659
    661         pmAstromVisualPlotGridMatch (raw, ref,gridNP, stats->offset.x, stats->offset.y,
    662                                      maxOffpix, Scale, Offset);
     660        pmAstromVisualPlotGridMatch(raw, ref, gridNP, stats->offset.x, stats->offset.y,
     661                                    maxOffpix, Scale, Offset);
    663662
    664663        psFree (imStats);
     
    847846    psVector *xHistNew = psVectorSmooth(NULL, xHist, tweakSmooth, tweakNsigma);
    848847    psVector *yHistNew = psVectorSmooth(NULL, yHist, tweakSmooth, tweakNsigma);
    849     psFree(xHist);
    850     psFree(yHist);
    851     xHist = xHistNew;
    852     yHist = yHistNew;
    853848
    854849    // select peak in x and in y
     
    857852    double yMax = 0;
    858853    for (int i = 0; i < nBin; i++) {
    859         if (xHist->data.F32[i] > xMax) {
     854        if (xHistNew->data.F32[i] > xMax) {
    860855            xBin = i;
    861             xMax = xHist->data.F32[i];
    862         }
    863         if (yHist->data.F32[i] > yMax) {
     856            xMax = xHistNew->data.F32[i];
     857        }
     858        if (yHistNew->data.F32[i] > yMax) {
    864859            yBin = i;
    865             yMax = yHist->data.F32[i];
     860            yMax = yHistNew->data.F32[i];
    866861        }
    867862    }
     
    876871    tweak->offset.y += yPeak;
    877872
     873    pmAstromVisualPlotTweak (xHist, yHist, xHistNew, yHistNew, xBin, yBin);
     874
    878875    psFree (rot);
    879876    psFree (xHist);
    880877    psFree (yHist);
     878    psFree (xHistNew);
     879    psFree (yHistNew);
    881880
    882881    return tweak;
  • branches/cnb_branch_20081011/psModules/src/astrom/pmAstrometryVisual.c

    r20336 r20415  
    1 /****************************************************/
    2 /* Diagnostic plots for pmAstrometry routines.      */
    3 /****************************************************/
    4 
     1/** Diagnostic plots called from within pmAstrometry routines.
     2 * @author      Chris Beaumont
     3 * @date        October 2008
     4 */
     5
     6/* Include Files   */
    57#ifdef HAVE_CONFIG_H
    68#include <config.h>
    79#endif
    810
    9 /********************************************************************/
    10 /* INCLUDE FILES                                                    */
    11 /********************************************************************/
    1211#include <stdio.h>
    1312#include <strings.h>
     
    2928# define KAPAY 800
    3029
     30
    3131//variables to determine when things are plotted
    3232static bool isVisual             = false;
    3333static bool plotGridMatch        = false;
    34 
     34static bool plotTweak            = true;
    3535
    3636// variables to store plotting window indices
     
    3838
    3939
    40 /******************************/
    41 /* Initialization Routines    */
    42 /******************************/
     40/* Utility Routine Prototypes */
     41bool pmAstromVisualScaleGraphdata(Graphdata *graphdata, psVector *xVec, psVector *yVec, bool clip);
     42
     43
     44/* Initialization Routines  */
    4345
    4446
     
    5052
    5153
    52 /** open, name, and resize a window if necessary */
     54/** open name, and resize a window if necessary */
    5355bool pmAstromVisualInitWindow (int *kapid, char *name) {
    5456    if (*kapid == -1) {
     
    6668
    6769/** ask the user how to proceed */
    68 bool pmAstromVisualAskUser( bool *plotflag ) {
     70bool pmAstromVisualAskUser(bool *plotflag)
     71{
    6972    char key[10];
    7073    fprintf (stdout, "[c]ontinue? [s]kip the rest of these plots? [a]bort all visual plots?");
     
    8386
    8487/** destroy windows at the end of a run*/
    85 bool pmAstromVisualClose() {
     88bool pmAstromVisualClose()
     89{
    8690    if(kapa != -1)
    8791        KiiClose(kapa);
     
    8993}
    9094
    91 // // TEMPORARY - cant get psAstrometryObjects.h to link??
    92 // typedef struct
    93 // {
    94 //     psPlane *pix;   ///< the position in the pmReadout frame
    95 //     psPlane *cell;   ///< the position in the pmCell frame
    96 //     psPlane *chip;   ///< the position in the pmChip frame
    97 //     psPlane *FP;   ///< the position in the pmFPA frame
    98 //     psPlane *TP;   ///< the position in the tangent plane
    99 //     psSphere *sky;        ///< the position on the Celestial Sphere.
    100 //     double Mag;                         ///< object magnitude XXX what filter?
    101 //     double dMag;                        ///< error on object magnitude
    102 // }
    103 // pmAstromObj;
    104 
    105 /** plotting routines */
    106 
    107 /*
     95
     96/* plotting routines */
     97
     98/**
    10899 * Plot the offset between every pair of reference and raw source locations. The peak of this
    109100 * distribution nominally gives the offset, scale difference, and rotation of the two catalogs.
    110  * Overplots the location of this peak as determined by pmAstromGridAngle.
     101 * Overplots the location of this peak as determined by pmAstromGridAngle, as well as some profiles
     102 * along horizontal and vertical cuts through this peak.
    111103 */
    112 bool pmAstromVisualPlotGridMatch (const psArray *raw, const psArray *ref,
    113                                   psImage *gridNP, float offsetX, float offsetY,
    114                                   double maxOffpix, double Scale, double Offset) {
    115 
     104bool pmAstromVisualPlotGridMatch (const psArray *raw, ///< raw stars
     105                                  const psArray *ref, ///< reference stars
     106                                  psImage *gridNP,    ///< a 2D histogram of raw-ref star distances
     107                                  double offsetX,     ///< The X location (FP coordinates) of the peak of gridNP
     108                                  double offsetY,     ///< the Y location (FP coordinates) of the peak of gridNP
     109                                  double maxOffpix,   ///< The half-width of gridNP in FP coordinates
     110                                  double Scale,       ///< The pixel size of gridNP in histogram-bin-coordinates
     111                                  double Offset       ///< The (x,y) location (histogram-bin coordinates) of the FP point (0,0) in gridNP
     112                                  )
     113{
     114    //make sure we want to plot this
    116115    if (!isVisual || !plotGridMatch) return true;
    117116    if (!pmAstromVisualInitWindow(&kapa, "pmAstrom:plots"))
    118117        return false;
    119118
    120     // vectors to hold dX and dY
    121     int nplot = raw->n * ref->n;
    122     float dXplot[nplot];
    123     float dYplot[nplot];
    124 
    125     pmAstromObj *ob1;
    126     pmAstromObj *ob2;
     119    KapaSection section = {"s1", 0.05, 0.05, .75, .75};
     120    KapaSection sectionY = {"s2", 0.8, 0.05, .15, .75};
     121    KapaSection sectionX = {"s3", .05, .8, .75, .15};
     122
     123    Graphdata graphdata;
     124    int nplot = raw->n * ref->n;                      // number of points to plot
     125    float dXplot[nplot];                              // x data points
     126    float dYplot[nplot];                              // y data points
     127    pmAstromObj *ob1; pmAstromObj *ob2;               // shortcuts to the data in raw and ref
     128    psU32 **NP = gridNP->data.U32;                    // shortcut to the gridNP data
     129    float vertHistSlice[gridNP->numRows];             // vertical histogram slice through peak
     130    float horizHistSlice[gridNP->numCols];            // horizontal histogram slice through peak
     131    float horizontalIndices[gridNP->numCols];         // the horizontal offset corresponding to each bin of horizHistSlice
     132    float verticalIndices[gridNP->numRows];           // the vertical offset corresponding to each bin of vertHistSlice
     133    int maxHorizontalSlice = 0;                       // peak value of horizHistSlice
     134    int maxVerticalSlice = 0;                         // peak value of vertHistSlice
     135    int peakXbin = (int) (offsetX / Scale + Offset);  // X bin index of peak
     136    int peakYbin = (int) (offsetY / Scale + Offset);  // Y bin index of peak
     137
     138
     139    // set up plot information
     140    KapaClearPlots(kapa);
     141    KapaInitGraph(&graphdata);
     142    KapaSetSection(kapa, &section);
     143
     144    graphdata.xmin = -1.0 * maxOffpix;
     145    graphdata.xmax =  1.0 * maxOffpix;
     146    graphdata.ymin = -1.0 * maxOffpix;
     147    graphdata.ymax =  1.0 * maxOffpix;
     148    KapaSetLimits(kapa, &graphdata);
     149
     150    KapaSetFont(kapa, "helvetica", 14);
     151    KapaBox(kapa, &graphdata);
     152    KapaSendLabel (kapa, "X offset (FP)", KAPA_LABEL_XM);
     153    KapaSendLabel (kapa, "Y offset (FP)", KAPA_LABEL_YM);
     154    KapaSendLabel (kapa, "pmAstromGridAngle residuals. Box: Correlation Peak.",
     155                   KAPA_LABEL_XP);
     156    graphdata.style = 2;
     157    graphdata.ptype = 0;
     158    graphdata.size = 0.4;
     159    graphdata.color = KapaColorByName ("black");
     160
     161    // calculate the plot points
    127162    float dX, dY;
    128163    for (int i = 0; i < raw->n; i++) {
    129164        ob1 = (pmAstromObj *)raw->data[i];
    130165        for (int j = 0; j < ref->n; j++) {
    131             ob2 = (pmAstromObj *)raw->data[j];
     166            ob2 = (pmAstromObj *)ref->data[j];
    132167            dX = ob1->FP->x - ob2->FP->x;
    133168            dY = ob1->FP->y - ob2->FP->y;
     
    137172    }
    138173
    139 #if 0
    140     // vectors to hold the 1D histogram along horizontal and vertical slices
    141     // passing through the peak. Note: Xbin(x pos) = (x pos) / Scale + Offset
    142     psU32 **NP = gridNP->data.U32;
    143     int vertHistSlice[gridNP->numRows];
    144     int horizHistSlice[gridNP->numCols];
    145     int peakXbin = (offsetX - Offset) * Scale;
    146     int peakYbin = (offsetY - Offset) * Scale;
    147     for (int i = 0; i < gridNP->numRows; i++) {}
    148 # endif
    149 
    150     // plot information
    151     KapaSection section = {"s1", 0.00, 0.00, 1.0, 1.0};
    152     Graphdata graphdata;
    153     KapaClearPlots(kapa);
    154     KapaInitGraph(&graphdata);
    155     KapaSetSection(kapa, &section);
    156     graphdata.xmin = offsetX - 1.5 * maxOffpix;
    157     graphdata.xmax = offsetX + 1.5 * maxOffpix;
    158     graphdata.ymin = offsetY - 1.5 * maxOffpix;
    159     graphdata.ymax = offsetY + 1.5 * maxOffpix;
    160 
    161     KapaSetLimits(kapa, &graphdata);
    162     KapaSetFont(kapa, "helvetica", 14);
    163     KapaBox(kapa, &graphdata);
    164     KapaSendLabel (kapa, "X offset", KAPA_LABEL_XM);
    165     KapaSendLabel (kapa, "Y offset", KAPA_LABEL_YM);
    166     KapaSendLabel (kapa, "pmAstromGridAngle residuals. Big Box: Serach Region. Small Box: Correlation Peak.",
    167                    KAPA_LABEL_XP);
    168     graphdata.style = 2;
    169     graphdata.ptype = 0;
    170     graphdata.size = 0.4;
    171     graphdata.color = KapaColorByName ("black");
     174    // calculate the points for the profiles
     175    for (int i = 0; i < gridNP->numRows; i++) {
     176        vertHistSlice[i] = NP[i][peakXbin];
     177        verticalIndices[i] = (i - Offset) * Scale;
     178        if (vertHistSlice[i] > maxVerticalSlice) {
     179            maxVerticalSlice = vertHistSlice[i];
     180        }
     181    }
     182    for (int i = 0; i < gridNP->numCols; i++) {
     183        horizHistSlice[i] = NP[peakYbin][i];
     184        horizontalIndices[i] = (i - Offset) * Scale;
     185        if (horizHistSlice[i] > maxHorizontalSlice) {
     186            maxHorizontalSlice = horizHistSlice[i];
     187        }
     188    }
     189
     190    //Plot the offsets
    172191    KapaPrepPlot(kapa, nplot, &graphdata);
    173192    KapaPlotVector (kapa, nplot, dXplot, "x");
     
    193212    KapaPlotVector (kapa, 5, ybin, "y");
    194213
     214    //plot X profile
     215    KapaSetSection(kapa, &sectionX);
     216    graphdata.color = KapaColorByName("black");
     217    graphdata.ptype = 1;
     218    graphdata.style = 1;
     219    graphdata.ymin = 0;
     220    graphdata.ymax = maxHorizontalSlice + 0.5;
     221    KapaSetLimits(kapa, &graphdata);
     222
     223    KapaBox(kapa, &graphdata);
     224    KapaPrepPlot(kapa, gridNP->numCols, &graphdata);
     225    KapaPlotVector (kapa, gridNP->numCols, horizontalIndices, "x");
     226    KapaPlotVector (kapa, gridNP->numCols, horizHistSlice, "y");
     227    float xslice[2] = {offsetX - Scale / 2., offsetX - Scale / 2.};
     228    float yslice[2] = {-5, 100};
     229    graphdata.color = KapaColorByName("red");
     230    KapaPrepPlot(kapa, 2, &graphdata);
     231    KapaPlotVector (kapa, 2, xslice, "x");
     232    KapaPlotVector (kapa, 2, yslice, "y");
     233
     234    //plot Y profile
     235    KapaSetSection(kapa, &sectionY);
     236    graphdata.color = KapaColorByName("black");
     237    graphdata.ptype = 1;
     238    graphdata.style = 1;
     239    graphdata.ymin = -maxOffpix;
     240    graphdata.ymax = maxOffpix;
     241    graphdata.xmin = -1.0 ;
     242    graphdata.xmax = maxVerticalSlice + 0.5;
     243    KapaSetLimits(kapa, &graphdata);
     244
     245    KapaBox(kapa, &graphdata);
     246    KapaPrepPlot(kapa, gridNP->numRows, &graphdata);
     247    KapaPlotVector (kapa, gridNP->numRows, vertHistSlice, "x");
     248    KapaPlotVector (kapa, gridNP->numRows, verticalIndices, "y");
     249    yslice[0] = yslice[1] = offsetY - Scale / 2.;
     250    xslice[0] = -5; xslice[1] = 100;
     251    graphdata.color = KapaColorByName("red");
     252    KapaPrepPlot(kapa, 2, &graphdata);
     253    KapaPlotVector (kapa, 2, xslice, "x");
     254    KapaPlotVector (kapa, 2, yslice, "y");
     255
    195256    pmAstromVisualAskUser(&plotGridMatch);
    196257    return true;
    197 }
     258} // end of pmAstromVisualPlotGridMatch
     259
     260
     261/** Plot the refinements that pmAstromGridTweak makes to the offset between raw and ref stars */
     262bool pmAstromVisualPlotTweak (psVector *xHist, psVector *yHist, psVector *xHistNew, psVector *yHistNew, int xBin, int yBin)
     263{
     264    //make sure we want to plot this
     265    if (!isVisual || !plotTweak) return true;
     266    if (!pmAstromVisualInitWindow(&kapa, "pmAstrom:plots")) {
     267        return false;
     268    }
     269
     270    Graphdata graphdata;
     271    KapaSection section1 = {"s1", 0.05, 0.05, 0.90, 0.4};
     272    KapaSection section2 = {"s2", 0.05, 0.5, 0.90, 0.4};
     273
     274    psVector *xIndices = psVectorAlloc (xHist->n, PS_TYPE_F32);
     275    psVector *yIndices = psVectorAlloc (yHist->n, PS_TYPE_F32);
     276
     277
     278    //populate the Indices vectors
     279    for(int i = 0; i < xHist->n; i++) {
     280        xIndices->data.F32[i] = i;
     281    }
     282    for(int i = 0; i < yHist->n; i++) {
     283        yIndices->data.F32[i] = i;
     284    }
     285
     286    // set up plot information
     287    KapaClearPlots(kapa);
     288    KapaInitGraph(&graphdata);
     289
     290    // plot the X histogram
     291    pmAstromVisualScaleGraphdata(&graphdata, xIndices, xHistNew, false);
     292    KapaSetSection(kapa, &section1);
     293    KapaSetLimits (kapa, &graphdata);
     294    KapaSetFont(kapa, "helvetica", 14);
     295    KapaBox(kapa, &graphdata);
     296    KapaSendLabel (kapa, "X offset Bin", KAPA_LABEL_XM);
     297    KapaSendLabel (kapa, "Number of Sources", KAPA_LABEL_YM);
     298    KapaSendLabel (kapa, "Horizontal Profile",
     299                   KAPA_LABEL_XP);
     300    graphdata.style = 2;
     301    graphdata.ptype = 0;
     302    graphdata.size = 0.4;
     303    graphdata.color = KapaColorByName ("black");
     304
     305    KapaPrepPlot (kapa, xHist->n, &graphdata);
     306    KapaPlotVector (kapa, xHist->n, xIndices->data.F32, "x");
     307    KapaPlotVector (kapa, xHist->n, xHist->data.F32, "y");
     308
     309    //overplot smoothed line
     310    graphdata.style = 1;
     311    graphdata.color = KapaColorByName ("red");
     312    KapaPrepPlot (kapa, xHist->n, &graphdata);
     313    KapaPlotVector (kapa, xHist->n, xIndices->data.F32, "x");
     314    KapaPlotVector (kapa, xHist->n, xHistNew->data.F32, "y");
     315
     316    //overplot the peak
     317    float x[2] = {xBin, xBin};
     318    float y[2] = {-500, 500};
     319    graphdata.color = KapaColorByName ("black");
     320    KapaPrepPlot (kapa, 2, &graphdata);
     321    KapaPlotVector (kapa, 2, x, "x");
     322    KapaPlotVector (kapa, 2, y, "y");
     323
     324    //plot the Y histogram
     325    pmAstromVisualScaleGraphdata(&graphdata, yIndices, yHistNew, false);
     326    KapaSetSection(kapa, &section2);
     327    KapaSetLimits (kapa, &graphdata);
     328    KapaSetFont(kapa, "helvetica", 14);
     329    KapaBox(kapa, &graphdata);
     330    KapaSendLabel (kapa, "X offset Bin", KAPA_LABEL_XM);
     331    KapaSendLabel (kapa, "Number of Sources", KAPA_LABEL_YM);
     332    KapaSendLabel (kapa, "Vertical Profile",
     333                   KAPA_LABEL_XP);
     334    graphdata.style = 2;
     335    graphdata.ptype = 0;
     336    graphdata.size = 0.4;
     337    graphdata.color = KapaColorByName ("black");
     338
     339    KapaPrepPlot (kapa, yHist->n, &graphdata);
     340    KapaPlotVector (kapa, yHist->n, yIndices->data.F32, "x");
     341    KapaPlotVector (kapa, yHist->n, yHist->data.F32, "y");
     342
     343    //overplot smoothed line
     344    graphdata.style = 1;
     345    graphdata.color = KapaColorByName ("red");
     346    KapaPrepPlot (kapa, yHist->n, &graphdata);
     347    KapaPlotVector (kapa, yHist->n, yIndices->data.F32, "x");
     348    KapaPlotVector (kapa, yHist->n, yHistNew->data.F32, "y");
     349
     350    //overplot the peak
     351    x[0] = x[1] = yBin;
     352    graphdata.color = KapaColorByName ("black");
     353    KapaPrepPlot (kapa, 2, &graphdata);
     354    KapaPlotVector (kapa, 2, x, "x");
     355    KapaPlotVector (kapa, 2, y, "y");
     356
     357    //plot title
     358    KapaSection section3 = {"s3", 0, 0, 1, 1};
     359    KapaSetSection( kapa, &section3);
     360    KapaSendLabel (kapa, "Tweaking the Astrometry Grid Solution. Smoothed profiles + peak location",
     361                   KAPA_LABEL_XP);
     362
     363    pmAstromVisualAskUser(&plotTweak);
     364
     365    psFree(xIndices);
     366    psFree(yIndices);
     367    return true;
     368}
     369
     370
     371/** psastroVisualScaleGraphdata
     372 * Scale the graphdata structure based on x and y coordinates. Use sigma clipping to
     373 * prevent outliers from making te plot region too big.
     374 */
     375bool pmAstromVisualScaleGraphdata(Graphdata *graphdata, psVector *xVec, psVector *yVec, bool clip) {
     376
     377    graphdata->xmin = +FLT_MAX;
     378    graphdata->xmax = -FLT_MAX;
     379    graphdata->ymin = +FLT_MAX;
     380    graphdata->ymax = -FLT_MAX;
     381
     382    //determine standard deviation of xVec and yVec
     383    psStats *statsX = psStatsAlloc(PS_STAT_SAMPLE_MEDIAN | PS_STAT_SAMPLE_STDEV);
     384    psStats *statsY = psStatsAlloc(PS_STAT_SAMPLE_MEDIAN | PS_STAT_SAMPLE_STDEV);
     385    psVectorStats (statsX, xVec, NULL, NULL, 0);
     386    psVectorStats (statsY, yVec, NULL, NULL, 0);
     387
     388    float xhi  = statsX->sampleMedian + 3 *statsX->sampleStdev;
     389    float xlo = statsX->sampleMedian - 3 *statsX->sampleStdev;
     390    float yhi = statsY->sampleMedian + 3 *statsY->sampleStdev;
     391    float ylo = statsY->sampleMedian - 3 *statsY->sampleStdev;
     392
     393    // don't sigma clip
     394    if (!clip) {
     395        xhi = +FLT_MAX;
     396        xlo = -FLT_MAX;
     397        yhi = +FLT_MAX;
     398        ylo = -FLT_MAX;
     399    }
     400
     401    // abort if there is no good data
     402    if (!isfinite(xhi) || !isfinite(xlo) || !isfinite(yhi) || !isfinite(ylo)) {
     403        graphdata->xmin = -1;
     404        graphdata->ymin  = -1;
     405        graphdata->xmax = 1;
     406        graphdata->ymax = 1;
     407        psFree(statsX);
     408        psFree(statsY);
     409        return false;
     410    }
     411
     412    for(int i = 0; i < xVec->n; i++) {
     413        if (!isfinite(xVec->data.F32[i])) continue;
     414        if (xVec->data.F32[i] > xhi || xVec->data.F32[i] < xlo) continue;
     415        graphdata->xmin = PS_MIN (graphdata->xmin, xVec->data.F32[i]);
     416        graphdata->xmax = PS_MAX (graphdata->xmax, xVec->data.F32[i]);
     417    }
     418
     419    for (int i = 0; i < yVec->n; i++) {
     420        if (!isfinite(xVec->data.F32[i])) continue;
     421        if (yVec->data.F32[i] > yhi || yVec->data.F32[i] < ylo) continue;
     422        graphdata->ymin = PS_MIN (graphdata->ymin, yVec->data.F32[i]);
     423        graphdata->ymax = PS_MAX (graphdata->ymax, yVec->data.F32[i]);
     424    }
     425
     426    // add a whitespace border
     427    float range = graphdata->xmax - graphdata->xmin;
     428    if (range == 0) range = 1;
     429    graphdata->xmin -= .05 * range;
     430    graphdata->xmax += .05 * range;
     431
     432    range = graphdata->ymax - graphdata->ymin;
     433    if (range == 0) range = 1;
     434    graphdata->ymin -= .05 * range;
     435    graphdata->ymax += .05 * range;
     436
     437    psFree (statsX);
     438    psFree (statsY);
     439    return true;
     440}
     441
    198442
    199443
     
    204448bool pmAstromVisualAskUser (bool *plotflag) { return true; }
    205449bool pmAstromVisualClose() { return true; }
    206 bool pmAstromVisualPlotGridMatch (const psArray *raw, const psArray *ref, psImage *gridNP, float offsetX, float offsetY, double maxOffpix, double Scale, double Offset) { return true; }
     450bool pmAstromVisualPlotGridMatch (const psArray *raw, const psArray *ref, psImage *gridNP, double offsetX, double offsetY, double maxOffpix, double Scale, double Offset) { return true; }
    207451
    208452# endif
  • branches/cnb_branch_20081011/psModules/src/astrom/pmAstrometryVisual.h

    r20336 r20415  
    33bool pmAstromVisualAskUser (bool *plotflag);
    44bool pmAstromVisualClose();
    5 bool pmAstromVisualPlotGridMatch (const psArray *raw, const psArray *ref, psImage *gridNP, float offsetX, float offsetY, double maxOffpix, double Scale, double Offset);
     5bool pmAstromVisualPlotGridMatch (const psArray *raw, const psArray *ref, psImage *gridNP, double offsetX, double offsetY, double maxOffpix, double Scale, double Offset);
     6bool pmAstromVisualPlotTweak (psVector *xHist, psVector *yHist, psVector *xHistNew, psVector *yHistNew, int xBin, int yBin);
Note: See TracChangeset for help on using the changeset viewer.