DevSecOpsARTIGO

Fazendo contas com códigos Actionscript 3

Texto original em inglês, de Saravanan, disponível em http://www.designscripting.com/2011/03/maths-and-actionscript-3-code-using-as3-with-math/

?

Cálculo
e ActionScript juntos geram bons efeitos
em Flash, como efeitos de partículas e jogos em flash que jogamos todos os
dias. Hoje vamos dar uma olhada em ActionScript e cálculos.

Distância entre dois pontos:

Passe os
dois pontos como argumentos para ter a distância entre dois pontos.

public function distance(p1:Point, p2:Point):Number {
var dx:Number = p2.x-p1.x;
var dy:Number = p2.y-p1.y;

return Math.sqrt(dx*dx + dy*dy);
}

Ângulo/Rotação entre dois pontos:

Você
precisa passar os quatro argumentos para ter o ângulo, (X1,Y1) pointA e (X2,Y2)
pointB.

function getAngle (x1:Number, y1:Number, x2:Number, y2:Number):Number
{
var dx:Number = x2 - x1;
var dy:Number = y2 - y1;
var degree:Number = Math.atan2(dy,dx) * 180/Math.PI
return degree;
}

Rotação circular:

Gire um
objeto em um caminho circular através do centro dado.

var radius:Number = 40;
var speed:Number = 0.2;
var angle:Number = 0;
var centerX:Number = 30;
var centerY:Number = 30;

//Call rotate function inside Enterframe or Timer
function rotate( target:MovieClip ):void
{
target.x = centerX + Math.cos(angle) * radius;
target.y = centerY + Math.sin(angle) * radius;
angle += speed;
}

Descubra PAR ou ÍMPAR:

Utilize o resto da divisão para descobrir se um determinado número dado é PAR ou ÍMPAR
(Odd or Even).

if( inputNumber % 2 == 0 )
trace( "Given Number is Even" );
else
trace( "Given Number is Odd" );

Encontre o ponto de intersecção entre duas linhas:

Escreva
o código para encontrar o ponto de intersecção entre duas linhas, passe Point
A(X1,Y1), Point B(X2,Y2), Point C(X3,Y3), Point D(X4,Y4).

public static function getLineIntersection (a1:Point,a2:Point,b1:Point,b2:Point):Point {

//calculate directional constants
var k1:Number = (a2.y-a1.y) / (a2.x-a1.x);
var k2:Number = (b2.y-b1.y) / (b2.x-b1.x);

// if the directional constants are equal, the lines are parallel,
// meaning there is no intersection point.

if( k1 == k2 )
return null;

var x:Number, y:Number;
var m1:Number, m2:Number;

// an infinite directional constant means the line is vertical
if( !isFinite(k1) ) {
// so the intersection must be at the x coordinate of the line
x = a1.x; m2 = b1.y - k2 * b1.x;
y = k2 * x + m2;

// same as above for line 2
} else if ( !isFinite(k2) ) {
m1 = a1.y - k1 * a1.x;
x = b1.x;
y = k1 * x + m1;

// if neither of the lines are vertical
} else {
m1 = a1.y - k1 * a1.x;
m2 = b1.y - k2 * b1.x;
x = (m1-m2) / (k2-k1);
y = k1 * x + m1;
}

return new Point(x,y);
}

Porcentagem do número entre minValue e maxValue:

Para encontrar a porcentagem de um número em um intervalo, por exemplo, quanto 14 representa entre 6 e 100.

trace(percentage(14,6,100)+"%")

function percentage( X:Number, minValue:Number, maxValue:Number ):Number
{
return (X - minValue)/(maxValue - minValue) * 100;
}

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Ver perfil