计算不准确的三角形顶点位置对三角形边长的潜在影响

时间:2010-04-10 07:01:46

标签: algorithm trigonometry

我不确定如何解决以下问题:

我有一个三角形,三个已知的顶点位置A,B,C中的每一个都是不准确的,这意味着它们每个都可以向任意方向偏离某个已知半径rA,rB,rC。

给定这样的三角形,我想计算在最坏的情况下三角形的两个特定边长的差异(例如边缘a和边缘b的长度之间的差异)可以改变多少。对这个问题有什么优雅的数学解决方案吗?

我想到的天真的方式是计算所有360 ^ 3角度组合并测量每种情况的边缘差异,这是一个相当高的开销。

1 个答案:

答案 0 :(得分:4)

下图说明了解决方案:

MinMaxEdgeDiff.png http://www.freeimagehosting.net/uploads/b0f0f84635.png

需要注意的一些要点:

  1. 线段AC1和BC1表示| BC |的最大可能值 - | AC |,而行AC2和BC2表示最小可能值。在C1处,圆的切线必须将AC1和BC1的角度平分;同样适用于C2。
  2. AC1(当通过虚线延伸时)和AC2都通过A.同样,BC1和BC2通过B.任何偏离中心的线,线将更长或最短。
  3. 最大和最小的差异是:

    d1 = |BC1| - |AC1| = (|B->C1| + _rB_) - (|A->C1| - _rA_)
                       = |B->C1| - |A->C1| + (_rA_ + _rB_)
    
    d2 = |BC2| - |AC2| = (|B->C2| - _rB_) - (|A->C2| + _rA_)
                       = |B->C2| - |A->C2| - (_rA_ + _rB_)
    

    因此,最大和最小差异之间的差异是:

    d1 - d2 = (|B->C1| - |A->C1|) - (|B->C2| - |A->C2|) + 2*(_rA_ + _rB_)
    
  4. 最后一点暗示可以通过从中心A和B求解,然后添加半径 rA rB 来找到解决方案。因此,C1和C2的位置可以通过围绕C的边界圆仅改变一个角度来迭代地(并且单独地,因为它们彼此独立)被发现。

    我怀疑有一个分析解决方案。这是一个有趣的问题,但还不足以让我反对这项特殊任务。抱歉。 ; - )