forked from: TransformUtil実験
forked from TransformUtil実験 (diff: 160)
ActionScript3 source code
/**
* Copyright Akiyah ( http://wonderfl.net/user/Akiyah )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/r3PI
*/
// forked from Akiyah's TransformUtil実験
package {
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
import flash.text.*;
import flash.utils.*;
public class FlashTest extends Sprite {
Security.loadPolicyFile("http://assets.wonderfl.net/crossdomain.xml");
private var loader:Loader = new Loader();
public function FlashTest() {
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadDone);
loader.load(new URLRequest("http://assets.wonderfl.net/images/related_images/d/dd/ddba/ddba7040b86bdba34f301587d2353904b04148ca"));
}
private function loadDone(e:Event):void {
var bmd:BitmapData= new BitmapData(loader.width,loader.height);
bmd.draw(loader);
var a:Triangle;
var b:Triangle;
a = new Triangle(new Point(100, 100), new Point(200, 100), new Point(100, 200));
b = new Triangle(new Point(100 - 50, 100), new Point(200 + 100, 100), new Point(100 + 20, 200 + 100));
//TransformUtil.drawBitmapTriangle(this.graphics, bmd, a, b);
a.draw(this.graphics, bmd, b);
a = new Triangle(new Point(200, 200), new Point(200, 100), new Point(100, 200));
b = new Triangle(new Point(200 + 150, 200), new Point(200 + 100, 100), new Point(100 + 20, 200 + 100));
//TransformUtil.drawBitmapTriangle(this.graphics, bmd, a, b);
a.draw(this.graphics, bmd, b);
}
}
}
import flash.geom.Point;
import flash.geom.Matrix;
import flash.display.Graphics;
import flash.display.BitmapData;
class Triangle {
public var p0:Point;
public var p1:Point;
public var p2:Point;
function Triangle(p0:Point, p1:Point, p2:Point) {
this.p0 = p0;
this.p1 = p1;
this.p2 = p2;
}
public function matrix():Matrix {
return new Matrix(
p1.x - p0.x, p1.y - p0.y,
p2.x - p0.x, p2.y - p0.y);
}
public function transformMatrix(b:Triangle):Matrix {
var ma : Matrix = matrix();
ma.invert();
var mb : Matrix = b.matrix();
var m : Matrix = new Matrix();
m.translate(-p0.x, -p0.y);
m.concat(ma);
m.concat(mb);
m.translate(b.p0.x, b.p0.y);
return m;
}
public function draw(g:Graphics, bitmapData:BitmapData, b:Triangle):void {
var m:Matrix = transformMatrix(b);
g.beginBitmapFill(bitmapData, m);
g.moveTo(b.p0.x, b.p0.y);
g.lineTo(b.p1.x, b.p1.y);
g.lineTo(b.p2.x, b.p2.y);
g.lineTo(b.p0.x, b.p0.y);
g.endFill();
}
}