Треугольная тригонометрия (ActionScript 3)
-
09-06-2019 - |
Вопрос
Я пытаюсь написать формулу в ActionScript 3, которая даст мне переменную «z» (см. изображение ниже) в градусах, которую я затем преобразую в радианы.
Я уже буду знать значение переменных «x» и «y».Как с помощью тригонометрии рассчитать длину гипотенузы и, следовательно, переменный угол var z?Решение в AS3 или псевдокоде было бы очень полезно.Спасибо.
Решение
Что вам нужно, это:
var h:Number = Math.sqrt(x*x + y*y);
var z:Number = Math.atan2(y, x);
Это должно дать вам угол в радианах. Возможно, вам придется поменять местами x/y и, возможно, добавить или удалить 90 градусов, но это должно сработать!(Обратите внимание, что вам даже не нужно час получить я когда вы используете atan2)
Я использую умножение вместо Math.pow() только потому, что математика довольно медленная. Вы можете сделать:
var h:Number = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
И должно быть точно так же.
Другие советы
z эквивалентен 180 - углу yH.Или:
180 - arctan(x/y) //Degrees
pi - arctan(x/y) //radians
Кроме того, если он есть в математических библиотеках ActionScript, используйте arctan2, который принимает и x, и y и правильно обрабатывает знаки.
Нужный вам угол такой же, как угол, противоположный углу между y и h.
Давай позвоним a
угол между y
и h
, угол, который вам нужен, на самом деле 180 - a
или PI - a
в зависимости от вашей единицы измерения (градусы или радианы).
Геометрия говорит нам, что:
cos(a) = y/h
sin(a) = x/h
tan(a) = x/y
Используя tan(), мы получаем:
a = arctan(x/y)
Поскольку мы ищем 180 - а, вам следует вычислить:
180 - arctan(x/y)
Что сказал @Patrick, также гипотенуза sqrt(x^2 + y^2)
.