在这里主要介绍三维的思路,黑盒模型:
obb的参数(中心点、三轴向量、三轴半长,以确定一个空间中的矩形)= f(点集)
步骤① 分解点集的xyz分量
即把所有点的 x、y、z 值分别放到独立的数组中
步骤② 对x、y、z这三个随机变量(一维数组)求协方差矩阵
步骤③ 对步骤②中的协方差矩阵求解特征值与特征向量,特征向量构造列向量矩阵M
步骤④ 将点集的几何中心平移至坐标系原点,并全部乘以M矩阵进行旋转变换
步骤⑤ 将旋转变换后的点的坐标,求xMax、xMin、yMax、yMin、zMax、zMin,进而求出obb中心坐标、obb半长
步骤⑥ 将obb中心坐标左乘M的逆,得到此中心坐标在原来坐标系的坐标值
步骤⑦ 将步骤⑥中得到的原坐标系下的obb中心坐标平移回原处(平移向量与步骤④的平移向量刚好是相反向量)
其中,计算难点在于步骤③,最经典的做法是使用 Jacobi 迭代计算算法,在数值分析课程中是一节基础,Jacobi 算法还是可以优化的。 还可以使用矩阵分解算法等进行优化。