Pergunta

Estou tentando escrever uma fórmula no ActionScript 3 que me dará var "z" (veja a imagem abaixo) em graus, que irei converter em radianos.

Já saberei o valor dos vars "x" e "y".Usando trigonometria, como posso calcular o comprimento da hipotenusa e, portanto, o ângulo variável de var z?Uma solução em AS3 ou psuedocode seria muito útil.Obrigado.

triangle

Foi útil?

Solução

O que você precisa é disto:

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

Isso deve fornecer o ângulo em radianos, talvez seja necessário trocar x/y e possivelmente adicionar ou remover 90 graus, mas deve funcionar!(Observe que você nem precisa h obter z quando você está usando atan2)

Eu uso multiplicação em vez de Math.pow() só porque Math é bem lento, você pode fazer:

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

E deveria ser exatamente igual.

Outras dicas

z é equivalente a 180 - ângulo de yH.Ou:

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

Além disso, se as bibliotecas matemáticas do ActionScript tiverem, use arctan2, que pega x e y e lida com os sinais corretamente.

O ângulo que você deseja é igual ao ângulo oposto àquele entre y e h.

Vamos ligar a o ângulo entre y e h, o ângulo que você deseja é na verdade 180 - a ou PI - a dependendo da sua unidade (graus ou radianos).

Agora a geometria nos diz que:

cos(a) = y/h
sin(a) = x/h
tan(a) = x/y

Usando tan(), obtemos:

a = arctan(x/y)

Como procuramos 180 - a, você deve calcular:

180 -  arctan(x/y)

O que @Patrick disse, também a hipotenusa é sqrt(x^2 + y^2).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top