最简理解空间射线与平面交点
生活随笔
收集整理的这篇文章主要介绍了
最简理解空间射线与平面交点
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
工作时正好碰到了这个老生常谈的问题,但百度出来都看起来复杂,不易于理解。
其实是很简单的问题,这里重新推导,并记录一下公式。
核心:
几何意义,使用dot,避免空间平面,直线方程。
已知:
平面一点c,平面法线N,射线起点o,射线方向dir。
推导:
设交点为o+k*dir
因为法线与平面上向量垂直
N·(o+k*dir-c)=0
为简化记T=o-c
则k=-(T·N)/(dir·N)
这里还有个除0问题。也就是射线方向完全与法线平行:要么射线本身就在平面上,我们认为相交距离为0;不在平面上,就认为是负无穷(我用正负判定是否相交)
代码:
//https://blog.csdn.net/qq_41524721/article/details/103490144 float RayCastPlane(float3 rayPos, float3 rayDir, float3 planeP, float3 planeN) {float dd = dot(rayDir, planeN);if (NearZero(dd)){//dir is perpendicular to normalif (NearZero(dot(rayPos - planeP, planeN))){//rayPos is in plane,consider ray dis is 0return 0;}else{//not cast,infinite intersectionreturn -12345;//当作负无穷}}return -dot(rayPos - planeP, planeN) / dd; }总结
以上是生活随笔为你收集整理的最简理解空间射线与平面交点的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 通俗易懂理解几何光学(三)平面与平面系统
- 下一篇: 两个平面的位置关系和判定方程组解_高一数