Bresenham'ın çizgi algoritması , bir çizgi segmentinin uygun bir görsel yaklaşımını elde etmek için bir ızgara ızgarasındaki hangi noktaların çizileceğini belirlemek için kullanılabilir.
Algoritma, başlangıç noktasının sol üstte olduğu bir koordinat alanında başlangıç noktası ve bitiş noktaları tarafından tanımlanan bir çizginin rasterleştirilmesini kapsar. Tamsayı koordinatlarının piksel merkezlerine eşlendiği varsayılır. Özellikle, algoritmanın temel formu dairenin sadece bir oktanını kapsar: çizginin artan X ve Y koordinatlarına sahip olduğu, ancak mutlak değeri 1'den küçük olan negatif bir eğimin olduğu diğer tüm oktanlar bunun basit dönüşümleri olarak türetilebilir. temel oktan.
Psuedocode'da bu temel form şöyle görünür:
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 Kodu web sitesinde bir çeşitli dillerde somut uygulamalar koleksiyonu bulunmaktadır .
Ayrıca , kenar yumuşatmaya izin veren Wu'nun çizgi algoritmasıyla da ilgilenebilirsiniz .