//DDA函数用于行生成这里,对于计算x和y中的增量,使用float,需要在那里使用float,如果不使用会影响的内容
void DDA(int X0, int Y0, int X1, int Y1)
{
// calculate dx & dy
int dx = X1 - X0;
int dy = Y1 - Y0;
// calculate steps required for generating pixels
int steps = abs(dx) > abs(dy) ? abs(dx) : abs(dy);
// calculate increment in x & y for each steps
float Xinc = dx / (float) steps;
float Yinc = dy / (float) steps;
// Put pixel for each step
float X = X0;
float Y = Y0;
int i;
for (i = 0; i <= steps; i++)
{
putpixel (X,Y,RED); // put pixel at (X,Y)
X += Xinc; // increment in x at each step
Y += Yinc; // increment in y at each step
delay(100); // for visualization of line-
// generation step by step
}
}
因为变量dx、dy和steps是整数,所以如果不强制转换(float(dx/steps
或dy/steps
的结果总是整数。您也可以使用1.0 * dx/steps
而不是使用(float) steps
您可以通过以下代码(或在线平台链接(进行测试:
int main() {
int a = 3;
int b = 10;
float c;
c = (float) b/ a;
printf("%fn", c);
return 0;
}
(float(将表达式类型转换为float。
如果浮动未用于:
float Xinc = dx / (float) steps; // float Xinc = dx / steps;
然后(dx/steps(的结果将被截断为int(5/2将为2(。