BasicInterpolator.cpp 558 B

12345678910111213141516171819202122
  1. #include "BasicInterpolator.h"
  2. #include "Block.h"
  3. Block *BasicInterpolator::interpolateBlocks( Block *a, Block *b, double aWeight, double bWeight, Noise *zNoise )
  4. {
  5. if( aWeight < bWeight )
  6. return interpolateBlocks( b, a, bWeight, aWeight, zNoise );
  7. double score = bWeight / aWeight;
  8. if( score < 0.8 )
  9. {
  10. b->release();
  11. return a;
  12. }
  13. score = ( score - 0.8 ) * 5;
  14. if( score < zNoise->getNoise( ( score + 60 ) * 5, 100, 50 ) )
  15. {
  16. b->release();
  17. return a;
  18. }
  19. a->release();
  20. return b;
  21. }