Координаты для моей игры на Javascript - на основе угла, когда я использую Sin Cos и Tan? - PullRequest
3 голосов
/ 17 февраля 2011

JavaScript-координаты Sin, Cos или Tan? Я пытаюсь изучить некоторые основные тригонометрии для разработки игр в веб-браузере. Я знаю, что такое правило, и так далее. Я знаю, что мы также работаем между -1 и 1.

Я в замешательстве, хотя мне нужно работать с координатами x и y отдельно в зависимости от угла.

Вот что мне нужно, чтобы определить направление моего угла в x и y, что действительно работает (спасибо Loktar).

velY = -Math.cos(angle * Math.PI / 180) * thrust;
velX = Math.sin(angle * Math.PI / 180) * thrust;

Из этого я понимаю, что нахожу cos x и y на основе небольшой формулы для преобразования моей угловой переменной в радианы.

Но почему cos нужно использовать для x, а sin для y? Где загар входит в это? Это связано с 4 квадрантами круга?

Как узнать, когда использовать sin cos или tan, когда мне дают только угол, и мне нужно определить, где на окружности этот угол находится с помощью x, y?

Любые простые диаграммы или объяснения были бы чрезвычайно полезны!

Спасибо

1 Ответ

13 голосов
/ 17 февраля 2011

Основные определения (из вашей книги по тригонометрии):

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, чтобы получить правильную ориентацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...