IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 30, 2007, 5:11:35 PM (19 years ago)
Author:
magnier
Message:

adding pmKapaPlotVectorTriple_AutoLimits_OpenGraph

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/extras/pmKapaPlots.c

    r11253 r11459  
    77 *  @author EAM, IfA
    88 *
    9  *  @version $Revision: 1.6 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2007-01-24 02:54:15 $
     9 *  @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2007-01-31 03:11:35 $
    1111 *
    1212 *  Copyright 2006 Institute for Astronomy, University of Hawaii
     
    145145}
    146146
     147bool pmKapaPlotVectorTriple_AutoLimits_OpenGraph (int kapa, Graphdata *graphdata, psVector *xVec, psVector *yVec, psVector *zVec, bool increasing)
     148{
     149
     150    // set limits based on data values
     151    graphdata->xmin = FLT_MAX;
     152    graphdata->xmax = FLT_MIN;
     153    graphdata->ymin = FLT_MAX;
     154    graphdata->ymax = FLT_MIN;
     155    float zmin = FLT_MAX;
     156    float zmax = FLT_MIN;
     157    for (int i = 0; i < xVec->n; i++) {
     158        graphdata->xmin = PS_MIN (graphdata->xmin, xVec->data.F32[i]);
     159        graphdata->xmax = PS_MAX (graphdata->xmax, xVec->data.F32[i]);
     160        graphdata->ymin = PS_MIN (graphdata->ymin, yVec->data.F32[i]);
     161        graphdata->ymax = PS_MAX (graphdata->ymax, yVec->data.F32[i]);
     162        zmin = PS_MIN (zmin, zVec->data.F32[i]);
     163        zmax = PS_MAX (zmax, zVec->data.F32[i]);
     164    }
     165    // add 5% to range
     166    float range;
     167
     168    psVector *zScale = psVectorAlloc (zVec->n, PS_DATA_F32);
     169
     170    range = zmax - zmin;
     171    if (range == 0.0) {
     172        psVectorInit (zScale, 1.0);
     173    } else {
     174        for (int i = 0; i < zVec->n; i++) {
     175            if (increasing) {
     176                zScale->data.F32[i] = PS_MIN (1.5, PS_MAX(0.05, 1.5*(zVec->data.F32[i] - zmin)/range));
     177            } else {
     178                zScale->data.F32[i] = PS_MIN (1.5, PS_MAX(0.05, 1.5*(zmax - zVec->data.F32[i])/range));
     179            }
     180        }
     181    }
     182
     183    range = graphdata->xmax - graphdata->xmin;
     184    graphdata->xmax += 0.05*range;
     185    graphdata->xmin -= 0.05*range;
     186
     187    range = graphdata->ymax - graphdata->ymin;
     188    graphdata->ymax += 0.05*range;
     189    graphdata->ymin -= 0.05*range;
     190
     191    KapaSetLimits (kapa, graphdata);
     192    KapaSetFont (kapa, "helvetica", 14);
     193    KapaBox (kapa, graphdata);
     194
     195    // the point size will be scaled from the z vector
     196    graphdata->size = -1;
     197    KapaPrepPlot (kapa, xVec->n, graphdata);
     198    KapaPlotVector (kapa, xVec->n, xVec->data.F32);
     199    KapaPlotVector (kapa, yVec->n, yVec->data.F32);
     200    KapaPlotVector (kapa, zVec->n, zScale->data.F32);
     201    psFree (zScale);
     202    return true;
     203}
     204
    147205# else
    148206    # include "pmKapaPlots.h"
     
    168226}
    169227
     228bool pmKapaPlotVectorTriple_AutoLimits_OpenGraph (int kapa, Graphdata *graphdata, psVector *xVec, psVector *yVec, psVector *zVec, bool increasing)
     229{
     230    return false;
     231}
    170232# endif
Note: See TracChangeset for help on using the changeset viewer.