Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从高度编码的RGB值_C++_Colors_Rgb - Fatal编程技术网

C++ 从高度编码的RGB值

C++ 从高度编码的RGB值,c++,colors,rgb,C++,Colors,Rgb,我有一个程序,需要将高度表示为RGBT(浮点)值。即: [R, G, B, T (Transperancy)] -> [0.0f-1.0f, 0.0f-1.0f, 0.0f-1.0f, 0.0f-1.0f] 从概念上讲,我知道可以通过最大高度和最小高度之间的基本高度进行编码。我甚至有一些用于灰度高度编码的代码: double Heightmin=0; double Heightmax=23; osg::Vec4 getColourFromHeight(double height, do

我有一个程序,需要将高度表示为RGBT(浮点)值。即:

[R, G, B, T (Transperancy)] -> [0.0f-1.0f, 0.0f-1.0f, 0.0f-1.0f, 0.0f-1.0f]
从概念上讲,我知道可以通过最大高度和最小高度之间的基本高度进行编码。我甚至有一些用于灰度高度编码的代码:

double Heightmin=0;
double Heightmax=23;

osg::Vec4 getColourFromHeight(double height, double alpha=1.0) {

    double r=(height-Heightmin)/Heightmax;
    double b=(height-Heightmin)/Heightmax;
    double g=(height-Heightmin)/Heightmax;
    return osg::Vec4(r, g, b, 1.0);
}
我想知道的是,如果有一个算法比使用R和G更复杂,就像这样:

double r=(height-Heightmin)/Heightmax;
double b=0.0f;
double g=(Heightmax- height + Heightmin)/Heightmax;
(也就是说,G是R的倒转形式,因此在低值时,G将显示为更多的绿色,在高值时,G将显示为更多的红色

我希望能够利用RG和B提供逼真的高度编码景观:

这是一张72dpi RGB高度编码地形图的图像。我希望能够实现类似的效果。是否有一个简单的算法来创建基于最小和最大高度的RGB值

谢谢你的帮助


Ben

你只需要想出一个你喜欢的合适的颜色渐变,然后把它放在一个查找表中(或类似的)

然后,您所需要的就是将范围
min\u height
->
max\u height
中的值映射到范围
0
->
255
(例如)


当然,您可能会找到可以用数学函数表示的颜色渐变,但这不太一般。

您只需要找到一个您喜欢的合适颜色渐变,然后将其放入查找表(或类似表格)。这听起来是个好主意,但考虑到最终代码中的最大和最小高度将发生变化,这是否合适?你确定该图像仅进行高度编码吗?在我看来,这似乎是地理和地形数据的组合。这不是我工作的图像,我希望通过显示哪种类型来澄清问题当然是我想要的。不过你说得对,水显示为蓝色等。我希望这个问题有一个更普遍的解决方案。但这是我会尝试的。@Ben:那你希望得到什么样的东西呢?老实说,类似于灰度高度编码的方程式。但是合并了所有的颜色以使它看起来更漂亮地形。我知道这类事情可能不存在,我目前正在实现你的想法,因为这也是在matlab中实现的(并不是因为你的建议不够好,只是工作人员也通知了我)。我只是希望它能简单一点。如果你只有高度信息,这还不足以生成一个漂亮的自然颜色的地形图像。你需要额外的信息,如植被、湿度等…来推导。对于高度,你只能通过颜色梯度函数将给定的颜色指定给高度在上。我设法从matlabs颜色列表中窃取了查找表。我已经实现了这一点,它看起来很好,感谢您的帮助。