Как найти координаты 3 точки?

Рейтинг: -6Ответов: 2Опубликовано: 16.08.2023

Изображение с линией и тремя точками, детали в описании к вопросу

Точка X Y Z
A 1 1 0
B 8.05 8.1 0
C ? ? ?

Расстояние от A до B — 10
Расстояние от B до C — 4

Как найти координаты точки С ?

Ответы

▲ 2

Пользуемся теоремой Фалеса и всё: (10.87, 10.94, 0)

var a = [1, 1, 0]
var b = [8.05, 8.1, 0]
var c = a.map((_, i) => b[i] + (b[i] - a[i]) / 10 * 4)
console.log(c)

▲ 1

Расстояние между точками в трёхмерной плоскости выражается через:
d = √((x₂ - x₁)² + (y₂ - y₁)² + (z₂ - z₁)²)
где d — расстояние между точками, (x₁, y₁, z₁) — координаты первой точки, (x₂, y₂, z₂) — координаты второй точки.

Т.к. Z для обоих точек равняется нулю, можно сократить до расположения на плоскости:
d = √((x₂ - x₁)² + (y₂ - y₁)²)

Исходя из данной формулы, мы можем рассмотреть точки A (x = 1, y = 1) и B (x = 8.05, y = 8.1) и убедиться, что расстояние между ними равно 10:
10 = √((8.05 - 1)² + (8.1 - 1)²)
Без округления 10.005623418858.

Теперь, учитывая, что расстояние между B и C равно 4, составим:
4 = √((x₃ - 8.05)² + (y₃ - 8.1)²)

Тут можно избавиться от корня возведением обеих частей в квадрат (расстояние от B до C):
16 = (x₃ - 8.05)² + (y₃ - 8.1)²

То же самое сделаем для расстояния от A до C (10+4), по итогу имеем систему из двух уравнений (расстояние в 14 тоже возводим):

196 = (x₃ - 1)² + (x₃ - 1)²
16 = (x₃ - 8.05)² + (y₃ - 8.1)²

Смотрим как решать систему из двух уравнений методом подстановки, алгебра, начальные классы.
У меня получилось:

x₃ = 11.0408335162876
y₃ = 10.7561089732637

Проверяем по формуле на нахождения расстояния (d) для точек B и C, получится 4.
Можно придать ещё чуть больше точности, ранее высчитывал точное расстояние между A и B, тогда:

196.157487350864 = (x₃ - 1)² + (x₃ - 1)²
16 = (x₃ - 8.05)² + (y₃ - 8.1)²

x₃ = 10.8684149199199
y₃ = 10.9384040126756

В таком случае на проверке расстояние будет идеально равно 4-ем.
Но, т.к. изначальное расстояние в 10 округлено, то и ответ можно абсолютно спокойно округлить до сотых, как и в условии для координат:

x₃ = 11.04
y₃ = 10.76
z₃ = 0