flash on 2013-11-8
♥0 |
Line 86 |
Modified 2013-11-08 21:12:25 |
MIT License
archived:2017-03-30 11:55:13
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); }
}