Как алгоритм Брезенхема рисует прямые линии

Как алгоритм Брезенхема рисует прямые линииАх, программирование и алгоритмы — тема такая, что порой хочется спрятаться в шкаф с метрологоческими приборами и не показываться до лучших времён. Но сегодня мы отложим микрометры в сторону и окунёмся в мир компьютерной графики — а именно, узнаем, как же машина умудряется рисовать прямые линии!

Да-да, те самые отрезки, что кажутся нам такими простыми, но для компьютера — словно гора Эверест.

Когда-то давно понятия «машинная графика» не существовало вообще. Представьте себе: человек с карандашом чертит линии на бумаге — всё понятно и просто. А вот машина?

Машина тогда была как тот самый дедушка из анекдота: «Я в молодости думал, что телевизор — это чудо техники, а теперь у меня есть компьютер… который рисует точки!» Первые вычислительные машины были настолько примитивны, что выводить хоть какую-то картинку было сродни попытке научить кота играть на пианино — вроде возможно, но зачем?

Первые прорывы случились с появлением алфавитно-цифровых печатающих устройств (АЦПУ). Если честно, звучит как название секретного шпионского гаджета из фильма про Джеймса Бонда. В реальности это были электрические пишущие машинки с параллельной печатью и вращающимся барабаном.

Благодаря им можно было не только писать текст (что уже само по себе было чудом), но и создавать простенькие картинки из символов! Помните ASCII-графику? Это когда художник рисует портреты котиков с помощью букв и цифр.

Конечно, инженерной графикой там и не пахло, зато весело!

Ещё одним героем того времени стал осциллограф — устройство для отображения функций между двумя переменными. Если говорить по-простому: он показывал графики прямо на экране.

Скажу честно, осциллограф был как тот друг на вечеринке, который приходит с гитарой и начинает играть песни 80-х — полезный, но не всегда желанный гость. Зато его потомки вдохновили создание алфавитно-цифровых дисплеев и даже первых телевизионных растровых экранов.

А теперь внимание! Появились растровые дисплеи — такие штуки формируют изображение из множества точек (пикселей), подобно тому как художник рисует картину мазками кисти.

Только если бы художник был очень терпеливым роботом с миллионами маленьких кисточек. Растровый дисплей требует много памяти и скорости работы — представьте себе библиотеку книг размером с ваш холодильник!

Но есть ещё один вид дисплеев — векторные! Они рисуют не точки, а линии напрямую.

Это как если бы вы вместо того чтобы ставить миллионы точек на листе бумаги для создания изображения кошки, просто нарисовали контур карандашом за пару секунд. Векторные дисплеи были настоящими звёздами в эпоху ранних компьютеров: быстро рисовали чертежи без всякой лишней суеты.

Вспоминается старенький отечественный РИН-609 — такой себе дедушка среди дисплеев. Он создавал символы из отрезков прямых линий; чистый минимализм!

Если бы ему пришлось выбирать между растровым или векторным режимом, он бы сказал: «Лучше меньше да лучше». Вот так наши предки боролись за красоту линий без лишних точек.

Вот вам забавный случай из жизни программиста-графика: однажды коллега пытался объяснить бабушке смысл растрового изображения. Он говорил о пикселях и цветах до тех пор, пока бабушка не спросила: «А можно ли этим пикселям дать имя?

Чтобы я могла их звать по очереди?» Программист задумался… И решил написать программу для персонализации пикселей! Правда потом понял, что это уже слишком далеко ушло от реальности.