вычисление потенциального влияния неточных положений вершин треугольника на длину края треугольника - PullRequest
4 голосов
/ 10 апреля 2010

Я не уверен, как решить следующую проблему:

У меня есть треугольник, в котором каждое из трех известных положений вершин A, B, C является неточным, то есть каждое из них может отклоняться до определенных известных радиусов rA, rB, rC в произвольных направлениях.

учитывая такой треугольник, я хочу вычислить, насколько разница двух конкретных длин ребер (например, разница между длинами ребра а и ребра b) треугольника может измениться в худшем случае. есть какое-нибудь изящное математическое решение этой проблемы?

Наивный способ, о котором я думал, - это вычисление всех комбинаций углов 360 ^ 3 и измерение краевых различий для каждого случая, что является довольно высоким расходом.

1 Ответ

4 голосов
/ 10 апреля 2010

На следующем рисунке показано решение:

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_)
    

Последняя точка указывает на то, что решение можно найти, решая из центров A и B, а затем добавляя радиусы rA и rB . Таким образом, местоположения C1 и C2 могут быть обнаружены итеративно (и отдельно, так как они не зависят друг от друга), изменяя только один угол вокруг ограничивающей окружности C.

Я подозреваю, что есть аналитическое решение. Это интересная проблема, но ее недостаточно, чтобы я ударился головой об этой конкретной задаче. Сожалею. ; -)

...