IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 26, 2005, 10:41:04 AM (21 years ago)
Author:
gusciora
Message:

Substituted knots for domains in the spline structs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/math/psPolynomial.c

    r3027 r3096  
    77 *  polynomials.  It also contains a Gaussian functions.
    88 *
    9  *  @version $Revision: 1.83 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2005-01-17 23:25:09 $
     9 *  @version $Revision: 1.84 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2005-01-26 20:41:04 $
    1111 *
    1212 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    9292        psFree(tmpSpline->p_psDeriv2);
    9393    }
    94     psFree(tmpSpline->domains);
     94    psFree(tmpSpline->knots);
    9595
    9696    return;
     
    18331833//    psPolynomial1D **spline;
    18341834//    psF32 *p_psDeriv2;
    1835 //    psF32 *domains;
     1835//    psVector *knots;
    18361836//} psSpline1D;
    18371837
    18381838/*****************************************************************************
    18391839    NOTE: "n" specifies the number of spline polynomials.  Therefore, there
    1840     must exist n+1 points in "domains".
     1840    must exist n+1 points in "knots".
    18411841 
    18421842XXX: Ensure that domain[i+1] != domain[i]
     
    18671867    tmp->p_psDeriv2 = NULL;
    18681868
    1869     tmp->domains = (psF32 *) psAlloc((numSplines+1) * sizeof(psF32));
     1869    tmp->knots = psVectorAlloc(numSplines+1, PS_TYPE_F32);
    18701870    width = (max - min) / ((psF32) numSplines);
    18711871
    1872     (tmp->domains)[0] = min;
     1872    tmp->knots->data.F32[0] = min;
    18731873    tmpDomain = min+width;
    18741874    for (i=1;i<numSplines+1;i++) {
    1875         (tmp->domains)[i] = tmpDomain;
     1875        tmp->knots->data.F32[i] = tmpDomain;
    18761876        tmpDomain+= width;
    18771877    }
    1878     (tmp->domains)[numSplines] = max;
     1878    tmp->knots->data.F32[numSplines] = max;
    18791879
    18801880    p_psMemSetDeallocator(tmp,(psFreeFcn)spline1DFree);
     
    19091909    tmp->p_psDeriv2 = NULL;
    19101910
    1911     tmp->domains = (psF32 *) psAlloc((bounds->n) * sizeof(psF32));
     1911    tmp->knots = psVectorAlloc(bounds->n, PS_TYPE_F32);
    19121912
    19131913    for (i=0;i<bounds->n;i++) {
    1914         (tmp->domains)[i] = bounds->data.F32[i];
     1914        tmp->knots->data.F32[i] = bounds->data.F32[i];
    19151915        if (i<(bounds->n-1)) {
    19161916            if (FLT_EPSILON >= fabs(bounds->data.F32[i+1]-bounds->data.F32[i])) {
     
    21362136psSpline1DEval(): this routine takes an existing spline of arbitrary order
    21372137and an independent x value.  Each determines which spline that x corresponds
    2138 to by doing a bracket disection on the domains of the spline data structure
     2138to by doing a bracket disection on the knots of the spline data structure
    21392139(vectorBinDisectF32()).  Then it evaluates the spline at that x location
    21402140by a call to the 1D polynomial functions.
     
    21552155
    21562156    n = spline->n;
    2157     binNum = vectorBinDisectF32(spline->domains, (spline->n)+1, x);
     2157    //XXX    binNum = vectorBinDisectF32(spline->domains, (spline->n)+1, x);
     2158    binNum = vectorBinDisectF32(spline->knots->data.F32, (spline->n)+1, x);
    21582159    if (binNum < 0) {
    21592160        psLogMsg(__func__, PS_LOG_WARN,
    21602161                 "psSpline1DEval(): x ordinate (%f) is outside the spline range (%f - %f).",
    2161                  x, (spline->domains)[0],
    2162                  (spline->domains)[n-1]);
    2163 
    2164         if (x < (spline->domains)[0]) {
     2162                 x, spline->knots->data.F32[0],
     2163                 spline->knots->data.F32[n-1]);
     2164
     2165        if (x < spline->knots->data.F32[0]) {
    21652166            return(psPolynomial1DEval(spline->spline[0],
    21662167                                      x));
    2167         } else if (x > (spline->domains)[n-1]) {
     2168        } else if (x > spline->knots->data.F32[n-1]) {
    21682169            return(psPolynomial1DEval(spline->spline[n-1],
    21692170                                      x));
Note: See TracChangeset for help on using the changeset viewer.