高さを RGBT (float) 値として表す必要があるプログラムがあります。あれは:
[R, G, B, T (Transperancy)] -> [0.0f-1.0f, 0.0f-1.0f, 0.0f-1.0f, 0.0f-1.0f]
概念的には、最大高と最小高の間の基本的な高さを介してエンコードできることを知っています。私はgreyScale高さエンコーディングのためのいくつかのコードさえ持っています:
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 値を作成する簡単なアルゴリズムはありますか?
助けてくれてありがとう。
ベン