基于法向矢量导向的求椭球上两点的最短弧长
问题分析
求椭球上任意两点间的最短弧长用数学来推算解析解的话十分复杂,因此考虑通过使用计算机来近似求解。问题的难点在于怎样让每一步都是处在最优的状态,以及怎样使每一步的方向都尽量处在该点能够选择的最优方向上。
求椭球上两点的最短路,很容易想到用传统的最短路算法如迪杰斯特拉算法或弗洛伊德算法求解,但是在椭球将步长离散化后,构造以及运用邻接矩阵十分复杂,在保证一定精度的条件下需要极大的运算量,所以最短路算法暂时没有太好的应用条件。
另一种考虑过的思路为采用经典优化算法,如粒子群算法或者蚁群算法等进行迭代求解。这种方法理论上是可行的,但是由于构造出椭球面的离散化极坐标坐标点相当多,以及这类算法本身有较大的运算量以及结果的随机性,暂时不予以考虑。
还曾考虑过用梯度下降算法来求解,就是将椭球旋转至使目标点的法向量为沿z轴负方向时构造出此时的椭球的函数表达式,即可使用梯度下降算法。这种方法是最为理想的方法,但是椭球的旋转涉及到仿射变换,构造变换矩阵非常复杂,所以暂时不予考虑。
根据梯度下降算法,可以很自然的想到既然椭球不转那我们能不能直接利用目标点的外法向量作为一个基准方向来进行导向。由次我们就想出了基于法向矢量导向的椭球上最短路求解。
模型假设
(1) 假设椭球上的网格足够小,运动点在椭球上的运动方向近似为椭球表面的切线方向
(2) 运动点到达距离终点的欧式距离小于一定范围时就视为到达终点
(3) 椭球上的运动点每次移动的欧式距离近似等于在表面移动时的弧长
(4) 椭球上的运动点的每次移动都会选择最优的方向
模型建立与算法设计
步骤
操作
1
给定起点A和终点B的椭球极坐标,计算其直角坐标,并计算B的外法向量记为BW
2
计算A点在二维极坐标中以A为中心的一定宽度方格内的点Mi的极坐标
3
计算所有Mi的直角坐标,并且计算出向量AMi,并将其全部化为单位向量
4
计算BW*AMi的值,并找出使该值最小的Mi点作为下一个A点,重复步骤1
变量与符号说明
A……………………………………………….代指椭球表面的运动点的当前位置
B………………………………………………………………………………….终点
AMi _{i}i……………………….椭球运动点在某次运动中可选择的单位方向向量集合
BW…………………………………………………椭球终点的垂直于表面的法向量
di _{i}i ………………………………………………………每次运动点移动的欧式距离
ϵ \epsilonϵ ………………………………………………………………………….终点判断值
D…………………………………………………………………………总路径的长度
模型建立与算法设计
<