Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. struct MCINFO_POINT {
  2. long x;
  3. long y;
  4. };
  5. struct MCINFO_GENERATE {
  6. MCINFO_POINT m_p;
  7. MCINFO_POINT m_dE;
  8. long t, m_T, m_E;
  9. bool f;
  10. char sx, sy;
  11. MCINFO_GENERATE(const MCINFO_POINT& a, const MCINFO_POINT& b) :
  12. m_p(a), t(0), m_E(0)
  13. {
  14. const long dx = (b.x - a.x);
  15. const long dy = (b.y - a.y);
  16. sx = (dx > 0) ? 1 : -1;
  17. sy = (dy > 0) ? 1 : -1;
  18. m_dE.x = abs(dx);
  19. m_dE.y = abs(dy);
  20. f = (m_dE.x > m_dE.y);
  21. m_T = max(m_dE.x, m_dE.y);
  22. };
  23. bool hasNext() { return t <= m_T; }
  24. bool getNext(MCINFO_POINT& pt) {
  25. pt = m_p;
  26. ++t;
  27. if (t > m_T) {
  28. return false;
  29. }
  30. if (f)
  31. {
  32. m_p.x += sx;
  33. m_E += m_dE.y;
  34. if (2 * m_E >= m_dE.x)
  35. {
  36. m_p.y += sy;
  37. m_E -= m_dE.x;
  38. }
  39. }
  40. else
  41. {
  42. m_p.y += sy;
  43. m_E += m_dE.x;
  44. if (2 * m_E >= m_dE.y)
  45. {
  46. m_p.x += sx;
  47. m_E -= m_dE.y;
  48. }
  49. }
  50. return true;
  51. }
  52. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement