A Disturbing Strangeness

January 24, 2012

Retro Programming (Partie 3): Outrun

Filed under: programming — Tags: , , , — Orbito @ 4:31 pm

Raycasting démo + sprites 2d 1/2 pour les tubes.

(cliquez sur l’applet pour prendre le focus et gauche, droite, haut, bas pour bouger.)

January 18, 2012

Retro Programming (Partie 2): Doom

Filed under: programming — Tags: , , , — Orbito @ 4:47 pm

Raycasting démo.

(cliquez sur l’applet pour prendre le focus et gauche, droite, haut, bas pour bouger.)

January 17, 2012

Matrice 2D en AS3

Filed under: programming — Tags: , , — Orbito @ 12:29 pm
package math {
	/**
	 * @author orbito
	 */
	public class Matrix2D {
		public var 	a : Number,
		b : Number,
		c : Number,
		d : Number,
		tx : Number,
		ty : Number;

		public function Matrix2D() : void {
			this.a = 1;
			this.b = 0;
			this.c = 0;
			this.d = 1;

			this.tx = 1;
			this.ty = 0;
		}

		public function get determinant() : Number {
			return (a * d - b * c);
		}

		public function get position() : Vector2D {
			return new Vector2D(tx, ty);
		}

		public function set position(a : Vector2D) : void {
			tx = a.x;
			ty = a.y;
		}

		public function translate(dx : Number = 0, dy : Number = 0) : void {
			tx += dx;
			ty += dy;
		}

		public function scale(sx : Number = 1, sy : Number = 1) : void {
			a = a * sx;
			b = b * sx;
			c = c * sx;
			d = d * sy;

			tx = tx * sy;
			ty = ty * sy;
		}

		public function rot(radians : Number) : void {
			var m : Matrix2D = new Matrix2D;

			m.a = m.d = Math.cos(radians);
			m.c = Math.sin(radians);
			m.b = -m.c;

			deltaCombine(m);
		}

		public function deltaCombine(lhs : Matrix2D) : void {
			var mat : Matrix2D = new Matrix2D;

			mat.a = lhs.a * a + lhs.b * c;
			mat.b = lhs.a * b + lhs.b * d;

			mat.c = lhs.c * a + lhs.d * c;
			mat.d = lhs.c * b + lhs.d * d;

			deltaCopy(mat);
		}

		public function clone() : Matrix2D {
			var mat : Matrix2D = new Matrix2D;
			mat.copy(this);
			return mat;
		}

		public function deltaCopy(mat : Matrix2D) : void {
			a = mat.a;
			b = mat.b;
			c = mat.c;
			d = mat.d;
		}

		public function copy(mat : Matrix2D) : void {
			a = mat.a;
			b = mat.b;
			c = mat.c;
			d = mat.d;
			tx = mat.tx;
			ty = mat.ty;
		}

		public function invert() : Boolean {
			var mat : Matrix2D = new Matrix2D;

			var det : Number = determinant;

			if (det == 0) return false;

			det = 1 / det;

			mat.a = d * det;
			mat.b = b * -det;
			mat.c = c * -det;
			mat.d = a * det;

			mat.tx = (b * ty - d * tx) * det;
			mat.ty = (c * tx - a * ty) * det;

			copy(mat);

			return true;
		}

		public function transformVector(v : Vector2D) : Vector2D {
			return new Vector2D(v.x * a + v.y * b + tx, v.x * c + v.y * d + ty);
		}
	}
}

January 16, 2012

Retro Programming (Partie 1): Mario Kart

Filed under: programming — Tags: , , , — Orbito @ 3:03 pm

Raycasting pour le sol + voxel pour les parapets + sprites 2d 1/2 pour les tubes. (pas de test de collisions pour l’instant, on verra plus tard).

(cliquez sur l’applet pour prendre le focus et gauche, droite, haut, bas pour bouger.)

Powered by WordPress
 Entries (RSS) and Comments (RSS)