flash on 2013-11-8

by mutantleg
♥0 | Line 86 | Modified 2013-11-08 21:12:25 | MIT License
play

ActionScript3 source code

/**
 * Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/gWSv
 */

package {
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
      
        public function FlashTest()
        {
            
            var myTri:xTri;
            
            myTri = new xTri();
            myTri.a.setValue(230,50);
            myTri.b.setValue(50,40);
            myTri.c.setValue(80,220);
            
            drawTri(myTri);
            
            var tempa:xVert  = new xVert();
            var tempb:xVert = new xVert();
            var tempc:xVert = new xVert();

            var origa:xVert = myTri.a;
            var origb:xVert = myTri.b;
            var origc:xVert = myTri.c;

            var dx:Number;
            var dy:Number;
            var mag:Number;
            var ax:Number;            var ay:Number;
            var bx:Number;            var by:Number;
            var cx:Number;            var cy:Number;
            
            dx = (origa.cx + origb.cx + origc.cx) * 0.333;
            dy = (origa.cy + origb.cy + origc.cy) * 0.333;

            var am:Number;
            am = 20;
            
            ax = origa.cx - dx;    ay = origa.cy - dy;
            mag = Math.sqrt(ax*ax+ay*ay);
            if (mag == 0) {mag = 0.0001;}
            ax /= mag;    ay /= mag;
            
            bx = origb.cx - dx;    by = origb.cy - dy;
            mag = Math.sqrt(bx*bx+by*by);
            if (mag == 0) {mag = 0.0001;}
            bx /= mag;    by /= mag;
            
            cx = origc.cx - dx;    cy = origc.cy - dy;
            mag = Math.sqrt(cx*cx+cy*cy);
            if (mag == 0) {mag = 0.0001;}
            cx /= mag;    cy /= mag;

            
            tempa.cx = origa.cx + ax*am;
            tempa.cy = origa.cy + ay*am;
            tempb.cx = origb.cx + bx*am;
            tempb.cy = origb.cy + by*am;
            tempc.cx = origc.cx + cx*am;
            tempc.cy = origc.cy + cy*am;
            
            graphics.moveTo(origa.cx,origa.cy);
            graphics.lineTo(tempa.cx,tempa.cy);
            graphics.moveTo(origb.cx,origb.cy);
            graphics.lineTo(tempb.cx,tempb.cy);
            graphics.moveTo(origc.cx,origc.cy);
            graphics.lineTo(tempc.cx,tempc.cy);
            
            
            myTri.copyVerts(tempa,tempb,tempc);
            drawTri(myTri);
            
                        

            /*
            
            tempa.cx = myTri.a.cx +(myTri.b.cx - myTri.a.cx) *0.5;
            tempa.cy = myTri.a.cy +(myTri.b.cy - myTri.a.cy) *0.5;
            graphics.drawCircle(tempa.cx, tempa.cy, 4);
            
            tempb.cx = myTri.b.cx +(myTri.c.cx - myTri.b.cx) *0.5;
            tempb.cy = myTri.b.cy +(myTri.c.cy - myTri.b.cy) *0.5;
            graphics.drawCircle(tempb.cx, tempb.cy, 4);
            
            tempc.cx = myTri.c.cx +(myTri.a.cx - myTri.c.cx) *0.5;
            tempc.cy = myTri.c.cy +(myTri.a.cy - myTri.c.cy) *0.5;
            graphics.drawCircle(tempc.cx, tempc.cy, 4);
            
            var t1:xTri = new xTri();
            var t2:xTri = new xTri();
            var t3:xTri = new xTri();
            var t4:xTri = new xTri();
            
            var origa:xVert = myTri.a;
            var origb:xVert = myTri.b;
            var origc:xVert = myTri.c;
            
            
            t1.copyVerts(tempa,tempb,tempc);  drawTri(t1, 0.4);
            t2.copyVerts(origa,tempa,tempc);  drawTri(t2, 0.6);
            t3.copyVerts(tempa,origb,tempb);  drawTri(t3, 0.4);
            t4.copyVerts(tempb,origc,tempc);  drawTri(t4, 0.4);
            */
        }//ctor
        
        
        
        
        public function drawTri(t:xTri, aa:Number=0.5):void
        {
            var c:uint;
            var w:Number;
            w = (t.b.cx - t.a.cx) * (t.c.cy - t.a.cy) - (t.c.cx - t.a.cx) * (t.b.cy - t.a.cy);
            if (w > 0) { c = 0xFF0000; } //backface
            else { c = 0x0000FF;}
            
            graphics.lineStyle(2,0,0.5);
            graphics.beginFill(c, aa);
             graphics.moveTo(t.a.cx, t.a.cy);
             graphics.lineTo(t.b.cx, t.b.cy);
             graphics.lineTo(t.c.cx, t.c.cy);
             graphics.lineTo(t.a.cx, t.a.cy);
             
            graphics.endFill();
        }//drawtri
        
        
    }//classend
}

internal class xVert
{
 public var cx:Number = 0;
 public var cy:Number = 0;   
 public function setValue(x:Number, y:Number):void { cx =x; cy= y;}
 public function copyVert(a:xVert):void { cx = a.cx; cy= a.cy;}
}

internal class xTri
{
 public var a:xVert = new xVert();
 public var b:xVert = new xVert();
 public var c:xVert = new xVert();   
 
 public function copyVerts(ca:xVert, cb:xVert, cc:xVert):void
 { a.copyVert(ca); b.copyVert(cb); c.copyVert(cc);  } 
 
}