isectPlane
半直線と面との交差判定
GLSL
code:glsl
float isectPlane(vec3 ro, vec3 rd, vec3 n) {
float t = -dot(ro, n) / dot(rd, n);
return t < 0.0 ? FAR : t;
}
考え方
https://gyazo.com/8c648fd984736ecc06296bbf52882ae8
分母と分子、どっちも$ Nとの内積
$ roと$ Nは向き合っているとき正であってほしいので、符号にマイナスを付ける
$ ro \cdot Nは$ roがデカければデカいほど距離もデカくなりそうなので、分子
$ rd \cdot Nは2ベクトルが平行なほど最短距離になるので、分母
Desmos
二次元ですが
https://gyazo.com/49fe4e9480e5c557d991cf2f6e663265