Алгоритм Брезенхема
Я пытаюсь нарисовать линию в 2D между двумя точками. У меня есть следущий алгоритм:
Steep = 0
if(abs(X0-X1)<abs(Y0-Y1)) {
TempA = Y0
Y0 = X0
X0 = TempA
TempB = Y1
Y1 = X1
X1 = TempB
Steep = 1
}
if(X0>X1) {
TempA = X0
X0 = X1
X1 = TempA
TempB = Y0
Y0 = Y1
Y1 = TempB
}
for(TempX=X0,X1) {
T = (TempX-X0)/(X1-X0)
TempY = ceil(Y0*(abs(1-T)) + Y1*T)
if(Steep) {
Draw[TempX*Res+TempY,vector] = C
}else{
Draw[TempY*Res+TempX,vector] = C
}
}
Он работает, но криво и из-за этого линии иногда не отрисовываются если расположить точки по другому. Помогите мне найти ошибку, заранее спасибо!
(p.s. не пытайтесь определить яп на котором написан код, пожалуйста.)