Автор Арсен Арутюнян задал вопрос в разделе Другие языки и технологии
Алгоритм Брезенхэма и получил лучший ответ
Ответ от Капитан Гугл[гуру]
Горизонтальные и вертикальные линии лучше вообще вынести в отдельные ветви алгоритма - они чертятся тупо одним циклом, без дополнительных вычислений.
И я плохо понимаю, что там расписывать - вроде код довольно простой: если ошибка больше 0,5, сдвигаемся по вертикали, меньше - по горизонтали; просто чтобы не пользоваться вещественными числами, формулы домножены на знаменатель (и на 2, чтобы 0,5 стало 1).Капитан Гугл
Искусственный Интеллект
(144871)
на каждом шаге мы делаем одно из двух: либо сохраняем тот же y, либо уменьшаем его на 1. Что из этих двух выбрать — можно решить, отслеживая значение ошибки, которое означает — вертикальное расстояние между текущим значением y и точным значением y для текущего x. Всякий раз, когда мы увеличиваем x, мы увеличиваем значение ошибки на величину наклона s, приведённую выше. Если ошибка превысила 0.5, линия стала ближе к следующему y, поэтому мы уменьшаем y на единицу, одновременно уменьшая значение ошибки на 1.
Алгоритм Брезенхема нужен для определения какие именно пиксели нужно закрасить, когда мы чертим, допустим, наклонную прямую.. . А для вертикальных и горизонтальных линий не нужен никакой алгоритм, там пиксели, которые нужно закрасить - очевидны.
Так же в непонятках, но по другому вопросу. Зачем делать то, что уже реализовано в примитивах?
Ну сделал такое, но на фортране, для прикола. Пользовал книгу Ж. Эгрон Синтез изображений. Базовые алгоритмы. Перекладывать на спп лень. Там всё просто, а в вики вполне адекватно и добавить нечего
Фрагмент из книги
На каждом шаге находит точку, наиболее близко расположенную к идеальному отрезку. с этой целью рекуррентно оценивает разность. с1-с2<0 - по оси, иначе диагонали. Это и есть ошибка