Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование игр, графики и искусственного интеллекта > Уравнение нахождения координат точек на векторе


Автор: helm2004 30.8.2010, 14:05
Добрый день господа!
Есть расстояние между т. А и т.В, между ними есть т.М, мне нужно найти координаты точки М, то есть АВ=АМ+МВ. Известно расстояние до М.
Практический пример: есть два аэропорта с координатами х1у1 и х2у2 и расстоянием между ними 900км, нужно найти, где находиться самолёт, если он пролетел 2 часа с скоростью 200км за час.
Если возможно, то опишите формулу.
Спасибо за ответы! 

Автор: Skevalt 30.8.2010, 16:29
Пусть АМ/МВ = а1/а2, тогда Xm = Xa*a2/(a1 + a2) + Xb*a1/(a1 + a2) и Ym = Ya*a2/(a1 + a2) + Yb*a1/(a1 + a2) Попробуйте эти соотношения. Возможно, что я ошибаюсь, тогда поищите по запросу "координаты точки, делящей отрезок в заданном соотношении"

Автор: Bitter 30.8.2010, 17:24
Skevalt, да ну что Вы, это ж линейная интерполяция обычная.

P = A+c*k, где

P - искомая точка
A - точка А, начальная то есть
с - вектор в точку B, находится так: с = B-A
k - позиция на отрезке. изменяется от 0 до 1. 0 - точка А, 1 - точка B

Зная что самолет пролетел 2 часа со скоростью 200 км/ч, мы получаем сколько он пролетел - 400 км, значит k = 400/900 = 0.44

P.X = A.X+(B.X-A.X)*k
P.Y = A.Y+(B.Y-A.Y)*k

Автор: Skevalt 30.8.2010, 17:54
Bitter, я привел решение векторного уравнения, а Вы линейную интерполяцию. И то, и то решение дают одни и те же формулы, если упростить и привести их к одному и тому же виду. Прикинуть на численном примере - результаты совпадут. Два разных подхода к задаче. Вы правы, линейная интерполяция нагляднее, а у меня в голове почему то вектор на векторе.

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