IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 9, 2006, 4:19:56 AM (20 years ago)
Author:
magnier
Message:

adding psPolynomial2DRecycle, psPolynomial2DCopy, psPolynomial2D_dX, psPolynomial2D_dY

File:
1 edited

Legend:

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

    r10593 r10598  
    178178}
    179179
    180 # if (0)
    181     psPolynomial2D *psPolynomial2D_dX (psPolynomial2D *poly)
    182 {
    183 
     180psPolynomial2D *psPolynomial2D_dX (psPolynomial2D *out, psPolynomial2D *poly)
     181{
    184182    int nXout = poly->nX - 1;
    185183    int nYout = poly->nY;
    186184
    187     psPolynomial2D *dX = psPolynomial2DAlloc (PS_POLYNOMIAL_ORD, nXout, nYout);
    188 
    189     for (int i = 0; i < nXout; i++) {
    190         for (int j = 0; j < nYout; j++) {
    191             dX->mask[i][j] = poly->mask[i+1][j];
    192             dX->coeff[i][j] = poly->coeff[i+1][j] * i+1;
    193         }
    194     }
    195 }
    196 
    197 psPolynomial2D *psPolynomial2D_dY (psPolynomial2D *poly)
    198 {
    199 
    200     int nXout = poly->nX;
    201     int nYout = poly->nY - 1;
    202 
    203     psPolynomial2D *dX = psPolynomial2DAlloc (PS_POLYNOMIAL_ORD, nXout, nYout);
    204 
    205     for (int i = 0; i < nXout; i++) {
    206         for (int j = 0; j < nYout; j++) {
    207             dX->mask[i][j] = poly->mask[i+1][j];
    208             dX->coeff[i][j] = poly->coeff[i][j+1] * j+1;
    209         }
    210     }
    211 }
    212 #endif
     185    if (out == NULL) {
     186        out = psPolynomial2DAlloc (PS_POLYNOMIAL_ORD, nXout, nYout);
     187    } else {
     188        psPolynomial2DRecycle (out, poly->type, nXout, nYout);
     189    }
     190
     191    for (int i = 0; i < nXout + 1; i++) {
     192        for (int j = 0; j < nYout + 1; j++) {
     193            out->mask[i][j] = poly->mask[i+1][j];
     194            out->coeff[i][j] = poly->coeff[i+1][j] * (i+1);
     195        }
     196    }
     197    return out;
     198}
     199
     200psPolynomial2D *psPolynomial2D_dY (psPolynomial2D *out, psPolynomial2D *poly)
     201{
     202
     203    int nXout = poly->nX - 1;
     204    int nYout = poly->nY;
     205
     206    if (out == NULL) {
     207        out = psPolynomial2DAlloc (PS_POLYNOMIAL_ORD, nXout, nYout);
     208    } else {
     209        psPolynomial2DRecycle (out, poly->type, nXout, nYout);
     210    }
     211
     212    for (int i = 0; i < nXout + 1; i++) {
     213        for (int j = 0; j < nYout + 1; j++) {
     214            out->mask[i][j] = poly->mask[i][j+1];
     215            out->coeff[i][j] = poly->coeff[i][j+1] * (j+1);
     216        }
     217    }
     218    return out;
     219}
Note: See TracChangeset for help on using the changeset viewer.