【发布时间】:2014-05-07 12:42:52
【问题描述】:
我正在尝试制作一个涉及计算执行一些简单数学运算所需的力的游戏。我有一个dx 变量,它表示沿 X 轴的速度和方向。现在我想减去摩擦,但如果dx 的方向为负,则它必须是一个加法。有没有办法在返回有符号值的同时使用绝对值从dx 中减去摩擦?我正在研究按位运算符,但我不知道有什么可能性......
我能做什么(我认为):
sign = ( dx >> 31 ) << 31;
dx = (dx << 1) >> 1;
dx = ( dx - friction ) & sign;
不确定这是否可行,只是这个想法......有任何改进吗?
编辑:这就是我所做的:
dxSign = Integer.signum(dx) * -1;
dySign = Integer.signum(dy) * -1;
dy = Math.abs(dy);
dx = Math.abs(dx);
fric = body.friction * mass;
dx = ( dx > fric ) ? dx - fric : 0;
dy = ( dy > fric ) ? dy - fric : 0;
dx = dx * absorption;
dy = dy * absorption;
dx *= dxSign;
dy *= dySign;
【问题讨论】:
标签: java math integer bit-manipulation sign