一、基础坐标系定义
1.1 OBB参数表示
设OBB满足:
- 中心坐标: C ∈ R 3 \mathbf{C} \in \mathbb{R}^3 C∈R3
- 局部坐标轴:正交单位向量 { u , v , w } \{\mathbf{u}, \mathbf{v}, \mathbf{w}\} {u,v,w}
- 半边长向量: e = ( e u , e v , e w ) \mathbf{e} = (e_u, e_v, e_w) e=(eu,ev,ew)
1.2 射线参数方程
全局坐标系下的射线表示为:
R ( t ) = O + t D , t ∈ [ 0 , + ∞ ) \mathbf{R}(t) = \mathbf{O} + t\mathbf{D},\quad t \in [0, +\infty) R(t)=O+tD,t∈[0,+∞)
其中 O \mathbf{O} O为射线起点, D \mathbf{D} D为单位方向向量
二、 坐标系变换理论
2.1 变换矩阵构造
定义旋转矩阵:
M = [ u v w ] = [ u x v x w x u y v y w y u z v z w z ] \mathbf{M} = [\mathbf{u}\ \mathbf{v}\ \mathbf{w}] = \begin{bmatrix} u_x & v_x & w_x \\ u_y & v_y & w_y \\ u_z & v_z & w_z \end{bmatrix} M=[u v w]= uxuyuzvxvyvzwxwywz
因 M \mathbf{M} M是正交矩阵,其逆矩阵为:
M − 1 = M T \mathbf{M}^{-1} = \mathbf{M}^T M−1=MT
2.2 坐标变换公式
将射线转换到OBB局部坐标系:
O ′ = M T ( O − C ) \mathbf{O}' = \mathbf{M}^T(\mathbf{O} - \mathbf{C}) O′=MT(O−C)
D ′ = M T D \mathbf{D}' = \mathbf{M}^T\mathbf{D} D′=MTD
此时OBB在局部坐标系中表现为AABB:
B = [ − e u , e u ] × [ − e v , e v ] × [ − e w , e w ] \mathcal{B} = [-e_u, e_u] \times [-e_v, e_v] \times [-e_w, e_w] B=[−eu,eu]×[−ev,ev]×[−ew,ew]
三、 分离轴定理(SAT)的数学应用
3.1 候选分离轴集合
需要验证的分离轴包括:
A = { u , v , w } ∪ { D ′ × u , D ′ × v , D ′ × w } \mathcal{A} = \{\mathbf{u}, \mathbf{v}, \mathbf{w}\} \cup \{\mathbf{D}' \times \mathbf{u},\ \mathbf{D}' \times \mathbf{v},\ \mathbf{D}' \times \mathbf{w}\} A={u,v,w}∪{D′×u, D′×v, D′×w}
共9个轴(其中3个叉积轴可能线性相关,但SAT仍要求全部验证)
3.2 投影计算模型
对任意分离轴 a \mathbf{a} a(需单位化):
3.2.1 OBB投影半径
r O B B = ∑ i ∈ { u , v , w } e i ∣ a ⋅ i ∣ r_{OBB} = \sum_{i\in\{u,v,w\}} e_i|\mathbf{a} \cdot \mathbf{i}| rOBB=i∈{u,v,w}∑ei∣a⋅i∣
3.2.2 射线投影参数
{ o p = O ′ ⋅ a d p = D ′ ⋅ a \begin{cases} o_p = \mathbf{O}' \cdot \mathbf{a} \\ d_p = \mathbf{D}' \cdot \mathbf{a} \end{cases} {op=O′⋅adp