射线和 圆_球 的相交性检测
由于可以在包含射线和球心的平面中进行检测,所以先讨论2D中射线和圆的相交性检测,该检测的方法也适用于3D中射线和球之间的相交性检测。

- 球的定义:圆心 c 和半径 r
- 射线的定义:p(t)=p0+td
d 为单位向量,t 从 0 变化到 l,l 为射线长度
所要求的是交点处 t 的值:t=a−f
f2+b2=r2a2+b2=e2b2=e2−a2
e 是从射线起点到圆心之间的距离,也就是向量 e 的长度,因此, e2 为:
e2=e⋅e
代入化简得到 f :
f2+b2=r2f2+(e2−a2)=r2f2=r2−e2+a2f2=r2−e2+a2
NOTE :
- 若 r2−e2+a2 为负,则射线和圆不相交;
- 射线的起点可能在圆内,此时 e2<r2 。此时,根据不同的测试目的,会有不同的行为。