1

我目前正在编写一个程序来渲染我的 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));
    }
}

不幸的是,这并没有做任何我想做的事情,我只是想不出一个好的方法来做这件事,因为我的数学非常糟糕。

编辑:经过一番思考,我将取消亮化,而是将其变暗以赋予其深度感。

你们中的任何人都可以指出我正确的方向吗?

4

1 回答 1

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));
    }
}
于 2013-08-15T20:10:35.160 回答