Kategorie: Mathematik

Winkel und Geschwindikeit auf x y umrechnen

Hat man einen Winkel (angle) und eine Geschwindigkeit (speed) und möchte gerne die Verschiebung auf x und y haben, so kann dies mit Sinus und Kosinus berechnet werden.

var vx:Number = speed * Math.cos(angle);
var vy:Number = speed * Math.sin(angle);

sprite.x += vx;
sprite.y += vy;

Hex nach RGB oder RGB nach Hex und Alpha

Manchmal ist es notwendig einen Hexadezimalwert in RGB Aufzugsplitten.

var red:int   = color >> 16;
var green:int = color >> 8 & 0xFF;
var blue:int  = color & 0xFF;

Die Umkehrung würde dann folgendermaßen aussehen

var color:int = red << 16 | green << 8 | blue;

Hat man zusätzlich einen vorrangestellten Alphawert, schiebt man Alpha 24mal nach rechts. Diesen bekommt man zum Beispiel aus der BitmapData::getPixel32

var alpha:int = color >> 24;
var red:int   = color >> 16 & 0xFF;
var green:int = color >> 8 & 0xFF;
var blue:int  = color & 0xFF;

//---
var color:int = alpha << 24 | red << 16 | green << 8 | blue;

MovieClip rotieren in Richtung eines Punktes

So kann ein MovieClip in Richtung eines Punktes. Das folgende Beispiel dreht ein MovieClip in Richtung des Mauszeigers.

var dx:Number = mausX - derMovieClip.x;
var dy:Number = mausY - derMovieClip.y;
derMovieClip.rotation = Math.atan2(dy, dx) * 180 / Math.PI;

Zu beachten ist, dass Math.atan2 den Wert in Radiant ausgibt und .rotation erwartet den Winkel in Grad.  Hier ist ein Beispiel, wie Radiant in Grad und umgekehrt umgerechnet wird.
Dreht einen MovieClip in Richtung der Maus.
Projektdateien

Distanz zwischen zwei Punkten berechnen

So berechnet man eine Distanz zwischen zwei Punkten. P1 (x1/y1) und P2 (x2/y2) könnten zum Beispiel Positionen der Maus und einem MovieClip sein.

var dx:Number = x2 - x1;
var dy:Number = y2 - y1;
var dis:Number = Math.sqrt(dx * dx + dy * dy);

Umrechnen Grad nach Radiant und Radiant nach Grad

So rechnet man Grad nach Radiant um:

radiant = grad * Math.PI / 180

Radiant nach Grad rechnet man folgendermaßen um:

grad = radiant * 180 / Math.PI