domingo, 29 de março de 2009

Trigonometria com Actionscript

"Trigonometria (do grego trigōnon "triângulo" + metron "medida") é um ramo da matemática que estuda os triângulos, particularmente triângulos em um plano onde um dos ângulos do triângulo mede 90 graus (triângulo retângulo). Também estuda especificamente as relações entre os lados e os ângulos dos triângulos; as funções trigonométricas, e os cálculos baseados nelas. A abordagem da trigonometria penetra outros campos da geometria, como o estudo de esferas usando a trigonometria esférica".
Fonte: Wikipédia - 29/03/2009 - http://pt.wikipedia.org/wiki/Trigonometria

Olá, hoje irei explicar alguns conceitos básicos de como usar a trigonometria com actionscript. Vou levar em conta que você já tem algum conhecimento em actionscript 3, ok?! Então vamos lá...

No final desse post, você vai entender facilmente como se faz:

Radianos
"O ângulo definido no centro de um círculo por um arco de circunferência com o mesmo comprimento que o raio do círculo é 1 radiano".
Fonte: Wikipédia - 29/03/2009 - http://pt.wikipedia.org/wiki/Radianos


Um radiano equivale a 57,29º, ou seja, uma círcuferência tem
6,28 radianos (360º).

No actionscript, o 0º (grau zero) começa no ponto (raio, 0) e cresce em sentido horário até (-raio, 0) formando 180º, após esse ponto, torna-se negativo (-180º) e vai diminuindo em sentido horário até o ponto (raio, 0) que é 0º (grau zero).



Tanto que se você fizer:
meuMc.rotation = 270;
trace(meuMc.rotation);
//Retorna: -90
Não tenho certeza, mas acho que os grausº no actionscript são dessa forma para facilitar a conversão para radianos. Sendo o positivo e negativo os controladores de hemisfério, o positivo +y e negativo -y.
Círculo Trigonométrico


Depois dos radiano, fica mais fácil entender a imagem acima assim...

O ponto em que a hipotenusa cruza com o perímetro da circunferência, vamos chamá-lo de P. Para calculá-lo, usamos as formulás:
Px = cosseno(radiano) * raio;
Py = seno(radiano) * raio;
Programando...
Para podermos desenhar uma simples circunferência no palco, podemos fazer assim:
var radius:Number = 100;

var circle:Shape = new Shape();
circle.graphics.lineStyle(1);
circle.graphics.moveTo(radius, 0);

for (var i:int = 0; i <= 360; i++)
{
var radian:Number = i * (Math.PI / 180);
var xPoint:Number = Math.cos(radian) * radius;
var yPoint:Number = Math.sin(radian) * radius;
circle.graphics.lineTo(xPoint, yPoint);
}
circle.graphics.endFill();
circle.x = stage.stageWidth / 2;
circle.y = stage.stageHeight / 2;
addChild(circle);
Pronto! Agora é só usar a imaginação...
Abaixo o link para o download dos fontes:
clique aqui