光线和球体的交点

先看一张图:

三维空间中光线的起点是P0,d是光线的单位向量。 球体的中心点为c,半径为r。 求交点的关键是求出a的长度和f的长度,然后光线长度t处就是交点,t=a-f,求光线和球体交点的步骤如下:

1. 连接P0和c,构成一条向量e

2. 求出e向量在d向量上的投影长度a,a=e点乘d,投影的终点为m

3. 连接球体的中心点c到投影终点m,构成一条向量b,因为m是投影的终点,所以向量b垂直于向量d

4.  用毕达哥拉斯定理求出b向量的长度

5. 现在知道了r和b,那么就可以用毕达哥拉斯定理求f的长度

6. 然后t=a-f, 将t带入光线的方程式,就能求出交点了。只是这里要注意在求f的过程中要做开方根计算,如果开方根内部的值为负数,就说明没有交点;如果开方根内部的值为0,就说明只有一个交点;如果开方根内部的值大于0,就说明有两个交点。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章