Лінійний алгоритм Брезена може бути використаний для визначення точок в растровій сітці для побудови щоб досягти відповідного візуального наближення відрізка лінії.
Алгоритм охоплює растерізацію лінії, визначеної початковими та кінцевими точками, у просторі координат, де походження знаходиться в лівій верхній частині. Цілісні координати передбачаються для відображення в піксельних центрах. Зокрема, основна форма алгоритму охоплює лише один октант кола: той, де у лінії є координати X і Y, що збільшуються, але негативний нахил з абсолютним значенням менше 1. Усі інші октанти можна отримати як прості перетворення цього основний октант.
У psuedocode ця основна форма виглядає так:
void DrawLine(Point origin, Point endpoint, Bitmap surface) {
deltaX = endpoint.X - origin.X
deltaY = endpoint.Y - origin.Y
error = 0
// Note the below fails for completely vertical lines.
deltaError = absoluteValue(deltaY / deltaX)
Y = origin.Y
for (X from origin.X to endpoint.X) {
surface.PlotPixel(X, Y)
error = error + deltaError
if (error >= 0.5) {
++Y;
error -= 1.0
}
}
}
На веб-сайті Rosetta Code є колекція конкретних реалізацій на різних мовах .
Можливо, вас також зацікавить лінійний алгоритм Ву , який дозволяє виконувати згладжування.