1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
void (int x1, int y1, int x2, int y2) { if (x1 > x2) { swap(x1, x2); swap(y1, y2); } int dx = x2 - x1, dy = y2 - y1; int yi = 1; if(dy<0) { yi = -1; dy = -dy; } int d = 2 * dy - dx; int y = y1;
for (int x = x1;x<= x2;++x) { FillCell(x, y); if (d > 0) { y += yi; d -= 2*dx; } d += 2*dy; } } void DrawMPHigh(int x1, int y1, int x2, int y2) { if (y1 > y2) { swap(x1, x2); swap(y1, y2); } int dx = x2 - x1, dy = y2 - y1; int xi = 1; if(dx<0) { xi = -1; dx = -dx; } int d = 2 * dx - dy; int x = x1;
for (int y = y1; y <= y2;++y) { FillCell(x, y); if (d > 0) { x += xi; d -= 2 * dy; } d += 2 * dx; } } void DrawMidPoint(int x1, int y1, int x2, int y2) { if (abs(y2 - y1) < abs(x2 - x1)) DrawMPLow(x1, y1, x2, y2); else DrawMPHigh(x1, y1, x2, y2); }
|
近期评论