@Slavon7

Как реализовать Алгоритм Брезенхэма?

Написал програму которая выводит линию но неполучаеться нарисовать её так чтобы она была по алгоритму Брезенхэма

void line_m() {

  float DELTA = 0.02, x_div, y_div;
  int X_X1, X2_X1, Y_Y1, Y2_Y1, x, y;

  X2_X1 = abs(X2 - X1);
  Y2_Y1 = abs(Y2 - Y1);

  for (y = Y2_Y1; y >= 0; y--) {
    for (x = 0; x <= X2_X1; x += 8) {
      X_X1 = x - X1;
      Y_Y1 = (Y2_Y1 - y) - Y1;
      x_div = (float)X_X1 / (float)X2_X1;
      y_div = (float)Y_Y1 / (float)Y2_Y1;
      if ((fabs(x_div - y_div)) < DELTA) {
        put_pix(x + 20, y + 150, COLOR3, 0xff, 0, 0);
      }
    }
  }
}


Результат моего кода
63691e329f006786253300.png

Результат который я ожидаю
63691e4ccc510807873559.png
  • Вопрос задан
  • 176 просмотров
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Брезенхем не использует вещественные числа. В этом его суть. Вещественные появляются просто в ходе доказательства его правильности. Но сама реализация - только на целых числах.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы