У меня есть отрезок с известными координатами концов. На этом отрезке есть точка. Я знаю расстояние от начала отрезка до этой точки. Мне надо найти координаты этой точки. Как найти эти координаты?
Пример: Есть 2 точки А(3,3) и В(6,4). Длина отрезка примерно 3,16. И есть точка С(?,?) на отрезке. Как найти координаты, если от А до С =1,8 ???
Dmytro
6,7011 золотой знак20 серебряных знаков55 бронзовых знаков
задан 3 мар 2016 в 20:40
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
.
ответ дан 4 мар 2016 в 6:54
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
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
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) и (х2,у2).
Прочертим прямые лини через эти точки перпендикулярно к осям координат, в результате имеем прямоугольный треугольник. Первоначальный отрезок является гипотенузой образовавшегося треугольника. Катеты треугольника сформированы отрезками, их длиной будет проекция гипотенузы на оси координат.
Установим длину этих проекций.
На ось у длина проекции равна y2 – y1, а на ось х длина проекции равна х2 – х1. На основании теоремы Пифагора видим, что |AB|² = (y2 – y1)² + (x2 – x1)².
В рассмотренном случае |AB| выступает длиной отрезка.
Вычислим длину отрезка АВ, для этого извлечем квадратный корень. Результатом является все та же формула длины отрезков по известным координатам конца и начала.
Когда мы строим ломаную или кривую, иногда необходимо вместо привычных декартовых X,Y-координат задавать точку кривой через угол и расстояние. Ни в GDI, ни в GDI+, нет инструментов, чтобы задать координаты точки по углу от произвольной прямой и расстоянию.
Зато координаты можно очень легко посчитать. Вот этим сейчас и займемся. А потом найдем угол между двумя прямыми.
Найти координаты по углу и расстоянию
Если прямая, от которой необходимо отложить угол, параллельна оси X, формулы для нахождения координат достаточно очевидны.
Рис1. Прямая отстоит на угол от оси X
Где:
L — расстояние, или длина прямой (P1, P2)
А — угол, на который отстоит прямая (P1, P2) от прямой (P0, P1). Отрицательное значение угла означает — против часовой стрелки.
Теперь придадим прямой (P0, P1) наклон.
A (синий) — это угол, на который отстоит (P1, P2) от прямой (P0, P1);
В (красный) — угол на между прямой (P0, P1) и осью X;
C (оранжевый) — угол на между прямой (P1, P2) и осью X.
Задача сводится к нахождению угла C. Как нетрудно убедится по рисунку:
Угол А нам известен. Угол B найдем через arctan2. Функция arctan2 есть во множестве языков. Возможно, будет называться atan2.
Таким образом, функция для нахождения координат точки выглядит так:
// Посчитать координаты по углу и расстоянию // 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.Y–p1.Y, p0.X–p1.x); C := A * PI/180 + B; Result.X := p1.X + cos(C) * L; Result.Y := p1.Y + sin(C) * L; end; |
И что, всегда работает? Всегда.
Найти угол по трем координатам
Рассмотрим процесс, обратный нахождению координаты по углу. Теперь будем находить угол между отрезками ломаной. Мы в плоскости работаем в декартовых координатах. Меняем мышкой координаты 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].y–pnt[1].y, pnt[0].x–pnt[1].x) * 180/PI; a2 := ArcTan2(pnt[2].y–pnt[1].y, pnt[2].x–pnt[1].x) * 180/PI; Result := (a2 – a1); end; |
Более продвинутую функцию можно найти в статье Пересечение прямых, угол и координаты пересечения.
Друзья, спасибо за внимание!
Оставляйте комментарии. Подписывайтесь на телегу.
В группе комментариев уже потихоньку становится интересно )))