颜色功能:变暗和变亮

时间:2013-08-15 19:01:01

标签: java graphics colors

我正在编写一个能够渲染我的世界世界的程序。 它变得可爱! 问题是下一步涉及的数学: 我想给我的函数一个平均高度和当前高度。

如果高度低于平均高度,我将用黑色覆盖此部分,其透明度将取决于数量,但也会被限制为不使其变黑。

以下是我目前的情况:

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));
    }
}

不幸的是,这并没有做我想做的任何事情,我只是无法找到一个很好的方法,因为我在数学上非常糟糕。

编辑:经过一番思考后,我将取消闪电,而只是将它变暗以使其具有深度感。

你们有没有人能指出我正确的方向?

1 个答案:

答案 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));
    }
}