私は次のコードを見て理解しようとしています
float sdBox( vec3 p, vec3 b )
{
vec3 d = abs(p) - b;
return min(max(d.x,max(d.y,d.z)),0.0) +
length(max(d,0.0));
}
length(d)
ポイントが「コーナー」から外れている(つまり、のすべてのコンポーネントd
が正である) SDF ケースを処理し、max(d.x, d.y, d.z)
他のすべてのケースで適切な距離を与えることを理解しています。私が理解できないのは、ここで if ステートメントを使用せずにこれら 2 つを組み合わせてd
のコンポーネントの符号をチェックする方法です。
すべてのd
コンポーネントが正の場合、戻り式はが評価されるlength(d)
方法によりに減らすことができ、すべてのコンポーネントが負の場合は を取得します。しかし、その中間のケースをどのように理解すればよいのでしょうか? のコンポーネントが混合記号を持っているものは?min/max
d
max(d.x, d.y, d.z)
d
私は無駄にそれをグラフ化しようとしてきました。誰かがこれを幾何学的/数学的な用語で説明してくれたら本当にありがたいです. ありがとう。