Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Алгоритм] Найти координаты точки на отрезке


Автор: Vreden 19.8.2011, 17:10
В процессе программирование понадобилось следующее

Есть координаты двух точек, которые составляют отрезок
x1 = 100 y1 = 0
x2 = 0 y2 = 100

Находим длину отрезка
L^2 = (x1 – x2)^2 + (y1 – y2)^2
L^2 = (100 – 0)^2 + (0 – 100)^2
L^2 = 10000 + 10000 = 20000
L = 141

Теперь нам нужно найти координату точки которая лежит на этом отрезке, на его длине L = 23
Получаем 23^2 = (100 – x2)^2 + (0 – y2)^2
Как найти x2 и y2?

Быть может тут требуется применить еще какие другие формулы?

Автор: vedun 19.8.2011, 17:34
Можно посчитать угол наклона прямой, зная гипотенузу и угол наклона находим два катета. Это будут добавки к координатам точки от которой отсчитываем расстояние вдоль прямой.

Автор: Vreden 19.8.2011, 17:45
Нашел ответы на свои вопросы

Решение 1:
x=(x₁+λx₂)/(1+λ),  y=(y₁+λy₂)/(1+λ).
Где λ=L₁/L₂ 

Решение 2:
tgA=(Y2-Y1)/(X2-X1)
Dx=23*cosA
Dy=23*sinA
X=X1+Dx
Y=Y1+Dy

Спасибо за внимание вопрос решен

Автор: TheLex 20.9.2011, 00:53
а если у меня есть точка на таком же отрезке. 
но неизвестны длины отрезков, а известна одна из координат точки. 
как узнать вторую координату?

Автор: Earnest 20.9.2011, 07:53
Подставь известную координату в уравнения прямой и получи вторую.
Уравнение прямой, проходящей через 2 точки, есть в любом справочнике по элементарной математике.
Ну и вопросы у вас, господа... 
или в школе уже геометрию заменили на  "любовь к родине", как грозятся?
 smile  smile  smile 

Автор: TheLex 20.9.2011, 09:57
не все предметы в школе я любил, а вот конкретную формулу подскажи

Автор: McMan 20.9.2011, 18:24
TheLex
Цитата

x1 = 100 y1 = 0
x2 = 0 y2 = 100
а известна одна из координат ТРЕТЬЕЙ точки. 

есть точка на таком же отрезке. 
x3=a   y3=?

Система координат-то Декартова, прямоугольная?

(x1-x2)/(y1-y2)=(x1-x3)/(y1-y3)
Подобие треугольников хотя бы...

y1-y3=(x1-x3)*(y1-y2)/(x1-x2)
y3=(x3-x1)*(y1-y2)/(x1-x2)+y1

в данном конкретном
y3=(a-100)*(0-100)/(100-0) +0=100-a

но в  случае, если "пишешь программу" следи чтобы x1 != x2
иначе просто y3=(y1+y2)/2


PS кстати, не совсем понял, зачем я тут стал решать задачи пятого класса... накатило просто что-то. Извините.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)