In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

2D Matrix coordinates to ISO coordinates

Get Adobe Flash player
by artjom 14 Mar 2010
    Embed
/**
 * Copyright artjom ( http://wonderfl.net/user/artjom )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/3E1S
 */

// forked from artjom's flash on 2010-3-15
package {
    import flash.display.Sprite;
    import flash.geom.Point;
    
    public class FlashTest extends Sprite {
        
        private static const RECT_SIZE:int=20;
        private static const CENTER:Point=new Point();
        
        public function FlashTest() {
        	
        		CENTER.x=RECT_SIZE*10/2;
        		CENTER.y=RECT_SIZE*10/2;		
            // write as3 code here..
        		for(var xx:int=0;xx<10;xx++) {
        			for(var yy:int=0;yy<10;yy++) {
   					var sp:Sprite=new Sprite();  
   					sp.graphics.lineStyle(2,0x0);
   					sp.graphics.beginFill(0xFF0000);
   					sp.graphics.drawRect(-RECT_SIZE/2,-RECT_SIZE/2,RECT_SIZE,RECT_SIZE);
   					sp.graphics.endFill();
   					sp.alpha=0.6;
   					this.addChild(sp);
   					
   					var pos:Point=this.getPosByMatrixCoord(xx,yy);
   					sp.x=pos.x;
   					sp.y=pos.y; 	
   					sp.rotation=45;				
        			}	
        		} 
        		
        		this.graphics.lineStyle(1,0x0);
        		this.graphics.moveTo(CENTER.x,0);
        		this.graphics.lineTo(CENTER.x, CENTER.y);
        		this.graphics.moveTo(0,CENTER.y);
        		this.graphics.lineTo(CENTER.x,CENTER.y);  
        }
        
        private function getPosByMatrixCoord(xx:int,yy:int):Point
        {
        		var mx:int=CENTER.x;
        		var my:int=CENTER.y;
        		var px:Number=xx*RECT_SIZE+RECT_SIZE/2;
			var py:Number=yy*RECT_SIZE+RECT_SIZE/2;
			
        		var pt:Point=new Point();
			var beta:Number=(Math.PI/180)*45;
			var alpha:Number = Math.atan2((px-mx),(py-my));
			var R:Number=Math.sqrt( Math.pow(py-my,2)+Math.pow(px-mx,2) );
			var newAlpha:Number=alpha+beta;
			
			var pxNeu:Number=R*Math.cos(newAlpha);
			var pyNeu:Number=R*Math.sin(newAlpha);
			pt.x=pxNeu+mx;
			pt.y=pyNeu+my;			
			
			
        		return pt;
        	}
    }
}