Bresenham die 2te
-
void Bresenham(int d1x, int d1y, int d2x, int d2y) { bool X, Y, Z; // zur Bestimmung der Bewegunsrichtung int da, db; // delta_a und delta_b int *m; // Bewegungsrichtung/Vektoren // delta a, delta b und Bewegungsrichtung bestimmen int dx = abs(d2x) - abs(d1x); int dy = abs(d2y) - abs(d1y); if(abs(dx)-abs(dy)>=0) { da = abs(dx); db = abs(dy); Z = true; } else { da = abs(dy); db = abs(dx); Z = false; } if(dx >= 0) X = true; else X = false; if(dy >= 0) Y = true; else Y = false; int array[8][4] = { { 0,-1,-1,-1 }, { 0,-1,1,-1 }, { 0,1,-1,1 }, { 0,1,1,1 }, { -1,0,-1,-1 }, { 1,0,1,-1 }, { -1,0,-1,1 }, { 1,0,1,1 }, }; m = array[(X?1:0) + (Y?2:0) + (Z?4:0)]; int gradient = (db<<1) - da; int x = d1x; int y = d1y; SetPixel(x, y); for(int i = 0; i < da; i++) { if(gradient >= 0) { x = x + m[2]; y = y + m[3]; gradient = gradient + (db<<1) - (da<<1); } else { x = x + m[0]; y = y + m[1]; gradient = gradient + (db<<1); } SetPixel(x, y); } }
ich hoffe der code ist bis auf die SetPixel Funktion Standardkonfrom