Основные определения (из вашей книги по тригонометрии):
cos ϴ = x/h, sin ϴ = y/h
Искусство ASCII на безвозмездной основе для описания x, y и H:
_
/\ assume we're going this way
/
/|
/ |
h / |
/ | Y
/ |
/ϴ |
+-------
X
Вектор можно разбить на сумму двух векторов. (Вы можете думать об этом на диаграмме, как северо-восток для H метров - это то же самое, что идти на восток для X метров и север для Y метров)
H в этом случае соответствует вашей текущей тяге. Вы хотите найти компоненты X и Y этого толчка.
, поскольку cos ϴ = X / H (базовое определение косинуса), мы можем сказать (через простую алгебру)
X = H * cos ϴ
однако, ϴ считается радиальной мерой. если вы используете градусы, вы должны умножить на Math.PI / 180, чтобы получить правильное значение. следовательно, у вас есть
ϴ = angle * Math.PI / 180
Мы очень близки! Теперь наша классическая формула определения косинуса (в переводе на наши термины) выглядит как
cos (angle * Math.PI / 180) = X / H
H - вектор тяги, X - только горизонтальная часть вектора тяги.
"Теперь, подожди минутку", - говорите вы. «Почему я использую косинус для вычисления скорости по вертикали тогда? Ваши оси кажутся мне перевернутыми». О да. Это стандартная геометрическая ориентация - углы измеряются как вращение против часовой стрелки от -------->
прямо вправо. Ваши оси перевернуты, потому что вы сохраняете свой угол как «часовой угол», то есть 0 градусов в 12:00. Чтобы использовать стандартное геометрическое уравнение, мы должны отразить всю нашу вселенную так, чтобы оси X и Y были перевернуты. К счастью, математический способ сделать это - просто переключить все свои X и Y в уравнениях.
standard 'math' coordinate system
_
/\
/
/|
/ | angles increase counterclockwise
h / |
/ | Y
/ |
/ϴ |
+----------- (zero degrees starts here)
(0,0) X
your coordinate system
(zero degrees starts here)
^
| angles increase clockwise
| /
| /
|ϴ/
|/
+
Наконец, почему в косинусе есть негатив? Потому что здесь декартова система, в которой мы делаем математику в
^ y-axis
|
|
+----> x-axis
вот декартова система, к которой вы рисуете (вероятно, холст)
+------> x-axis
|
|
v y-axis
, поскольку ось y обращена в другом направлении, вы умножаете все значения y на минус 1, чтобы получить правильную ориентацию