最简理解空间射线与平面交点
生活随笔
收集整理的這篇文章主要介紹了
最简理解空间射线与平面交点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
工作時正好碰到了這個老生常談的問題,但百度出來都看起來復雜,不易于理解。
其實是很簡單的問題,這里重新推導,并記錄一下公式。
核心:
幾何意義,使用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; }總結
以上是生活随笔為你收集整理的最简理解空间射线与平面交点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通俗易懂理解几何光学(三)平面与平面系统
- 下一篇: 两个平面的位置关系和判定方程组解_高一数