現在、レイ トレーサーでレイと他のタイプのオブジェクトとの交差テストを行おうとしています。光線の衝突は、ディスタンス フィールドのように一定または動的なサイズのステップで反復するのではなく、方程式を解くことによって数学的に解決されます。これはうまく機能していますが、解決しようとしている問題があります。
// So if we put these two together (changing x,y,z in
// equation 1 with the values from equation 2, we get:
cx,cy,cz = sphere center
r = sphere radius
ox,oy,oz = ray origin
dx,dy,dz = ray direction
t = if the ray will hit, then that point is origin + direction * t
(Eq1) SphereEquation = (x - cx)^2 + (y - cy)^2 + (z - cz)^2 == r^2;
(Eq2) RayEquation = {x,y,z} == {ox,oy,oz} + t*{dx,dy,dz};
CollisionEquation = ((ox + t*dx) - cx)^2 +
((oy + t*dy) - cy)^2 +
((oz + t*dz) - cz)^2
== r^2
変数は、光線がいつ衝突するかをt
表します。したがって、pq 式を使用して変数を解くと、光線が衝突するかどうかがわかります。私の問題は、グリッド上に無限の数の球があり、それらの間に一定のサイズのステップがあることです。光線がそれらのいずれかと交差する可能性のある方程式を作成したいと思います。このようなものを見つけようとしましたが、何も見つかりません。では、この方程式はどのように作成できるのでしょうか。それが不可能なら、なぜですか?t
PS 必要に応じて Mathematica を使用しています。誰かが知りたい場合は、レイトレーサーは GLSL で実行されます ;)
あらゆる種類のヘルプを事前にありがとう.