免责声明:这是针对课程的,但是我的想法很新鲜,并且在正确的方向上轻推非常感激。此外,这需要在原始C中实现,因此不能使用任何花哨的库。
我必须为潜艇编写一个搜索和救援模拟器,它必须找到一个随机放置在MAX_XYZ(100000)网格中的3D空间中的探测器。我给出的唯一工具是“ping”,它将给出某个子探针和探针之间距离的大小。目标是优化整个操作的成本,因此蛮力尝试(如查看每个单独的坐标)将不起作用。因此我在想三角测量。
现在,它对我有意义,放置三个子,每个子使用他们的ping来获得它们和探针之间的距离。由于每个sub相对于彼此已知距离,因此很容易用它们构建四面体的底部,并且ping的结果将指向某个坐标,我遇到的问题是如何计算出高程,或四面体的高度。
所以我的数据如下:
我试图找到与四面体顶点之间的某种关系以及它们各自的相对角度,但是我发现所有这些都必须处理用等边三角形构建的四面体,这没有多大帮助。我的印象是这可以通过trig轻松解决,但要么我没有看到它,要么我需要更多的咖啡。
任何建议都将不胜感激!
答案 0 :(得分:6)
由于这是作业,我会轻轻一推。
一般来说,这是Multilateration的主题。
Multilateration是一种基于测量的导航技术 在已知位置与两个或多个站的距离差 在已知时间广播信号。与绝对测量不同 距离或角度,测量距离的差异导致a 无限数量的满足测量的位置。当这些 绘制了可能的位置,它们形成双曲线。至 找到沿该曲线的确切位置,第二个测量是 采取到一对不同的站产生第二条曲线,其中 与第一个相交。当两者相比时,少数 显示可能的位置,产生“修复”。
维基百科条目详细讨论了数学。