8

私は次のコードを見て理解しようとしています

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/maxdmax(d.x, d.y, d.z)d

私は無駄にそれをグラフ化しようとしてきました。誰かがこれを幾何学的/数学的な用語で説明してくれたら本当にありがたいです. ありがとう。

4

2 に答える 2