Как найти координатные точки на отрезке

У меня есть отрезок с известными координатами концов. На этом отрезке есть точка. Я знаю расстояние от начала отрезка до этой точки. Мне надо найти координаты этой точки. Как найти эти координаты?

Пример: Есть 2 точки А(3,3) и В(6,4). Длина отрезка примерно 3,16. И есть точка С(?,?) на отрезке. Как найти координаты, если от А до С =1,8 ???

Dmytro's user avatar

Dmytro

6,7011 золотой знак20 серебряных знаков55 бронзовых знаков

задан 3 мар 2016 в 20:40

Andryxa's user avatar

4

Имеется отрезок AB с координатами A(Xa, Ya) и B(Xb, Yb).
Требуется найти координаты точки C(Xc, Yc), лежащей на отрезке AB на расстоянии Rac от точки A.

Rab = sqrt((Xb - Xa) ^ 2 + (Yb - Ya) ^ 2)
k = Rac / Rab
Xc = Xa + (Xb - Xa) * k
Yc = Ya + (Yb - Ya) * k

Обозначения:
f ^ n – возведение f в степень n, в нашем случае (первом) f будет Xb - Xa и n будет 2.
sqrt(f) – квадратный корень из f, в нашем случае f будет (Xb - Xa) ^ 2 + (Yb - Ya) ^ 2.
f / n – деление f на n, в нашем случае f будет Rac и n будет Rab.
f * n – умножение f на n, в нашем случае (первом) f будет Xb - Xa и n будет k.

Mark Khromov's user avatar

ответ дан 4 мар 2016 в 6:54

Konstantin Les's user avatar

Konstantin LesKonstantin Les

1,5388 серебряных знаков12 бронзовых знаков

2

Алгоритм без кода (довольно элементарный):

Имеем:
Две точки A, B; len – расстояние от точки А до требуемой точки C

full_len = |B - A| // длина вектора, соединяющего две точки == длина отрезка
C = A + (B - A) * (len / full_len)

Сложение векторов и умножение на число – очевидные операции.

ответ дан 3 мар 2016 в 20:56

int3's user avatar

int3int3

2,4579 серебряных знаков19 бронзовых знаков

8

nodet – точка конец вектора, в твоем случае точка b
nodef – точка начало вектора, в твоем случае точка a

dx = nodet.x - nodef.x 
dy = nodet.y - nodef.y 
dz = nodet.z - nodef.z
r = math.sqrt(dx ** 2 + dy ** 2 + dz ** 2) 
xx = dx * (step/r) 
yy = dy * (step /r)
zz = dz * (step /r)
newnode = node(nodef.x + xx,nodef.y + yy,nodef.z + zz)

newnode – новая точка на заданом расстоянии

ответ дан 12 ноя 2019 в 16:31

qvuer7's user avatar

qvuer7qvuer7

113 бронзовых знака

Имеем отрезок AB с координатам x1,y1 и x2, y2:

Необходимо найти координаты новой точки С, которая находится на отрезке, на определенном расстоянии от точки A.

1

PHP-функция

$x1, $y1 – координаты точки A,
$x2, $y2 – координаты точки B,
$d – расстояние от точки A до точки C.

function pointToLine($x1, $y1, $x2, $y2, $d)
{
	$Rab = sqrt(pow($x2 - $x1, 2) + pow($y2 - $y1, 2));
	$k = $d / $Rab;
	$Xc = $x1 + ($x2 - $x1) * $k;
	$Yc = $y1 + ($y2 - $y1) * $k;
	return array('x' => $Xc, 'y' => $Yc);
}

PHP

2

JS-функция

function pointToLine(x1, y1, x2, y2, d)
{
	var Rab = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
	var k = d / Rab;
	var Xc = x1 + (x2 - x1) * k;
	var Yc = y1 + (y2 - y1) * k;
	return {x: Xc, y: Yc};
}

JS

3

Координата точки на отрезке онлайн

Найти координаты точки на отрезке

Dmitry



Ученик

(135),
закрыт



9 лет назад

Leonid

Высший разум

(388685)


11 лет назад

Если некоторя точка делит отрезок в отношении А: В, то и отдельно коордиаты отрезка (х, у) делятся в этом же отношении. А координата отрезка – это разность координат его концов.
То есть, к примеру, конкретно для этого случая: х1 = 100, х2 = 0. То есть тупо отсчитывает от точки х1 расстояние, равное (100-0)*(23*141) = чему-то там. И вычитаем из х1. Аналогично для у.

На чтение 4 мин Просмотров 1.2к.

Рассмотрим первый пример. Пусть в плоскости координат задан двумя точками некий отрезок. В данном случае его длину мы можем найти, применяя теорему Пифагора.

Итак, в системе координат начертим отрезок с заданными координатами его концов (x1; y1) и (x2; y2) . На оси X и Y из концов отрезка опустим перпендикуляры. Отметим красным цветом отрезки, которые являются на оси координат проекциями от исходного отрезка. После этого перенесем параллельно к концам отрезков отрезки-проекции. Получаем треугольник (прямоугольный). Гипотенузой у данного треугольника станет сам отрезок АВ, а его катетами являются перенесенные проекции.

Вычислим длину данных проекций. Итак, на ось Y длина проекции равна y2-y1, а на ось Х длина проекции равна x2-x1. Применим теорему Пифагора: |AB|² = (y2 – y1)² + (x2 – x1)². В данном случае |AB| является длиной отрезка.

Если использовать данную схему для вычисления длины отрезка, то можно даже отрезок и не строить. Теперь высчитаем, какова длина отрезка с координатами (1;3) и (2;5). Применяя теорему Пифагора, получаем: |AB|² = (2 – 1)² + (5 – 3)² = 1 + 4 = 5. А это значит, что длина нашего отрезка равна 5:1/2.

Рассмотрим следующий способ нахождения длины отрезка. Для этого нам необходимо знать координаты двух точек в какой-либо системе. Рассмотрим данный вариант, применяя двухмерную Декартову систему координат.

Итак, в двухмерной системе координат даны координаты крайних точек отрезка. Если проведем прямые лини через эти точки, они должны быть перпендикулярными к оси координат, то получим прямоугольный треугольник. Исходный отрезок будет гипотенузой полученного треугольника. Катеты треугольника образуют отрезки, их длина равна проекции гипотенузы на оси координат. Исходя из теоремы Пифагора, делаем вывод: для того чтобы найти длину данного отрезка, нужно найти длины проекций на две оси координат.

Найдем длины проекций (X и Y) исходного отрезка на координатные оси. Их вычислим путем нахождения разницы координат точек по отдельной оси: X = X2-X1, Y = Y2-Y1.

Рассчитаем длину отрезка А, для этого найдем квадратный корень:

Если наш отрезок расположен между точками, координаты которых 2;4 и 4;1, то его длина, соответственно, равна √((4-2)²+(1-4)²) = √13 ≈ 3,61.

Этот онлайн калькулятор рассчитывает длину отрезка и координаты середины отрезка (средней точки) по декартовым координатам концов отрезка. Отрезок и средняя точка отображаются на графике, также на графике показан графический способ нахождения середины отрезка.

Эта страница существует благодаря следующим персонам

Timur

  • Статья : Расчет длины отрезка и координат середины отрезка по двум точкам – Автор, Переводчик en – ru
  • Калькулятор : Расчет длины отрезка и координат середины отрезка по двум точкам – Автор, Переводчик en – ru

Этот онлайн калькулятор рассчитывает длину отрезка и координаты середины отрезка по введенным декартовым координатам двух точек – концов отрезка.

Формула вычисления расстояния между двумя точками и это формула длины гипотенузы прямоугольного треугольника . Координаты середины отрезка – среднее арифметическое координат точек .

Отрезок и средняя точка отображаются на графике. Также среднюю точку можно найти построением. Для этого на графике надо построить две дуги с центрами на концах отрезка и с радиусом равным длине отрезка. Затем надо построить прямую линию между точками пересечения дуг. Эта линия пересечет исходный отрезок в середине.

Отрезком обозначают ограниченный двумя точками участок прямой. Точки – концы отрезка.

Общеизвестный факт, что каждая точка А плоскости имеет свои координаты (х, у).

В данном примере вектор AB задан координатами (х2— х1, y2— y1). Квадрат длины вектора будет равен сумме квадратов его координат. Следовательно, расстояние d между точками А и В, или, что то же самое, длина вектора АВ, вычисляется согласно формуле:

Эта формула длины отрезка предоставляет возможность рассчитывать расстояние между двумя произвольными точками плоскости, при условии, что известны координаты этих точек

Вышеуказанную формулу длины отрезка можно доказать и другим способом. В системе координат заданы координаты крайних точек отрезка координатами его концов1y1) и 22).

Прочертим прямые лини через эти точки перпендикулярно к осям координат, в результате имеем прямоугольный треугольник. Первоначальный отрезок является гипотенузой образовавшегося треугольника. Катеты треугольника сформированы отрезками, их длиной будет проекция гипотенузы на оси координат.

Установим длину этих проекций.

На ось у длина проекции равна y2 – y1, а на ось х длина проекции равна х2 – х1. На основании теоремы Пифагора видим, что |AB|² = (y2 – y1)² + (x2 – x1.

В рассмотренном случае |AB| выступает длиной отрезка.

Вычислим длину отрезка АВ, для этого извлечем квадратный корень. Результатом является все та же формула длины отрезков по известным координатам конца и начала.

Когда мы строим ломаную или кривую, иногда необходимо вместо привычных декартовых X,Y-координат задавать точку кривой через угол и расстояние. Ни в GDI, ни в GDI+, нет инструментов, чтобы задать координаты точки по углу от произвольной прямой и расстоянию.

Зато координаты можно очень легко посчитать. Вот этим сейчас и займемся. А потом найдем угол между двумя прямыми.

Найти координаты по углу и расстоянию

Если прямая, от которой необходимо отложить угол, параллельна оси X, формулы для нахождения координат достаточно очевидны.

Рис1. Прямая отстоит на угол от оси X

Latex formula

Latex formula

Где:

L — расстояние, или длина прямой (P1, P2)

А — угол, на который отстоит прямая (P1, P2) от прямой (P0, P1). Отрицательное значение угла означает — против часовой стрелки.

Теперь придадим прямой (P0, P1) наклон.

Рис.2. Прямая отстоит на угол от наклонной прямой

A (синий) — это угол, на который отстоит (P1, P2) от прямой (P0, P1);

В (красный) — угол на между прямой (P0, P1) и осью X;

C (оранжевый) — угол на между прямой (P1, P2) и осью X.

Задача сводится к нахождению угла C. Как нетрудно убедится по рисунку:

Latex formula

Угол А нам известен. Угол B найдем через arctan2. Функция arctan2 есть во множестве языков. Возможно, будет называться atan2.

Latex formula

Таким образом, функция для нахождения координат точки выглядит так:

// Посчитать координаты по углу и расстоянию

// P0,P1 – прямая, точка считается от P1

// A – угол отклонения от (P0,P1), градусы

// L – расстояние до точки

function CalcPolarCoord(const P0, P1: TPointF;

  A, L: Single): TPointF;

var

  B, C: Single;

begin

  B := arctan2(p0.Yp1.Y, p0.Xp1.x);

  C := A * PI/180 + B;

  Result.X := p1.X + cos(C) * L;

  Result.Y := p1.Y + sin(C) * L;

end;

И что, всегда работает? Всегда.

Рис.3. Это работает всегда, потому что геометрия возникла в мезозое и потому вечна

Найти угол по трем координатам

Рассмотрим процесс, обратный нахождению координаты по углу. Теперь будем находить угол между отрезками ломаной. Мы в плоскости работаем в декартовых координатах. Меняем мышкой координаты X, Y. А ситуация может возникнуть такая, что для предметной области важно хранить данные в полярных координатах.

Функция такая:

// Нахождение угла между тремя точками в градусах

// Точки заданы массивом из трех элементов

function CalcPolarAngle(const pnt: Array of TPointF): Single;

var

  a1, a2: Single;

begin

  if Length(pnt)<3 then

    Exit;

  a1 := ArcTan2(pnt[0].ypnt[1].y, pnt[0].xpnt[1].x) * 180/PI;

  a2 := ArcTan2(pnt[2].ypnt[1].y, pnt[2].xpnt[1].x) * 180/PI;

  Result := (a2 a1);

end;

Более продвинутую функцию можно найти в статье Пересечение прямых, угол и координаты пересечения.


Друзья, спасибо за внимание!

Оставляйте комментарии. Подписывайтесь на телегу.

В группе комментариев уже потихоньку становится интересно )))

Добавить комментарий