2024-05-12 23:49:59 发布
网友
我正在研究单位球体。我有兴趣把N个点放在球面(测地线)上任意两点之间的一条直线上。这些点的坐标以球坐标(弧度)表示。在
如何计算沿这条线的N个等距点集。我想在计算中考虑到球面的曲率。在
我使用的是python2.7.9
让我们几何推理。在
将两个给定点转换为笛卡尔坐标。在
从中心到P0和P1的位置向量之间的角度由点积给出
cos A = P0.P1
构建以下各项的线性组合:
p与P0之间的夹角由p归一化的点积给出
cos a = cos kA/N = P.P0/|P| = ((1-t) + t.cos A)/ sqrt((1-t)² + 2.(1-t).t.cos A + t²)
对其进行平方和重写,可以得到t中的二阶方程:
cos²a.(1-t)² + 2.(1-t).t.cos²a.cos A + t².cos²a - (1-t)² - 2.(1-t).t.cos A - t².cos²A = 0 - sin²a.(1-t)² - 2.(1-t).t.sin²a.cos A - t².(cos²A - cos² a) = 0 t²(-sin²a + 2.sin²a.cos A - cos²A + cos²a) + 2.t.sin²a.(1 - cos A) - sin²a = 0
求解方程,根据定义计算向量p并将其规范化。在
然后恢复到球坐标。在1和N-1之间改变k将得到所需的中间点。在
或者,你可以在3D中围绕一个轴使用Rodrigue's rotation formula,该轴由叉积P0×P1给出。在
你可以考虑SLERP - spherical linear interpolation
P = P0*Sin(Omega*(1-t))/Sin(Omega) + P1*Sin(Omega * t)/Sin(Omega)
其中ω是起点和终点(大圆弧)之间的中心角,t是范围[0..1]的参数,对于第i个点t(i) = i/N
t(i) = i/N
让我们几何推理。在
将两个给定点转换为笛卡尔坐标。在
从中心到P0和P1的位置向量之间的角度由点积给出
构建以下各项的线性组合:
^{pr2}$p与P0之间的夹角由p归一化的点积给出
对其进行平方和重写,可以得到t中的二阶方程:
求解方程,根据定义计算向量p并将其规范化。在
然后恢复到球坐标。在1和N-1之间改变k将得到所需的中间点。在
或者,你可以在3D中围绕一个轴使用Rodrigue's rotation formula,该轴由叉积P0×P1给出。在
你可以考虑SLERP - spherical linear interpolation
其中ω是起点和终点(大圆弧)之间的中心角,t是范围[0..1]的参数,对于第i个点
t(i) = i/N
相关问题 更多 >
编程相关推荐