Я пытаюсь реализовать алгоритм линии Брезенхэма в программе рисования 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
Вот картина того, что происходит с моей программой
Задача ещё не решена.
Других решений пока нет …