Java 颜色功能:变暗和变亮

Java 颜色功能:变暗和变亮,java,graphics,colors,Java,Graphics,Colors,我目前正在编写一个程序,将呈现我的minecraft世界。 太可爱了! 问题是下一部分涉及的数学: 我想给我的函数一个平均高度和一个当前高度 如果高度低于平均高度,我将用黑色覆盖这一部分,它的透明度将取决于数量,但也会被钳制以不使其变黑 以下是我目前拥有的: public Color getHeightColor(float averageHeight, float height) { if (averageHeight > height) { return new

我目前正在编写一个程序,将呈现我的minecraft世界。 太可爱了! 问题是下一部分涉及的数学: 我想给我的函数一个平均高度和一个当前高度

如果高度低于平均高度,我将用黑色覆盖这一部分,它的透明度将取决于数量,但也会被钳制以不使其变黑

以下是我目前拥有的:

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));
    }
}
不幸的是,这并不是我想要它做的任何事情,我只是想不出一个好的方法来做这件事,因为我的数学非常糟糕

编辑:经过一番思考后,我打算去掉灯光,而只是把它调暗,给它一种深度感


你们中有谁能给我指出正确的方向吗?

我不太确定你们到底想要什么颜色,但是,如果你们想让高于平均值的颜色更亮,而低于平均值的颜色更暗,那么可以做如下操作:

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