IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 9, 2004, 4:55:59 PM (22 years ago)
Author:
gusciora
Message:

...

File:
1 edited

Legend:

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

    r1765 r1775  
    77 *  polynomials.  It also contains a Gaussian functions.
    88 *
    9  *  @version $Revision: 1.32 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2004-09-09 23:39:36 $
     9 *  @version $Revision: 1.33 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2004-09-10 02:52:02 $
    1111 *
    1212 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    15931593    float width;
    15941594
     1595    if (fabs(max-min) < FLT_EPSILON) {
     1596        psLogMsg(__func__, PS_LOG_WARN, "min and max are the same.\n");
     1597        return(NULL);
     1598    }
     1599
    15951600    tmp = (psSpline1D *) psAlloc(sizeof(psSpline1D));
    1596 
    15971601    tmp->n = numSplines;
    15981602
    15991603    tmp->spline = (psPolynomial1D **) psAlloc(numSplines * sizeof(psPolynomial1D *));
    16001604    for (i=0;i<numSplines;i++) {
    1601         (tmp->spline)[i] = psPolynomial1DAlloc(order, PS_POLYNOMIAL_ORD);
     1605        (tmp->spline)[i] = psPolynomial1DAlloc(order+1, PS_POLYNOMIAL_ORD);
    16021606    }
    16031607
     
    16261630
    16271631    numSplines = bounds->n - 1;
     1632    tmp->n = numSplines;
    16281633
    16291634    tmp->spline = (psPolynomial1D **) psAlloc(numSplines * sizeof(psPolynomial1D *));
    16301635    for (i=0;i<numSplines;i++) {
    1631         (tmp->spline)[i] = psPolynomial1DAlloc(order, PS_POLYNOMIAL_ORD);
     1636        (tmp->spline)[i] = psPolynomial1DAlloc(order+1, PS_POLYNOMIAL_ORD);
    16321637    }
    16331638
     
    16681673    mid = (max-min)/2;
    16691674
    1670     while (min != max) {
     1675    while (min+1 < max) {
     1676        psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4, "(min, max) is (%d, %d)\n", min, max);
    16711677        mid = (max-min)/2;
    16721678
     
    17211727
    17221728
    1723 psSpline1D *psSpline1DEGen(const psSpline1D *spline,
    1724                            psVector *data)
     1729psSpline1D *psSpline1DGen(const psSpline1D *spline,
     1730                          psVector *data)
    17251731{
    17261732    int i;
     
    17341740    }
    17351741    // XXX: verify your math
    1736     if (1 == (spline->spline[0])->n) {
     1742    if (2 == (spline->spline[0])->n) {
    17371743        for (i=0;i<spline->n;i++) {
    17381744            slope = (data->data.F32[i+1] - data->data.F32[i]) /
     
    17421748            (spline->spline[0])->coeff[1] = slope;
    17431749        }
    1744 
    1745         psLogMsg(__func__, PS_LOG_WARN,
    1746                  "Linear splines have not been implemented.");
    1747         return(NULL);
    1748     } else if (3 == (spline->spline[0])->n) {
     1750        return((psSpline1D *) spline);
     1751    } else if (4 == (spline->spline[0])->n) {
    17491752        psLogMsg(__func__, PS_LOG_WARN,
    17501753                 "Cubic splines have not been implemented.");
     
    17531756        psLogMsg(__func__, PS_LOG_WARN,
    17541757                 "Don't know how to generate %d-order splines.",
    1755                  (spline->spline[0])->n);
     1758                 (spline->spline[0])->n-1);
    17561759        return(NULL);
    17571760    }
Note: See TracChangeset for help on using the changeset viewer.