Changeset 750 for trunk/psLib/src/math/psPolynomial.c
- Timestamp:
- May 20, 2004, 3:04:45 PM (22 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psPolynomial.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psPolynomial.c
r737 r750 24 24 psGaussian(float x, 25 25 float mean, 26 float stddev) 27 { 28 return(exp(-((x-mean) * (x-mean)) / (2.0 * stddev * stddev))); 26 float stddev, 27 int normal) 28 { 29 float tmp = 0.0; 30 31 if (nomal == true) { 32 tmp = 1.0 / sqrtf(2.0 * PI * (stddev * stddev)); 33 return(tmp * exp(-((x-mean) * (x-mean)) / (2.0 * stddev * stddev))); 34 } else { 35 return(exp(-((x-mean) * (x-mean)) / (2.0 * stddev * stddev))); 36 } 37 } 38 39 psVector *psGaussianDev(float mean, 40 float sigma, 41 int Npts) 42 { 43 psVector *gauss = NULL; 44 45 gauss = psVectorAlloc(Npts, PS_TYPE_FLOAT); 29 46 } 30 47 … … 204 221 205 222 /***************************************************************************** 206 Polynomial coefficients will be accessed in (x,y,z)fashion.223 Polynomial coefficients will be accessed in [w][x][y][z] fashion. 207 224 *****************************************************************************/ 208 225 float … … 212 229 int loop_x = 0; 213 230 float polySum = 0.0; 231 float xSum = 1.0; 214 232 215 233 for (loop_x=0;loop_x<myPoly->n;loop_x++) { 216 polySum+= x + myPoly->coeff[loop_x]; 234 polySum+= xSum * myPoly->coeff[loop_x]; 235 xSum*=x; 217 236 } 218 237 … … 229 248 int loop_y = 0; 230 249 float polySum = 0.0; 250 float xSum = 1.0; 251 float ySum = 1.0; 231 252 232 253 for (loop_x=0;loop_x<myPoly->nX;loop_x++) { 254 xSum = xSum; 233 255 for (loop_y=0;loop_y<myPoly->nY;loop_y++) { 234 polySum+= x + myPoly->coeff[loop_x][loop_y]; 235 } 256 polySum+= ySum * myPoly->coeff[loop_x][loop_y]; 257 ySum*=y; 258 } 259 xSum*=x; 236 260 } 237 261 … … 249 273 int loop_z = 0; 250 274 float polySum = 0.0; 275 float xSum = 1.0; 276 float ySum = 1.0; 277 float zSum = 1.0; 251 278 252 279 for (loop_x=0;loop_x<myPoly->nX;loop_x++) { 280 ySum = xSum; 253 281 for (loop_y=0;loop_y<myPoly->nY;loop_y++) { 282 zSum = ySum; 254 283 for (loop_z=0;loop_z<myPoly->nZ;loop_z++) { 255 polySum+= x + myPoly->coeff[loop_x][loop_y][loop_z]; 256 } 257 } 284 polySum+= zSum * myPoly->coeff[loop_x][loop_y][loop_z]; 285 zSum*=z; 286 } 287 ySum*=y; 288 } 289 xSum*=x; 258 290 } 259 291 … … 273 305 int loop_z = 0; 274 306 float polySum = 0.0; 307 float wSum = 1.0; 308 float xSum = 1.0; 309 float ySum = 1.0; 310 float zSum = 1.0; 275 311 276 312 for (loop_w=0;loop_w<myPoly->nW;loop_w++) { 313 xSum = wSum; 277 314 for (loop_x=0;loop_x<myPoly->nX;loop_x++) { 315 ySum = xSum; 278 316 for (loop_y=0;loop_y<myPoly->nY;loop_y++) { 317 zSum = ySum; 279 318 for (loop_z=0;loop_z<myPoly->nZ;loop_z++) { 280 polySum+= x + myPoly->coeff[loop_w][loop_x][loop_y][loop_z]; 319 polySum+= zSum * 320 myPoly->coeff[loop_w][loop_x][loop_y][loop_z]; 321 zSum*=z; 281 322 } 282 } 283 } 323 ySum*=y; 324 } 325 xSum*=x; 326 } 327 wSum*=w; 284 328 } 285 329 … … 461 505 } 462 506 507 /***************************************************************************** 508 Polynomial coefficients will be accessed in [w][x][y][z] fashion. 509 *****************************************************************************/ 463 510 double 464 ps evalDPolynomial1D(double x,465 const ps Polynomial1D *myPoly)511 psDEvalPolynomial1D(double x, 512 const psDPolynomial1D *myPoly) 466 513 { 467 514 int loop_x = 0; 468 515 double polySum = 0.0; 516 double xSum = 1.0; 469 517 470 518 for (loop_x=0;loop_x<myPoly->n;loop_x++) { 471 polySum+= x + myPoly->coeff[loop_x]; 519 polySum+= xSum * myPoly->coeff[loop_x]; 520 xSum*=x; 472 521 } 473 522 … … 477 526 478 527 double 479 ps evalDPolynomial2D(double x,528 psDEvalPolynomial2D(double x, 480 529 double y, 481 const ps Polynomial2D *myPoly)530 const psDPolynomial2D *myPoly) 482 531 { 483 532 int loop_x = 0; 484 533 int loop_y = 0; 485 534 double polySum = 0.0; 535 double xSum = 1.0; 536 double ySum = 1.0; 486 537 487 538 for (loop_x=0;loop_x<myPoly->nX;loop_x++) { 539 xSum = xSum; 488 540 for (loop_y=0;loop_y<myPoly->nY;loop_y++) { 489 polySum+= x + myPoly->coeff[loop_x][loop_y]; 490 } 541 polySum+= ySum * myPoly->coeff[loop_x][loop_y]; 542 ySum*=y; 543 } 544 xSum*=x; 491 545 } 492 546 … … 495 549 496 550 double 497 ps evalDPolynomial3D(double x,551 psDEvalPolynomial3D(double x, 498 552 double y, 499 553 double z, 500 const ps Polynomial3D *myPoly)554 const psDPolynomial3D *myPoly) 501 555 { 502 556 int loop_x = 0; … … 504 558 int loop_z = 0; 505 559 double polySum = 0.0; 560 double xSum = 1.0; 561 double ySum = 1.0; 562 double zSum = 1.0; 506 563 507 564 for (loop_x=0;loop_x<myPoly->nX;loop_x++) { 565 ySum = xSum; 508 566 for (loop_y=0;loop_y<myPoly->nY;loop_y++) { 567 zSum = ySum; 509 568 for (loop_z=0;loop_z<myPoly->nZ;loop_z++) { 510 polySum+= x + myPoly->coeff[loop_x][loop_y][loop_z]; 511 } 512 } 569 polySum+= zSum * myPoly->coeff[loop_x][loop_y][loop_z]; 570 zSum*=z; 571 } 572 ySum*=y; 573 } 574 xSum*=x; 513 575 } 514 576 … … 517 579 518 580 double 519 ps evalDPolynomial4D(double w,581 psDEvalPolynomial4D(double w, 520 582 double x, 521 583 double y, 522 584 double z, 523 const ps Polynomial4D *myPoly)585 const psDPolynomial4D *myPoly) 524 586 { 525 587 int loop_w = 0; … … 528 590 int loop_z = 0; 529 591 double polySum = 0.0; 592 double wSum = 1.0; 593 double xSum = 1.0; 594 double ySum = 1.0; 595 double zSum = 1.0; 530 596 531 597 for (loop_w=0;loop_w<myPoly->nW;loop_w++) { 598 xSum = wSum; 532 599 for (loop_x=0;loop_x<myPoly->nX;loop_x++) { 600 ySum = xSum; 533 601 for (loop_y=0;loop_y<myPoly->nY;loop_y++) { 602 zSum = ySum; 534 603 for (loop_z=0;loop_z<myPoly->nZ;loop_z++) { 535 polySum+= x + myPoly->coeff[loop_w][loop_x][loop_y][loop_z]; 604 polySum+= zSum * 605 myPoly->coeff[loop_w][loop_x][loop_y][loop_z]; 606 zSum*=z; 536 607 } 537 } 538 } 539 } 540 541 return(polySum); 542 } 608 ySum*=y; 609 } 610 xSum*=x; 611 } 612 wSum*=w; 613 } 614 615 return(polySum); 616 }
Note:
See TracChangeset
for help on using the changeset viewer.
