我有一个for循环,内部整数x将从533增加到813.这意味着280增量.在同一个循环中,我想在上面发生时将y的值从300减少到200.这意味着当x为533 y时必须为300,当x为813时,y必须为200.我知道这可以通过在每次迭代中将y的值减少100/280来实现.但两者都是整数.
以下是我使用的一些代码示例,但它不起作用:
for(int i = 0; i < b.getSize(); i++) {
x = b.getCar(i).getPosX();
b.getCar(i).setPosX(++x);
if(x >= ((getWidth() / 2) - 140) && x < ((getWidth() / 2) + 140)){
y = b.getCar(i).getPosY();
y = (double)(y - (10.0f / 28.0f));
b.getCar(i).setPosY((int)y);
}
}
我怎么可能这样做.谢谢!
解决方法:
有两种解决方案,简单和复杂的解决方案.简单的一个:
y = yoff + (int)( (double) height * x / width )
其中yoff = 300,身高= -100,宽度= 813-533.基本上,您执行浮点运算,然后对结果进行舍入.
或者,使用Bresenham line algorithm使用纯整数数学可以完成相同的操作,但这将需要更多的代码.
标签:java,math,graphics
来源: https://codeday.me/bug/20190716/1479985.html