Algoritma garis Bresenham dapat digunakan untuk menentukan titik mana dalam raster grid untuk plot untuk mencapai pendekatan visual yang sesuai dari segmen garis.
Algoritma ini mencakup rasterisasi garis yang ditentukan oleh titik asal dan titik akhir dalam ruang koordinat di mana titik asal berada di kiri atas. Koordinat integer dianggap memetakan ke pusat piksel. Khususnya, bentuk dasar dari algoritma hanya mencakup satu oktan dari lingkaran: yang mana garis memiliki peningkatan koordinat X dan Y tetapi kemiringan negatif dengan nilai absolut kurang dari 1. Semua oktan lainnya dapat diturunkan sebagai transformasi sederhana dari ini oktan dasar.
Dalam psuedocode, bentuk dasar ini terlihat seperti:
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
}
}
}
Situs web Kode Rosetta memiliki koleksi implementasi konkret dalam berbagai bahasa .
Anda juga mungkin tertarik pada algoritma garis Wu , yang memungkinkan untuk anti-aliasing.