java能解决数学难题吗_java – 数学问题(在一个循环中增加和减少两个变量)

我有一个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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值