我正在尝试在两点之间绘制一条 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
}
}
它有效,但它是弯曲的,因此,如果点的排列方式不同,有时不会绘制线条。帮我找出错误,在此先感谢!
(请不要试图猜测代码是用什么日本人写的。)
找到答案。您需要使用不同的公式。