1

免责声明:这是上课的,但是我的想法很新鲜,并且非常感谢您朝正确的方向轻推。此外,这需要在原始 C 中实现,因此不能使用花哨的库。

我必须为潜艇编写一个搜索和救援模拟器,它必须找到一个随机放置在 MAX_XYZ (100000) 网格中的 3D 空间中的探针。我得到的唯一工具是“ping”,它将给出某个潜艇和探头之间距离的大小。目标是优化整个操作的成本,因此暴力尝试(例如查看每个坐标)将不起作用。因此,我在考虑三角剖分。

现在,这对我来说很有意义,放置三个潜艇,每个潜艇都使用他们的 ping 来获取它们与探头之间的距离。由于每个子之间的距离已知,因此很容易用它们构建四面体的底部,并且 ping 的结果将指向某个坐标,我遇到的问题是如何计算高程,或四面体的高度。

所以我的数据如下:

  1. 潜艇之间的距离(矢量格式)
  2. 每个潜艇之间的角度(很容易计算)
  3. 每个子和探头之间的距离(从底部到峰值的 3 段)
  4. 四面体的外 3 个表面中的每一个内的角度。

我试图找到与四面体顶点和每个顶点的相对角度的某种关系,但是我发现的所有东西都必须处理用等边三角形构建的四面体,这没有多大帮助。我的印象是这可以通过 trig 轻松解决,但要么我没有看到它,要么我需要更多的咖啡。

任何建议,将不胜感激!

4

1 回答 1

6

由于这是家庭作业,我会轻推一下。

通常这是Multilateration的主题。

多点定位是一种导航技术,它基于测量到在已知时间广播信号的已知位置的两个或多个站点的距离差异。与绝对距离或角度的测量不同,测量距离的差异会产生无限数量的满足测量的位置。当绘制这些可能的位置时,它们会形成一条双曲线。为了沿着该曲线定位准确位置,对不同的测站对进行第二次测量以产生第二条曲线,该曲线与第一条曲线相交。将两者进行比较时,会显示少量可能的位置,从而产生“修复”。

维基百科条目详细讨论了数学。

于 2012-07-10T03:12:55.967 回答