Алгоритм линии Брезенхема отрисовки линий

Я пытаюсь реализовать алгоритм линии Брезенхэма в программе рисования c ++.

Он хорошо рисует, когда х увеличивается, но кажется, что делает странный алгоритм

int dx = old_x - x;
int dy = old_y - y;

if (dx >= 0){
step_x = 1;
} else {
step_x = -1;
dx = fabs(dx);
}

if (dy >= 0){
step_y = 1;
} else {
step_y = -1;
dy = fabs(dy);
}

int dx2 = dx * 2;
int dy2 = dy * 2;

if (dx > dy){
err =  dy2 - dx;

for (int i = 0; i <= dx; i++){
currTool.draw(old_x, old_y);
if (err >= 0){
err -= dx2;
old_y += step_y;
}
err += dy2;
old_x += step_y;
}
} else {
err = dx2 - dy;

for (int i = 0; i <= dy; i++){
currTool.draw(old_x, old_y);
if (err >= 0){
err -= dy2;
old_x += step_x;
}
err += dx2;
old_y += step_y;
}
}

Я перепробовал несколько вещей, например, щелкнув по x, y Я переписал код, следуя нескольким примерам, и мне не повезло.

Это ссылка на сайт, который я конвертировал

http://www.falloutsoftware.com/tutorials/dd/dd4.htm

Вот картина того, что происходит с моей программой

введите описание изображения здесь

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]