All pastes #886035 Raw Edit

Miscellany

public text v1 · immutable
#886035 ·published 2008-01-31 11:06 UTC
rendered paste body
// koordinatsystem
lineStyle(1, 0x000000, 100);
moveTo(200, 0);
lineTo(200, 400);
moveTo(0, 200);
lineTo(400, 200);

attachMovie("foo", "foo", getNextHighestDepth());
foo._x = foo._y = 200;
foo.onEnterFrame = function()
{
	this._rotation = calc_rotation_angle(this, {_x: _root._xmouse, _y: _root._ymouse});
}

_root.onEnterFrame = function()
{
	var angle = calc_rotation_angle(this, {_x: _root._xmouse, _y: _root._ymouse});
	if (Key.isDown(Key.UP)) {
		foo._x = foo._x + Math.cos(angle) * 3;
		foo._y = foo._x + Math.sin(angle) * 3;
	}
	if (Key.isDown(Key.DOWN)) {
		foo._x = foo._x - Math.cos(angle) * 3;
		foo._y = foo._x - Math.sin(angle) * 3;
	}
}

function calc_dist(mc1, mc2)
{
	var a = mc1._x - mc2._x;
	var b = mc1._y - mc2._y;
	return Math.sqrt(a*a + b*b);
}

function calc_rotation_angle(mc1, mc2)
{
	var a = mc1._x - mc2._x;
	var b = mc1._y - mc2._y;
	var angle = Math.atan(b / a) / Math.PI*180;

	if (angle < 0 && b < 0) { angle = 180 + angle; }
	else if (angle > 0 && b > 0) { angle = -180 + angle; }

	if (angle == 0 && a > 0) angle = 180;

	return angle;
}

function calc_absolute_angle(mc1, mc2)
{
	var a = mc1._x - mc2._x;
	var b = mc1._y - mc2._y;
	var angle = Math.atan(b / a) / Math.PI*180;
	
	if (b > 0) {
		if (angle < 0) angle *= -1; // quad 1
		else angle = 180 - angle; // quad 2
	} else {
		if (angle < 0) angle = 180 - angle; // quad 3
		else angle = 360 - angle; // quad 4
	}
	return angle;
}