Тригонометрические отношения для углов выше 360 - PullRequest
4 голосов
/ 20 мая 2009

Есть ли какое-либо использование Sin (720) или Cos (1440) (углы в градусах)? Будь то компьютерное программирование или в любой другой ситуации? В общем, есть ли какое-либо применение Син / Косин / Тан под любым углом больше чем 360?

В физике мы используем точечные и перекрестные продукты. много, но даже они требуют углов меньше 180 градусов всегда.

Привет всем, Я знаю, как их вычислить .... Я хочу знать, полезны ли они когда-нибудь ???? Когда я когда-нибудь столкнусь с ситуацией, когда Мне нужно вычислить грех (440), например ???

Ответы [ 15 ]

10 голосов
/ 20 мая 2009

Как в математике, так и в программировании:

Sin(x) = Sin(x % 360)

Как указано в другом ответе, углы, превышающие 360, представляют один или несколько полных поворотов по кругу плюс часть по модулю. Это может иметь физический смысл в некоторых обстоятельствах.

Кроме того, при выполнении тригонометрических вычислений вы должны учитывать этот факт. Например:

sin(a)*cos(a) = (1/2)*sin(2a)

Для> 180 вы получите грех угла больше 360.

Кстати, посмотрите здесь .

4 голосов
/ 20 мая 2009

Я видел такие вещи, возникающие при выполнении арифметики углов:

float angleOne = 150;
float angleTwo = 250;

//...

float result = Sin(angleOne + angleTwo); // Sin(400)
float result = Sin(angleOne - angleTwo); // Sin(-100)

В этом (надуманном) примере это кажется очевидным, но когда вы вычисляете угол, основанный на произвольных поворотах нескольких объектов, вы не всегда можете знать, какие числа вы получите. Представьте себе, как рассчитать положение игрока в 3D-игре, когда он стоит, например, на вращающейся платформе.

3 голосов
/ 20 мая 2009

Были случаи, когда нормальная математика означает, что вы в конечном итоге «пересекаете круг» один или несколько раз, и если вы придерживаетесь простой математики, ваши углы могут быть больше 360. Лично мне нравится нормализовать углы, чтобы они равнялись 0 до 360 или от -180 до 180 после таких операций, но это не имеет большого значения.

Иногда большее число может действительно что-то представлять. Чтобы взять тривиальный пример, представьте инструкции, чтобы открыть сейф с комбинацией классического набора. Вам нужно пару раз повернуть циферблат, чтобы инструкции могли быть такими:

   turn(800);  // Twice around plus another 20 degrees
   turn(-500); // Once around the other direction plus 140 degrees
   turn(40);   // Dial in the last digit

В этом контексте принятие греха или cos скажет вам кое-что об окончательном положении циферблата, но вы потеряете информацию о количестве поворотов.

3 голосов
/ 20 мая 2009

Каждый раз, когда вы имеете дело с техникой взаимодействия с пользователем, вполне возможно, что они будут толкать вас выше 0 градусов или 360 градусов. Представьте, что вы делаете игру с оружейным потоком. В настоящее время он направлен на 359 градусов, и пользователь дергает джойстик вправо: теперь он наведен на 361 градус. Если вы реализуете угловое представление неправильно, внезапно, пистолет с быстрым ходом почти на 360 градусов влево.

Я предполагаю, что пользователи будут ... разочарованы этой ошибкой.

Существуют всевозможные проблемы, которые возникают при углах Эйлера представлениях системы отсчета, которые важны в играх, симуляциях и управлении реальными устройствами. Блокировка подвеса - это серьезная проблема в реальном управлении вращающимся устройством (в моей жизни это была проблема с устройствами панорамирования / наклона камеры). Ошибка «быстрого вращения» была очень неприятной проблемой в системе автопилота маленькой лодки, когда-то давно - представьте, что вы очень плотно обернули стальной трос вокруг рулевой рубки (то есть вы не хотите там стоять).

3 голосов
/ 20 мая 2009

Один оборот вокруг круга составляет 360 градусов или 2pi радиан.

Тригонометрические функции , такие как синус и косинус, "обернутся", когда они достигнут 360 градусов, и будут действовать так же, как и при 0 градусах. В основном происходит следующее:

angle_in_unit_circle = angle mod 360

Кроме того, некоторые тригонометрические функции, такие как тангенс, не определены под определенными углами, такими как 90 и 270 градусов, где тангенс угла будет возвращать положительную или отрицательную бесконечность.

Это «обтекание» можно увидеть, представляя функции синуса, косинуса и тангенса, используя прямоугольный треугольник, вписанный в единичный круг , и это поведение делает эти функции периодическими потому что они будут повторять свои шаблоны снова и снова.

В Википедии имеется обширная статья о Тригонометрических функциях , так что, возможно, стоит взглянуть на нее.

Usage

С точки зрения использования, я не могу придумать хороший пример с макушки головы, за исключением, может быть, возможно, представления местоположения частицы в определенное время в полярной системе координат , где угол θ зависит от времени t:

r(θ(t)) = t    where θ(t) = t

для значений t от 0 до 720, которые затем могут быть представлены в декартовой системе координат как:

x(t) = r sin(θ(t)) == t sin(t)
y(t) = r cos(θ(t)) == t cos(t)

Частица будет двигаться по спирали, в зависимости от времени t. В этом случае будут вычислены синус и косинус углов за пределами 360.

(И моя математика ржавая, поэтому, если в приведенных выше уравнениях есть какие-либо ошибки, пожалуйста, дайте мне знать!)

1 голос
/ 01 июля 2010

Я играю в компьютерную игру под названием Garry's Mod, и в игре бывают моменты, когда при программировании мне нужно простое решение, позволяющее объекту постоянно двигаться по постоянному кругу. Для этого я использую синус и косинус вечно увеличивающегося таймера, измеряя количество времени с момента запуска игры.

Синус T (время) равен значению траектории орбиты X, а косинус T равен значению траектории орбиты Y (X и Y находятся на трехмерной координатной плоскости, причем Z не используется в момент.)

Пример:

T = 1000 тиков Х = Sin (Т) Y = сов (Т)

То есть X в этот момент времени составляет 0,8268795405320025, а Y - 0,15466840618074712.

Теперь предположим, что количество времени увеличивается до 1500. X будет -0,9939019569066535, а Y = -0,11026740251372914.

В двух словах, оно будет постоянно колебаться от 1 до -1, предоставляя мне возможность умножить это значение, скажем, на 100, и сделать плоскость координат локальной относительно позиции моих символов, после чего я могу сказать запрограммированному выражению переместить объект, основанный на этих координатах, и он будет двигаться по постоянному круговому пути вокруг меня.

Тад. Кто сказал, что ты не можешь учиться у видеоигр?

1 голос
/ 20 мая 2009

Углы вне диапазона «главных углов» [-180,180) по сути являются псевдонимами друг друга (по модулю 360 градусов) и не имеют физического различия.

С математической / инженерной точки зрения, если у вас есть процесс, в котором количество оборотов важно и должно отслеживаться (например, двигатель, вращающийся взад и вперед), тогда 0 и 720 градусов не совпадают , Синус и косинус - просто периодические функции, поэтому они имеют одинаковое значение каждые 360 градусов. Если у вас есть частица, совершающая равномерное круговое движение, где x (t) = A cos (& omega; t + & phi;) и y (t) = sin (& omega; t + & phi;), то фазовый угол & theta; = (& omega; t + & phi;) будет тем, чем оно является, будь то 0 или 720 градусов или 82144,33 градуса или что-то еще.

Таким образом, функции cos (& theta;) и ​​sin (& theta;) просто используются для вычисления координат x и y, независимо от значения & theta; является. У вас нет выбора в этом вопросе, если & theta; составляет 82144,33 градуса, то вы захотите рассчитать синус и косинус этого угла.

1 голос
/ 20 мая 2009

На синусоиде Sin (720) == Sin (0) (и т. Д.), Поэтому я ожидаю, что любые достойные реализации этих функций будут обрабатывать градусы «больше чем 360». Существует множество причин для достижения угол больше 360 или меньше 0.

0 голосов
/ 11 декабря 2010

Также используются углы выше 360 градусов, например описать трюки на сноуборде:

http://en.wikipedia.org/wiki/List_of_snowboard_tricks#Spins

Итак, вы видите, есть различные примеры из реального мира, где вы используете более высокие углы для описания вращения объекта.

0 голосов
/ 20 мая 2009

Есть много обстоятельств, когда необходимы углы за пределами [0,360]. Мне нравится идея кодового замка. Здесь часто можно увидеть как положительные, так и отрицательные углы за пределами простого диапазона [0,360] градусов.

Множественные угловые формулы часто важны в математике. Функции триггера используются не только в треугольниках. Они появляются в разных местах, например, в рядах Фурье, схемах сжатия изображений или решениях дифференциальных уравнений. В вычислительном отношении это правда, что вы всегда можете использовать мод, чтобы уменьшить диапазон для функции триггера до значения по умолчанию. Но редко бывает так, что углы всегда будут предоставляться в этом номинальном диапазоне.

...