easing_test.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Copyright 2010-2025 Branimir Karadzic. All rights reserved.
  3. * License: https://github.com/bkaradzic/bx/blob/master/LICENSE
  4. */
  5. #include "test.h"
  6. #include <bx/easing.h>
  7. #include <bx/file.h>
  8. TEST_CASE("easing", "")
  9. {
  10. bx::WriterI* writer = bx::getNullOut();
  11. bx::Error err;
  12. for (uint32_t ee = 0; ee < bx::Easing::Count; ++ee)
  13. {
  14. bx::write(writer, &err, "\n\n%d\n", ee);
  15. const bx::EaseFn easing = bx::getEaseFunc(bx::Easing::Enum(ee) );
  16. const int32_t nx = 64;
  17. const int32_t ny = 10;
  18. bx::write(writer, &err, "\t/// ^\n");
  19. for (int32_t yy = ny+4; yy >= -5; --yy)
  20. {
  21. const float ys = float(yy )/float(ny);
  22. const float ye = float(yy+1.0)/float(ny);
  23. bx::write(writer, &err, "\t/// %c", yy != 0 ? '|' : '+');
  24. for (int32_t xx = 0; xx < nx; ++xx)
  25. {
  26. int32_t jj = 0;
  27. for (; jj < 10; ++jj)
  28. {
  29. const float tt = float(xx*10+jj)/10.0f/float(nx);
  30. const float vv = easing(tt);
  31. if (vv >= ys
  32. && vv < ye)
  33. {
  34. bx::write(writer, &err, "*");
  35. break;
  36. }
  37. }
  38. if (jj == 10)
  39. {
  40. bx::write(writer, &err, "%c", yy != 0 ? ' ' : '-');
  41. }
  42. }
  43. bx::write(writer, &err, "%s\n", yy != 0 ? "" : ">");
  44. }
  45. }
  46. }