2016-10-14 4 views
0

У меня трудное время, применяя векторные знания к реальной ситуации: я работаю над реализацией алгоритма обнаружения почти столкновения для кораблей (не предикторов) на основе бумаги this. У меня есть данные Местонахождение (x, y), курс (угол с севера) и скорость для каждого корабля (скажем, только корабль A и B).Расчет векторов на основе скорости и углов

Три компонента, в которых я нуждаюсь: относительная скорость между кораблями, единичный вектор, параллельный курсу судна, единичный вектор, перпендикулярный относительной скорости (общие формулы можно увидеть в главе 4). Первая формула даются в работе, в то время как следующие 2 я получил от книги по математике:

1) relative velocity V(BA) = C(B) - C(A) (all vectors; within brackets -> subscript) 

Я предполагаю, что C означает курс (который является углом). По моему мнению, относительная скорость измеряется на расстоянии во времени, а вектор имеет величину (скорость?) И ориентацию (курс?).

2) unit vector = vector/magnitude 
3) perpendicular vector = any vector <=> dot product = 0 

Поэтому мой вопрос: как я могу использовать данные, у меня есть (то есть скорость, курс, местоположение) для расчета этих уравнений?

Что касается векторов, единственное, что приходит на ум для вычисления вектора, - это использовать две точки (так что 2 x, y пары), которые в этом случае кажутся нечетными.

+0

Не совсем проблема Python, так как это чистая математика? – Torxed

+0

Velocity - это вектор, он имеет величину и направление. И нет, это, вероятно, не ангел, а векторное вычитание. – Simon

+0

Кажется, у вас проблемы с преобразованием полярных векторов (величина, угловая ориентация) в декартовую (горизонтальная величина, вертикальная величина). Вы можете [легко переключаться между двумя] (http://mathworld.wolfram.com/PolarCoordinates.html). – berna1111

ответ

3

Допустим, у вас есть позиция в координатах x (горизонтальная, положителен, когда с запада на восток) и y (вертикальные, положителен, когда с юга на север), скорость s и курс c (угол по отношению к северу, по часовой стрелке) для каждый корабль.

Вы можете получить декартовы компоненты скорости, v х и v у, используя:

v у = s соз (c)

v х = s sin (c)

И тогда вы можете add or subtract the vectors term-wise по желанию.

+0

Так что в моем случае я бы сделал Vy + Vx для каждого корабля, чтобы получить векторы CB и CA; то для относительной скорости, я просто делаю CB-CA, правильно? У меня такое чувство, что мне не хватает sqrt – Dimebag

+0

Не совсем, похоже, вы смущены [каким вектором] (http://www.physicsclassroom.com/class/vectors/Lesson-1/Vectors-and-Direction) ,Поскольку каждый вектор имеет два компонента, C A = (V х, А, v у,) и C B = (V х, B, v Y, B). Это сделало бы V Б.А. = (V х, В -v х, А, v Y, B -v у,). – berna1111

+0

Итак, скорость вектора? или величины вектора? Wiki утверждает, что скорость - это величина, поэтому скорость будет 's = sqrt (x^2 + y^2)', где x и y (я полагаю) будут декартовыми компонентами. Это верно? Меня смущает то, что скорость (вектор?) И скорость (скаляр?) Измеряются на расстоянии/времени. V y Расчет выше был бы расстоянием^2/time (?!) – Dimebag