Треугольная тригонометрия (ActionScript 3) - PullRequest
7 голосов
/ 11 сентября 2008

Я пытаюсь написать формулу в ActionScript 3, которая даст мне переменную "z" (см. Изображение ниже) в градусах, которую я затем преобразовал в радианы.

Я уже буду знать значение переменных "x" и "y". Используя тригонометрию, как я могу вычислить длину гипотенузы и, следовательно, переменный угол var z? Решение в AS3 или psuedocode было бы очень полезно. Спасибо.

triangle

Ответы [ 4 ]

6 голосов
/ 11 сентября 2008

Что вам нужно, это:

var h:Number = Math.sqrt(x*x + y*y);
var z:Number = Math.atan2(y, x);

Это должно дать вам угол в радианах, вам может понадобиться поменять местами x / y и, возможно, добавить или удалить 90 градусов, но это должно сработать! (Обратите внимание, что вам даже не нужно h , чтобы получить z при использовании atan2)

Я использую умножение вместо Math.pow () только потому, что Math довольно медленный, вы можете сделать:

var h:Number = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));

И это должно быть точно так же.

4 голосов
/ 11 сентября 2008

z эквивалентно 180 - угол yH. Или:

180 - arctan(x/y) //Degrees
pi - arctan(x/y) //radians

Кроме того, если в математических библиотеках actionscript он есть, используйте arctan2, который принимает значения x и y и правильно обрабатывает знаки.

1 голос
/ 11 сентября 2008

Требуемый угол совпадает с углом, противоположным углу между 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)
0 голосов
/ 11 сентября 2008

То, что сказал Патрик, также гипотенуза - sqrt(x^2 + y^2).

...