IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 10, 2004, 12:26:09 PM (22 years ago)
Author:
gusciora
Message:

...

File:
1 edited

Legend:

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

    r1775 r1781  
    77 *  polynomials.  It also contains a Gaussian functions.
    88 *
    9  *  @version $Revision: 1.33 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2004-09-10 02:52:02 $
     9 *  @version $Revision: 1.34 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2004-09-10 22:25:59 $
    1111 *
    1212 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    441441    float xSum = 1.0;
    442442
     443    psTrace(".psLib.dataManip.psFunctions.p_psOrdPolynomial1DEval", 4,
     444            "---- Calling p_psOrdPolynomial1DEval(%f)\n", x);
     445    psTrace(".psLib.dataManip.psFunctions.p_psOrdPolynomial1DEval", 4,
     446            "Polynomial order is %d\n", myPoly->n);
     447    for (loop_x = 0; loop_x < myPoly->n; loop_x++) {
     448        psTrace(".psLib.dataManip.psFunctions.p_psOrdPolynomial1DEval", 4,
     449                "Polynomial coeff[%d] is %f\n", loop_x, myPoly->coeff[loop_x]);
     450    }
     451
     452
    443453    if (NULL == myPoly) {
    444454        psAbort(__func__, "psPolynomial1DEval(): myPoly is NULL\n");
     
    455465
    456466    for (loop_x = 0; loop_x < myPoly->n; loop_x++) {
    457         if (myPoly->mask[loop_x] != 0) {
     467        if (myPoly->mask[loop_x] == 0) {
    458468            polySum += xSum * myPoly->coeff[loop_x];
    459469            xSum *= x;
     
    535545        ySum = xSum;
    536546        for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
    537             if (myPoly->mask[loop_x][loop_y] != 0) {
     547            if (myPoly->mask[loop_x][loop_y] == 0) {
    538548                polySum += ySum * myPoly->coeff[loop_x][loop_y];
    539549                ySum *= y;
     
    564574    for (loop_x = 0; loop_x < myPoly->nX; loop_x++) {
    565575        for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
    566             if (myPoly->mask[loop_x][loop_y] != 0) {
     576            if (myPoly->mask[loop_x][loop_y] == 0) {
    567577                polySum += myPoly->coeff[loop_x][loop_y] *
    568578                           psPolynomial1DEval(x, chebPolys[loop_x]) *
     
    639649            zSum = ySum;
    640650            for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    641                 if (myPoly->mask[loop_x][loop_y][loop_z] != 0) {
     651                if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
    642652                    polySum += zSum * myPoly->coeff[loop_x][loop_y][loop_z];
    643653                    zSum *= z;
     
    675685        for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
    676686            for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    677                 if (myPoly->mask[loop_x][loop_y][loop_z] != 0) {
     687                if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
    678688                    polySum += myPoly->coeff[loop_x][loop_y][loop_z] *
    679689                               psPolynomial1DEval(x, chebPolys[loop_x]) *
     
    768778                zSum = ySum;
    769779                for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    770                     if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] != 0) {
     780                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
    771781                        polySum += zSum * myPoly->coeff[loop_w][loop_x][loop_y][loop_z];
    772782                        zSum *= z;
     
    811821            for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
    812822                for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    813                     if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] != 0) {
     823                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
    814824                        polySum += myPoly->coeff[loop_w][loop_x][loop_y][loop_z] *
    815825                                   psPolynomial1DEval(w, chebPolys[loop_w]) *
     
    11291139
    11301140    for (loop_x = 0; loop_x < myPoly->n; loop_x++) {
    1131         if (myPoly->mask[loop_x] != 0) {
     1141        if (myPoly->mask[loop_x] == 0) {
    11321142            polySum += xSum * myPoly->coeff[loop_x];
    11331143            xSum *= x;
     
    12101220        ySum = xSum;
    12111221        for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
    1212             if (myPoly->mask[loop_x][loop_y] != 0) {
     1222            if (myPoly->mask[loop_x][loop_y] == 0) {
    12131223                polySum += ySum * myPoly->coeff[loop_x][loop_y];
    12141224                ySum *= y;
     
    12391249    for (loop_x = 0; loop_x < myPoly->nX; loop_x++) {
    12401250        for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
    1241             if (myPoly->mask[loop_x][loop_y] != 0) {
     1251            if (myPoly->mask[loop_x][loop_y] == 0) {
    12421252                polySum += myPoly->coeff[loop_x][loop_y] *
    12431253                           psPolynomial1DEval(x, chebPolys[loop_x]) *
     
    13131323            zSum = ySum;
    13141324            for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    1315                 if (myPoly->mask[loop_x][loop_y][loop_z] != 0) {
     1325                if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
    13161326                    polySum += zSum * myPoly->coeff[loop_x][loop_y][loop_z];
    13171327                    zSum *= z;
     
    13491359        for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
    13501360            for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    1351                 if (myPoly->mask[loop_x][loop_y][loop_z] != 0) {
     1361                if (myPoly->mask[loop_x][loop_y][loop_z] == 0) {
    13521362                    polySum += myPoly->coeff[loop_x][loop_y][loop_z] *
    13531363                               psPolynomial1DEval(x, chebPolys[loop_x]) *
     
    14441454                zSum = ySum;
    14451455                for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    1446                     if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] != 0) {
     1456                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
    14471457                        polySum += zSum * myPoly->coeff[loop_w][loop_x][loop_y][loop_z];
    14481458                        zSum *= z;
     
    14871497            for (loop_y = 0; loop_y < myPoly->nY; loop_y++) {
    14881498                for (loop_z = 0; loop_z < myPoly->nZ; loop_z++) {
    1489                     if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] != 0) {
     1499                    if (myPoly->mask[loop_w][loop_x][loop_y][loop_z] == 0) {
    14901500                        polySum += myPoly->coeff[loop_w][loop_x][loop_y][loop_z] *
    14911501                                   psPolynomial1DEval(w, chebPolys[loop_w]) *
     
    16081618    tmp->domains = (float *) psAlloc((numSplines+1) * sizeof(float));
    16091619    width = (max - min) / ((float) numSplines);
    1610     tmpDomain = min;
    1611     for (i=0;i<numSplines+1;i++) {
     1620
     1621    (tmp->domains)[0] = min;
     1622    tmpDomain = min+width;
     1623    for (i=1;i<numSplines+1;i++) {
    16121624        (tmp->domains)[i] = tmpDomain;
    16131625        tmpDomain+= width;
    16141626    }
     1627    (tmp->domains)[numSplines] = max;
    16151628
    16161629    return(tmp);
     
    16611674    int mid;
    16621675
     1676    psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4,
     1677            "---- Calling VectorBinDisect(%f)\n", x);
     1678
    16631679    if ((x < bins[0]) ||
    16641680            (x > bins[numBins-1])) {
     
    16701686
    16711687    min = 0;
    1672     max = numBins-1;
    1673     mid = (max-min)/2;
    1674 
    1675     while (min+1 < max) {
    1676         psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4, "(min, max) is (%d, %d)\n", min, max);
    1677         mid = (max-min)/2;
    1678 
    1679         if (x < bins[mid]) {
    1680             max = mid;
     1688    max = numBins-2;
     1689    mid = ((max+1)-min)/2;
     1690
     1691    while (min != max) {
     1692        psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4,
     1693                "(min, mid, max) is (%d, %d, %d): (x, bins) is (%f, %f)\n",
     1694                min, mid, max, x, bins[mid]);
     1695
     1696        if (x == bins[mid]) {
     1697            psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4,
     1698                    "---- Exiting VectorBinDisect(): bin %d\n", min);
     1699            return(min);
     1700        } else if (x < bins[mid]) {
     1701            max = mid-1;
    16811702        } else {
    16821703            min = mid;
    16831704        }
    1684     }
    1685 
     1705        mid = ((max+1)+min)/2;
     1706    }
     1707
     1708    psTrace(".psLib.dataManip.psFunctions.VectorBinDisect", 4,
     1709            "---- Exiting VectorBinDisect(): bin %d\n", min);
    16861710    return(min);
    16871711}
     
    17331757    float slope;
    17341758
     1759    psTrace(".psLib.dataManip.psFunctions.psSpline1DGen", 4,
     1760            "---- Calling psSpline1DGen()\n");
     1761
    17351762    if (data->n != (1 + spline->n)) {
    17361763        psLogMsg(__func__, PS_LOG_WARN,
     
    17441771            slope = (data->data.F32[i+1] - data->data.F32[i]) /
    17451772                    (spline->domains[i+1] - spline->domains[i]);
    1746             (spline->spline[0])->coeff[0] = data->data.F32[i] -
     1773            (spline->spline[i])->coeff[0] = data->data.F32[i] -
    17471774                                            (slope * spline->domains[i]);
    1748             (spline->spline[0])->coeff[1] = slope;
    1749         }
     1775            //printf("HMMM (%f, %f, %f)\n", data->data.F32[i], slope, spline->domains[i]);
     1776
     1777            (spline->spline[i])->coeff[1] = slope;
     1778            psTrace(".psLib.dataManip.psFunctions.psSpline1DGen", 4,
     1779                    "---- spline %d coeffs are (%f, %f)\n", i,
     1780                    (spline->spline[i])->coeff[0],
     1781                    (spline->spline[i])->coeff[1]);
     1782        }
     1783        psTrace(".psLib.dataManip.psFunctions.psSpline1DGen", 4,
     1784                "---- Exiting psSpline1DGen()\n");
    17501785        return((psSpline1D *) spline);
    17511786    } else if (4 == (spline->spline[0])->n) {
Note: See TracChangeset for help on using the changeset viewer.