勾配の視覚化

勾配とは

水平面に対する傾き度合い。勾配の単位は「%」。

水平長を1とした時の垂直長の比率で表す。数学のグラフでいう傾きa。

底辺100m、高さ10mの坂は
10 / 100 = 0.1 =10%の勾配

箱根新道の平均勾配は5%(2.9°)、最大勾配は15%(8.5°)
箱根旧道の平均勾配は6%(3.4°)、最大勾配は23%(13.0°)

視覚化

//
// 勾配を彩度でグラデーションする
// RunOver:Points
//

float maxSlople = chf("slope"); // 上限の勾配(%)(赤く表示される値)

vector N = normalize(@N);
vector up = set(0,1,0);

// 傾斜角
float angle = acos(dot(N, up));
// 勾配(%)へ変換
float slope = tan(angle)*100;

float range = 0.5;      // 0~1までの彩度幅
int sign = -1;          // 1か-1のグラデーションの向き
float offset = 0.5;     // 彩度の開始位置
float hue = clamp(slope / maxSlople, 0, 1) * range * sign + offset;
@Cd = hsvtorgb(hue, 1, 1);

面法線Nとupの内積から角度を求める。上を向いている面が0°になり、絶壁が90°になる。

タイトルとURLをコピーしました