三维空间中的三角剖分

时间:2012-07-10 02:58:14

标签: algorithm triangulation

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

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

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

所以我的数据如下:

  1. 潜艇之间的距离(矢量格式)
  2. 每个潜艇之间的角度(非常容易计算)
  3. 每个子探针和探针之间的距离(从基部到峰的3个部分)
  4. 四面体的每个外部3个表面内的角度。
  5. 我试图找到与四面体顶点之间的某种关系以及它们各自的相对角度,但是我发现所有这些都必须处理用等边三角形构建的四面体,这没有多大帮助。我的印象是这可以通过trig轻松解决,但要么我没有看到它,要么我需要更多的咖啡。

    任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:6)

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

一般来说,这是Multilateration的主题。

  

Multilateration是一种基于测量的导航技术   在已知位置与两个或多个站的距离差   在已知时间广播信号。与绝对测量不同   距离或角度,测量距离的差异导致a   无限数量的满足测量的位置。当这些   绘制了可能的位置,它们形成双曲线。至   找到沿该曲线的确切位置,第二个测量是   采取到一对不同的站产生第二条曲线,其中   与第一个相交。当两者相比时,少数   显示可能的位置,产生“修复”。

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