Использование координат двух вершин треугольника для расчета координат третьего - PullRequest
1 голос
/ 09 февраля 2012

Мне известны две координаты двух вершин в треугольнике (не выровненные по оси), и я пытаюсь вычислить координаты третьего.

          a
     B ------- C
       \      |
        \     |
C'       \    |
        c \   | b
           \  |
            \ |
             \|
              A

Я знаю координаты A и B , длины a и c , и что угол C всегда будет прямым углом. Я полагаю, что могут быть только два возможных решения для координат C ; тот, что нарисован выше, и один с C , отраженным относительно линии c , приблизительно при C '. Я хотел бы рассчитать обе позиции.

EDIT

Источник треугольника взят из этой диаграммы .

Я знаю вершину A , центр круга B , радиус круга ( a ) и от Пифаг с (* 1038) * B - A ), я знаю длину c . Я пытаюсь найти точки, в которых линии от вершины находятся по касательной к каждой стороне круга, C и C '.

Этот кажется ответом на мою проблему; Кто-нибудь может уточнить: «Учитывая две стороны прямоугольного треугольника, легко определить длину и направление третьей стороны».

Ответы [ 4 ]

1 голос
/ 09 февраля 2012

Я знаю координаты A и B, а также длины a и c. Исходя из этого, я считаю, что могут быть только два возможных решения для координат C

Это не правда. Существует бесконечное количество вариантов позиции C, так как вы не знаете длину b.

Например:

C
| 
| 
| 
| 
| 
B
\      
 \     
  \    
c  \   
    \  
     \ 
      \
       A

Если вы подключите C к A, вы все равно сохраните эти известные длины ....

Чтобы это было правдой, вам также нужно знать один из углов (например, это прямоугольный треугольник) или длину b.

0 голосов
/ 12 марта 2015

Это просто: поскольку угол C равен PI / 2, то b=sqrt(c*c-a*a), чтобы вы знали длины a, b, c.

Координаты C и C '= пересечения двух окружностей:

  1. радиус B центра a
  2. центр A, радиус b

Здесь решено, например, // A = P1, B = P0, C = P3: https://math.stackexchange.com/questions/187107/calculate-coordinates-of-3rd-point-vertex-of-a-scalene-triangle-if-angles-and

Необходимое условие для этого: if (a<c) в противном случае оно не имеет решения.

0 голосов
/ 09 февраля 2012

Если вы предполагаете, что a и b являются противоположными углами прямоугольника

a = (xa, ya)
b = (xb, yb)

, то верхняя правая точка прямоугольника равна c1 = (max(xa,xb), max(ya,yb)), а нижняя левая точка прямоугольника равна c2 = (min(xa,xb), min(ya,yb))

Предполагая, что xa != xb и ya != yb

                    (xa, ya) A              C1 (max(xa, xb), max(ya, yb))
                               o----------o
                               |\         |
                               | \        |
                               |  \       |
                               |   \      |
                               |    \     |
                               |     \    |
                               |      \   |
                               |       \  |
                               |        \ |
                               o----------o
(min(xa, xb), min(ya, yb)) C2               B (xb, yb)

Если ваша диагональ идет другим путем (чтобы проверить это, посмотрите, если xa> xb), вам нужно поменять мин на максимум на х

(min(xa, xb), max(ya, yb))  C3              A'
                               o----------o
                               |         /|
                               |        / |
                               |       /  |
                               |      /   |
                               |     /    |
                               |    /     |
                               |   /      |
                               |  /       |
                               | /        |
                               o----------o
                           B'               C4 (max(xa, xb), min(ya, yb))

А если вам интересно, то на самом деле весь круг решений лежит на круге:

Set of solutions

Чтобы вычислить это, предположим, у нас есть две точки A = (xa, ya) и B = (xb, yb).Тогда центральная точка этого круга будет c = (0.5 (xa + xb), 0.5 (ya + yb)) - просто середина A и B. Радиус круга равен r = sqrt( (xb - xa)^2 + (yb - ya)^2) / 2 - используя теорему Пифагора, чтобы получить длину линии и делить ее пополам.Тогда любая точка на окружности может быть определена как p = c + (rcos(u), rsin (u)) для некоторого угла u.Есть 2 угла, которые дают вам точки p = A и p = B, поэтому эти значения u не являются хорошими решениями.Вы можете выписать уравнение и решить его для этих двух точек, чтобы получить значения u, которые вы не можете использовать.

0 голосов
/ 09 февраля 2012

Если вы знаете, что это будет правильный треугольник, то вы знаете, что значения x и y будут взяты из двух других точек.треугольник, тогда вам нужно больше информации.Требуется длина B, длина C или угол BCA.

...