сед
Просветленный
(40047)
5 лет назад
подобные прямоугольные треугольники, где ав и р - гипотенузы, ав = корень из ((х2-х1)в квадрате + (у2-у1)в квадрате), ну и затем р/(х2-х3) = ав/(х2-х1) и р/(у2-у3) = ав/(у2-у1), х3и у3 - координатаы с, х2-х1 и у2-у1 и ав и р - известны, находятся х2-х3 и у2-у3
Стас Руднев
Мыслитель
(6014)
5 лет назад
Для упрощения вычислений преобразуем координаты при помощи параллельного переноса с поворотом. Перенесем начало координат в точку В и повернем оси на 180°(рисунок для наглядности получим вращением исходной прямой вокруг тоски С на 180° и с началом координат в точке В в нормальном виде).
Старые координаты преобразуются в новой системе следующим образом: Ах = -х1 + х2 и Ay = -y1 + у2; Bx = -x2 + x2 = 0 и By = -y2 + y2 = 0; Cx = -x + x2 и Cy = -y + y2.
Переход от новых координат к старым осуществляется по формулам:
Хстар = - Хнов + Х2
Yстар = - Yнов + Y2
Найдем Сх и Cy в новой системе координат.
Из рисунка следуют две очевидные формулы:
1) Cx/Cy = Ax/Ay и
2) Cx² + Cy² = R²
из формулы 1) для С выражаем одну координату через другую: Cy = (Ay/Ax)·Cx = t·Cx, где t =(Ay/Ax)
Подставляя это в формулу 2) получим: Cx² + ( t·Cx)² = R² откуда выводим: Cx = R/√(1+t²) = R·Ax/√(Ax² + Ay²), и Cy = R·Ay/√(Ax² + Ay²)
Это координаты точки С в новой системе. В начальной системе эти координаты найдем по приведенным выше формулам:
X = - Cx + X2 = X2 - R·Ax/√(Ax² + Ay²), где Ах = -х1 + х2 и Ay = -y1 + у2 (подставляйте сами) и
Y = - Cy + X2 = X2 - R·Ay/√(Ax² + Ay²), где Ах = -х1 + х2 и Ay = -y1 + у2 (подставляйте сами).
Mikhail Levin
Искусственный Интеллект
(615645)
5 лет назад
если это в программе, то пишем что-то вроде
vector3 A(x, y), B(c,d); // vector3 - простая библиотека для 3-мерных векторов.
vector3 BA = B-A;
BA = BA / !BA; // операция! берет норму, BA / !BA - единичный вектор, направленный A->B
vector3 С = B - r*BA;
Зная:
Координаты точек А {x1; y1} и B {x2; y2}, лежащих на этой прямой
R - расстояние от точки B до искомой точки C на прямой