我有一个程序,我需要将高度表示为 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 的倒置形式,所以在低值时它会显得更绿,而在高值时它会显得更红。
我希望能够利用 RG 和 B 来提供逼真的高度编码景观:
这是一张 72dpi RGB 高度编码的地形图的图像。我希望能够实现类似的目标。是否有一种简单的算法可以根据最小和最大高度创建 RGB 值?
谢谢你的帮助。
本