gpt4 book ai didi

math - 球体方向决策的最短路径

转载 作者:行者123 更新时间:2023-12-04 15:37:00 25 4
gpt4 key购买 nike

我正在尝试编写一个执行以下操作的算法。

给定当前位置(在方位角和倾角中)和目标位置(再次在 A、I 中),我应该朝哪个方向行进以通过最短路径。返回值可能类似于向量 A = -1, I = +0.5,然后我可以缩放步长/时间。

可以使用 a great circle 找到最短路径,这很容易形象化,但很难像上面那样实现,因为我的坐标系不是连续的。

我的坐标系如下(想象站在球体前面)

前侧沿赤道行进时,方位角为0~pi,后侧沿赤道行进时,方位角为0~-pi。

从球体顶部移动到底部时,倾角为 0~+pi。

因此,鉴于这个非连续坐标系,我如何创建一个决策函数,表示“增加 A”以通过最短路径行进?

最佳答案

你有几个选择。第一个是使用 Haversine formulation .有一些Javascript源代码here .它需要使用更传统的纬度/经度,其中赤道位于 0 纬度,极点位于 +/- π 或 +/- 90° 纬度(取决于您的单位),经度在 [-180°, 180° ) 或 [-π, π) 再次取决于您的单位。您可以反复找到中点,直到找到适合您需要的近似路径。方位角/倾角矢量只是两个相邻点之间的纬度/经度差,但随着时间的推移,如果您将这些纬度/经度增量重复应用于代理的位置,这可能会导致错误。

另一种可能对您有效的方法是将您的起点和终点位置的球面坐标转换为笛卡尔坐标,将它们称为点 ub 和 ue 作为起点和终点。连接两点的大圆的法向量 v 是 cross product两者中的(即 v = ub x ue),角度 θ 只是归一化内积的反余弦(即 θ = cos-1( (ue ∙ ue)/(|ub||ue))。你可以然后使用 quaternion rotation 并围绕向量 v 从 0 到 θ 迭代以实际导航路径。使用这种方法,沿路径某个点 p 的实际瞬时向量只是 pxv,或者您可以使用沿路径的两个相邻点之间的笛卡尔差。

关于math - 球体方向决策的最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5831608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com