Trigonometria Triangular (ActionScript 3)
-
09-06-2019 - |
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.
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)
.