我正在编写一个能够渲染我的世界世界的程序。 它变得可爱! 问题是下一步涉及的数学: 我想给我的函数一个平均高度和当前高度。
如果高度低于平均高度,我将用黑色覆盖此部分,其透明度将取决于数量,但也会被限制为不使其变黑。
以下是我目前的情况:
public Color getHeightColor(float averageHeight, float height) {
if (averageHeight > height) {
return new Color(0, 0, 0, clamp(height / averageHeight, 0f, 0.8f));
} else {
return new Color(1, 1, 1, clamp(averageHeight / height, 0f, 0.8f));
}
}
不幸的是,这并没有做我想做的任何事情,我只是无法找到一个很好的方法,因为我在数学上非常糟糕。
编辑:经过一番思考后,我将取消闪电,而只是将它变暗以使其具有深度感。
你们有没有人能指出我正确的方向?
答案 0 :(得分:0)
我不太确定你想要的颜色是什么,但是如果你想要比平均颜色更高而且低于平均颜色更暗,那么做一些像:
// This assumes both args are positive and non-zero
public Color getHeightColor(float averageHeight, float height) {
if (averageHeight > height) {
return new Color(0f, 0f, 0f, 1f - (height / averageHeight));
} else {
return new Color(1f, 1f, 1f, 1f - (averageHeight / height));
}
}