Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct MCINFO_POINT {
- long x;
- long y;
- };
- struct MCINFO_GENERATE {
- MCINFO_POINT m_p;
- MCINFO_POINT m_dE;
- long t, m_T, m_E;
- bool f;
- char sx, sy;
- MCINFO_GENERATE(const MCINFO_POINT& a, const MCINFO_POINT& b) :
- m_p(a), t(0), m_E(0)
- {
- const long dx = (b.x - a.x);
- const long dy = (b.y - a.y);
- sx = (dx > 0) ? 1 : -1;
- sy = (dy > 0) ? 1 : -1;
- m_dE.x = abs(dx);
- m_dE.y = abs(dy);
- f = (m_dE.x > m_dE.y);
- m_T = max(m_dE.x, m_dE.y);
- };
- bool hasNext() { return t <= m_T; }
- bool getNext(MCINFO_POINT& pt) {
- pt = m_p;
- ++t;
- if (t > m_T) {
- return false;
- }
- if (f)
- {
- m_p.x += sx;
- m_E += m_dE.y;
- if (2 * m_E >= m_dE.x)
- {
- m_p.y += sy;
- m_E -= m_dE.x;
- }
- }
- else
- {
- m_p.y += sy;
- m_E += m_dE.x;
- if (2 * m_E >= m_dE.y)
- {
- m_p.x += sx;
- m_E -= m_dE.y;
- }
- }
- return true;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement