Вопрос

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

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

triangle

Это было полезно?

Решение

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

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).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top