Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void CMisc::GetPoint(int x0, int y0, int x1, int y1, int * pX, int * pY, int * pError)
- { int dx, dy, x_inc, y_inc, error, index;
- int iResultX, iResultY;
- if ((x0 == x1) && (y0 == y1))
- { *pX = x0;
- *pY = y0;
- *pError = 0;
- return;
- }
- error = *pError;
- iResultX = x0;
- iResultY = y0;
- dx = x1 - x0;
- dy = y1 - y0;
- x_inc = -1;
- if (dx >= 0) { x_inc = 1; }
- else { dx = -dx; }
- y_inc = -1;
- if (dy >= 0) { y_inc = 1; }
- else { dy = -dy; }
- if (dx > dy)
- { for (index = 0; index <= dx; index++)
- { error += dy;
- if (error>dx)
- { error -= dx;
- iResultY += y_inc;
- }
- iResultX += x_inc;
- goto CALC_OK;
- }
- }
- else
- { for (index = 0; index <= dy; index++)
- { error += dx;
- if (error>0)
- { error -= dy;
- iResultX += x_inc;
- }
- iResultY += y_inc;
- goto CALC_OK;
- } }
- CALC_OK:;
- *pX = iResultX;
- *pY = iResultY;
- *pError = error;
- }
- void CMisc::GetPoint2(int x0, int y0, int x1, int y1, int * pX, int * pY, int * pError, int iCount)
- { int dx, dy, x_inc, y_inc, error, index;
- int iResultX, iResultY, iCnt = 0;
- if ((x0 == x1) && (y0 == y1))
- { *pX = x0;
- *pY = y0;
- *pError = 0;
- return;
- }
- error = *pError;
- iResultX = x0;
- iResultY = y0;
- dx = x1 - x0;
- dy = y1 - y0;
- x_inc = -1;
- if (dx >= 0) { x_inc = 1; }
- else { dx = -dx; }
- y_inc = -1;
- if (dy >= 0) { y_inc = 1; }
- else { dy = -dy; }
- if (dx>dy)
- { for (index = 0; index <= dx; index++)
- { error += dy;
- if (error > dx)
- { error -= dx;
- iResultY += y_inc;
- }
- iResultX += x_inc;
- iCnt++;
- if (iCnt >= iCount) goto CALC_OK;
- }
- }else
- { for (index = 0; index <= dy; index++)
- { error += dx;
- if (error > dy)
- { error -= dy;
- iResultX += x_inc;
- }
- iResultY += y_inc;
- iCnt++;
- if (iCnt >= iCount) goto CALC_OK;
- } }
- CALC_OK:;
- *pX = iResultX;
- *pY = iResultY;
- *pError = error;
- }
Add Comment
Please, Sign In to add comment