Как найти третьи вершины треугольника, когда длины неравны - PullRequest
0 голосов
/ 03 июня 2019

У меня есть две вершины треугольника, и длина неравна. Как найти третью вершину? Reference

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Переведите все точки так, чтобы P2 стал источником.

Тогда вы решите

x² + y² = d2²
(x - x3)² + (y - y3)² = d3²

(помните о перенумерации d1).

С помощью вычитания двух уравнений

(2x - x3).x3 + (2y - y3).y3 = d2² - d3²

, которое представляет собой линейное уравнение вида

a.x + b.y + c = 0

и в параметрической форме

x = x0 + b.t
y = y0 - a.t

где (x0, y0) - произвольное решение, например (- ac / (a² + b²), - bc / (a² + b²)).

Теперь решите квадратное уравнение в t

(x0 + b.t)² + (y0 - a.t)² = d2²

, который дает два решения и отменяет первоначальный перевод.

1 голос
/ 04 июня 2019
function [vertex_1a, vertex_1b] = third_vertex(x2, y2, x3, y3, d1, d3)

   d2 = sqrt((x3 - x2)^2 + (y3 - y2)^2); % distance between vertex 2 and 3

   % Orthogonal projection of side 12 onto side 23, calculated unsing 
   % the Law of cosines:
   k = (d2^2 + d1^2 - d3^2) / (2*d2);   
   % height from vertex 1 to side 23 calculated by Pythagoras' theorem:
   h = sqrt(d1^2 - k^2);

   % calculating the output: the coordinates of vertex 1, there are two solutions: 
   vertex_1a(1) = x2 + (k/d2)*(x3 - x2) - (h/d2)*(y3 - y2); 
   vertex_1a(2) = y2 + (k/d2)*(y3 - y2) + (h/d2)*(x3 - x2);

   vertex_1b(1) = x2 + (k/d2)*(x3 - x2) + (h/d2)*(y3 - y2); 
   vertex_1b(2) = y2 + (k/d2)*(y3 - y2) - (h/d2)*(x3 - x2);

end
...