我正在对几个 alpha 值做一些动画,并想设置相对于引用值的值
obj1.alpha = refAlpha + 0.25f;
obj2.alpha = refAlpha + 0.75f;
例如,如果 refAlpha 为 0.5,那么我希望 obj2.alpha 为 0.25 而不是 1.25。 有什么数学函数可以做到这一点?
最佳答案
mod 运算符 %
将在包装方面发挥作用。 (它适用于 float 和整数)。
obj1.alpha = (refAlpha + 0.25f) % 1f
obj2.alpha = (refAlpha + 0.75f) % 1f
public static void main(String[] args) {
System.out.println(1.25f % 1f); // --> 0.25
}
不幸的是,java 并没有完全按照数学定义实现 mod。 a % b
返回 (-b, b)
范围内的值,而不是 [0, b)
。如果您曾经减去值,则结果可能因此为负数。如果这是您担心的用例,请考虑创建一个辅助函数来处理它:
public static float mod(float a, float b){
return ((a % b) + b) % b;
}
这将使结果在 [0,b)
范围内。
关于java - 如何添加 float 但将总数保持/包装在 0..1 范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31594686/