V
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