|
@@ -6,6 +6,8 @@ import hxd.Math;
|
|
**/
|
|
**/
|
|
class Matrix {
|
|
class Matrix {
|
|
|
|
|
|
|
|
+ static var tmp = new Matrix();
|
|
|
|
+
|
|
public var a : Float;
|
|
public var a : Float;
|
|
public var b : Float;
|
|
public var b : Float;
|
|
public var c : Float;
|
|
public var c : Float;
|
|
@@ -22,6 +24,28 @@ class Matrix {
|
|
x = 0; y = 0;
|
|
x = 0; y = 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public inline function initTranslate(x, y) {
|
|
|
|
+ a = 1; b = 0; c = 0; d = 1;
|
|
|
|
+ this.x = x;
|
|
|
|
+ this.y = y;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public inline function initScale(sx, sy) {
|
|
|
|
+ a = sx; b = 0; c = 0; d = sy;
|
|
|
|
+ x = 0; y = 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public inline function initRotate(angle) {
|
|
|
|
+ var cos = Math.cos(angle);
|
|
|
|
+ var sin = Math.sin(angle);
|
|
|
|
+ a = cos;
|
|
|
|
+ b = sin;
|
|
|
|
+ c = -sin;
|
|
|
|
+ d = cos;
|
|
|
|
+ x = 0;
|
|
|
|
+ y = 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
public function invert() {
|
|
public function invert() {
|
|
inverse(this);
|
|
inverse(this);
|
|
}
|
|
}
|
|
@@ -77,6 +101,11 @@ class Matrix {
|
|
y *= sy;
|
|
y *= sy;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public function rotate(angle: Float) {
|
|
|
|
+ tmp.initRotate(angle);
|
|
|
|
+ multiply(this, tmp);
|
|
|
|
+ }
|
|
|
|
+
|
|
public function toString() {
|
|
public function toString() {
|
|
return "MAT=[\n" +
|
|
return "MAT=[\n" +
|
|
" [ " + Math.fmt(a) + ", " + Math.fmt(b) + " ]\n" +
|
|
" [ " + Math.fmt(a) + ", " + Math.fmt(b) + " ]\n" +
|