【问题标题】:Color function: darken and lighten颜色功能:变暗变亮
【发布时间】:2013-08-18 01:25:12
【问题描述】:

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

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

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

谁能指出我正确的方向?

【问题讨论】:

    标签: java graphics colors


    【解决方案1】:

    我不太确定你想要什么颜色,但是如果你想让高于平均水平的颜色更亮,低于平均水平的颜色更暗,那么请执行以下操作:

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

    【讨论】:

      猜你喜欢
      • 2020-04-04
      • 2013-01-09
      • 2020-06-09
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      • 2020-05-17
      相关资源
      最近更新 更多