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