UNPKG

openfl

Version:

A fast, productive library for 2D cross-platform development.

917 lines (902 loc) 42.6 kB
// Class: openfl.geom.Matrix3D var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $hxEnums = require("./../../hxEnums_stub").default; var $import = require("./../../import_stub").default; function openfl__$Vector_Vector_$Impl_$() {return require("./../../openfl/_Vector/Vector_Impl_");} function openfl_VectorData() {return require("./../../openfl/VectorData");} function openfl_geom_Vector3D() {return require("./../../openfl/geom/Vector3D");} // Constructor var Matrix3D = function(v) { if(v != null && v.get_length() == 16) { this.rawData = (openfl_VectorData().default).ofArray((Array.prototype.concat.call)(v,null)); } else { this.rawData = (openfl__$Vector_Vector_$Impl_$().default)._new(null,null,[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]); } } // Meta Matrix3D.__name__ = "openfl.geom.Matrix3D"; Matrix3D.__isInterface__ = false; Matrix3D.prototype = { append: function(lhs) { var m111 = this.rawData[0]; var m121 = this.rawData[4]; var m131 = this.rawData[8]; var m141 = this.rawData[12]; var m112 = this.rawData[1]; var m122 = this.rawData[5]; var m132 = this.rawData[9]; var m142 = this.rawData[13]; var m113 = this.rawData[2]; var m123 = this.rawData[6]; var m133 = this.rawData[10]; var m143 = this.rawData[14]; var m114 = this.rawData[3]; var m124 = this.rawData[7]; var m134 = this.rawData[11]; var m144 = this.rawData[15]; var m211 = lhs.rawData[0]; var m221 = lhs.rawData[4]; var m231 = lhs.rawData[8]; var m241 = lhs.rawData[12]; var m212 = lhs.rawData[1]; var m222 = lhs.rawData[5]; var m232 = lhs.rawData[9]; var m242 = lhs.rawData[13]; var m213 = lhs.rawData[2]; var m223 = lhs.rawData[6]; var m233 = lhs.rawData[10]; var m243 = lhs.rawData[14]; var m214 = lhs.rawData[3]; var m224 = lhs.rawData[7]; var m234 = lhs.rawData[11]; var m244 = lhs.rawData[15]; (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,0,m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,1,m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,2,m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,3,m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,4,m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,5,m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,6,m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,7,m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,8,m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,9,m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,10,m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,11,m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,12,m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,13,m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,14,m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,15,m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244); }, appendRotation: function(degrees,axis,pivotPoint) { var tz = 0; var ty = tz; var tx = ty; if(pivotPoint != null) { tx = pivotPoint.x; ty = pivotPoint.y; tz = pivotPoint.z; } var radian = degrees * Math.PI / 180; var cos = Math.cos(radian); var sin = Math.sin(radian); var x = axis.x; var y = axis.y; var z = axis.z; var x2 = x * x; var y2 = y * y; var z2 = z * z; var ls = x2 + y2 + z2; if(ls != 0) { var l = Math.sqrt(ls); x /= l; y /= l; z /= l; x2 /= ls; y2 /= ls; z2 /= ls; } var ccos = 1 - cos; var m = new Matrix3D(); var d = m.rawData; (openfl__$Vector_Vector_$Impl_$().default).set(d,0,x2 + (y2 + z2) * cos); (openfl__$Vector_Vector_$Impl_$().default).set(d,1,x * y * ccos + z * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,2,x * z * ccos - y * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,4,x * y * ccos - z * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,5,y2 + (x2 + z2) * cos); (openfl__$Vector_Vector_$Impl_$().default).set(d,6,y * z * ccos + x * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,8,x * z * ccos + y * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,9,y * z * ccos - x * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,10,z2 + (x2 + y2) * cos); (openfl__$Vector_Vector_$Impl_$().default).set(d,12,(tx * (y2 + z2) - x * (ty * y + tz * z)) * ccos + (ty * z - tz * y) * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,13,(ty * (x2 + z2) - y * (tx * x + tz * z)) * ccos + (tz * x - tx * z) * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,14,(tz * (x2 + y2) - z * (tx * x + ty * y)) * ccos + (tx * y - ty * x) * sin); this.append(m); }, appendScale: function(xScale,yScale,zScale) { this.append(new Matrix3D((openfl__$Vector_Vector_$Impl_$().default)._new(null,null,[xScale,0.0,0.0,0.0,0.0,yScale,0.0,0.0,0.0,0.0,zScale,0.0,0.0,0.0,0.0,1.0]))); }, appendTranslation: function(x,y,z) { var _g = this.rawData; (openfl__$Vector_Vector_$Impl_$().default).set(_g,12,_g[12] + x); var _g1 = this.rawData; (openfl__$Vector_Vector_$Impl_$().default).set(_g1,13,_g1[13] + y); var _g2 = this.rawData; (openfl__$Vector_Vector_$Impl_$().default).set(_g2,14,_g2[14] + z); }, clone: function() { return new Matrix3D((openfl_VectorData().default).ofArray(this.rawData)); }, copyColumnFrom: function(column,vector3D) { switch(column) { case 0: (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,0,vector3D.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,1,vector3D.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,2,vector3D.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,3,vector3D.w); break; case 1: (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,4,vector3D.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,5,vector3D.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,6,vector3D.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,7,vector3D.w); break; case 2: (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,8,vector3D.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,9,vector3D.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,10,vector3D.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,11,vector3D.w); break; case 3: (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,12,vector3D.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,13,vector3D.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,14,vector3D.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,15,vector3D.w); break; default: } }, copyColumnTo: function(column,vector3D) { switch(column) { case 0: vector3D.x = this.rawData[0]; vector3D.y = this.rawData[1]; vector3D.z = this.rawData[2]; vector3D.w = this.rawData[3]; break; case 1: vector3D.x = this.rawData[4]; vector3D.y = this.rawData[5]; vector3D.z = this.rawData[6]; vector3D.w = this.rawData[7]; break; case 2: vector3D.x = this.rawData[8]; vector3D.y = this.rawData[9]; vector3D.z = this.rawData[10]; vector3D.w = this.rawData[11]; break; case 3: vector3D.x = this.rawData[12]; vector3D.y = this.rawData[13]; vector3D.z = this.rawData[14]; vector3D.w = this.rawData[15]; break; default: } }, copyFrom: function(other) { this.rawData = (openfl_VectorData().default).ofArray(other.rawData); }, copyRawDataFrom: function(vector,index,transpose) { if(transpose == null) { transpose = false; } if(index == null) { index = 0; } if(transpose) { this.transpose(); } var length = vector.get_length() - index; var _g = 0; var _g1 = length; while(_g < _g1) { var i = _g++; (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,i,vector[i + index]); } if(transpose) { this.transpose(); } }, copyRawDataTo: function(vector,index,transpose) { if(transpose == null) { transpose = false; } if(index == null) { index = 0; } if(transpose) { this.transpose(); } var _g = 0; var _g1 = this.rawData.get_length(); while(_g < _g1) { var i = _g++; (openfl__$Vector_Vector_$Impl_$().default).set(vector,i + index,this.rawData[i]); } if(transpose) { this.transpose(); } }, copyRowFrom: function(row,vector3D) { switch(row) { case 0: (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,0,vector3D.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,4,vector3D.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,8,vector3D.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,12,vector3D.w); break; case 1: (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,1,vector3D.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,5,vector3D.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,9,vector3D.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,13,vector3D.w); break; case 2: (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,2,vector3D.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,6,vector3D.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,10,vector3D.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,14,vector3D.w); break; case 3: (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,3,vector3D.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,7,vector3D.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,11,vector3D.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,15,vector3D.w); break; default: } }, copyRowTo: function(row,vector3D) { switch(row) { case 0: vector3D.x = this.rawData[0]; vector3D.y = this.rawData[4]; vector3D.z = this.rawData[8]; vector3D.w = this.rawData[12]; break; case 1: vector3D.x = this.rawData[1]; vector3D.y = this.rawData[5]; vector3D.z = this.rawData[9]; vector3D.w = this.rawData[13]; break; case 2: vector3D.x = this.rawData[2]; vector3D.y = this.rawData[6]; vector3D.z = this.rawData[10]; vector3D.w = this.rawData[14]; break; case 3: vector3D.x = this.rawData[3]; vector3D.y = this.rawData[7]; vector3D.z = this.rawData[11]; vector3D.w = this.rawData[15]; break; default: } }, copyToMatrix3D: function(other) { other.rawData = (openfl_VectorData().default).ofArray(this.rawData); }, decompose: function(orientationStyle) { if(orientationStyle == null) { orientationStyle = "eulerAngles"; } var vec = (openfl__$Vector_Vector_$Impl_$().default)._new(); var m = this.clone(); var mr = (openfl_VectorData().default).ofArray(m.rawData); var pos = new (openfl_geom_Vector3D().default)(mr[12],mr[13],mr[14]); (openfl__$Vector_Vector_$Impl_$().default).set(mr,12,0); (openfl__$Vector_Vector_$Impl_$().default).set(mr,13,0); (openfl__$Vector_Vector_$Impl_$().default).set(mr,14,0); var scale = new (openfl_geom_Vector3D().default)(); scale.x = Math.sqrt(mr[0] * mr[0] + mr[1] * mr[1] + mr[2] * mr[2]); scale.y = Math.sqrt(mr[4] * mr[4] + mr[5] * mr[5] + mr[6] * mr[6]); scale.z = Math.sqrt(mr[8] * mr[8] + mr[9] * mr[9] + mr[10] * mr[10]); if(mr[0] * (mr[5] * mr[10] - mr[6] * mr[9]) - mr[1] * (mr[4] * mr[10] - mr[6] * mr[8]) + mr[2] * (mr[4] * mr[9] - mr[5] * mr[8]) < 0) { scale.z = -scale.z; } var _g = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g,0,_g[0] / scale.x); var _g1 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g1,1,_g1[1] / scale.x); var _g2 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g2,2,_g2[2] / scale.x); var _g3 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g3,4,_g3[4] / scale.y); var _g4 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g4,5,_g4[5] / scale.y); var _g5 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g5,6,_g5[6] / scale.y); var _g6 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g6,8,_g6[8] / scale.z); var _g7 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g7,9,_g7[9] / scale.z); var _g8 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g8,10,_g8[10] / scale.z); var rot = new (openfl_geom_Vector3D().default)(); switch(orientationStyle) { case "axisAngle": rot.w = Math.acos((mr[0] + mr[5] + mr[10] - 1) / 2); var len = Math.sqrt((mr[6] - mr[9]) * (mr[6] - mr[9]) + (mr[8] - mr[2]) * (mr[8] - mr[2]) + (mr[1] - mr[4]) * (mr[1] - mr[4])); if(len != 0) { rot.x = (mr[6] - mr[9]) / len; rot.y = (mr[8] - mr[2]) / len; rot.z = (mr[1] - mr[4]) / len; } else { rot.x = rot.y = rot.z = 0; } break; case "eulerAngles": rot.y = Math.asin(-mr[2]); if(mr[2] != 1 && mr[2] != -1) { rot.x = Math.atan2(mr[6],mr[10]); rot.z = Math.atan2(mr[1],mr[0]); } else { rot.z = 0; rot.x = Math.atan2(mr[4],mr[5]); } break; case "quaternion": var tr = mr[0] + mr[5] + mr[10]; if(tr > 0) { rot.w = Math.sqrt(1 + tr) / 2; rot.x = (mr[6] - mr[9]) / (4 * rot.w); rot.y = (mr[8] - mr[2]) / (4 * rot.w); rot.z = (mr[1] - mr[4]) / (4 * rot.w); } else if(mr[0] > mr[5] && mr[0] > mr[10]) { rot.x = Math.sqrt(1 + mr[0] - mr[5] - mr[10]) / 2; rot.w = (mr[6] - mr[9]) / (4 * rot.x); rot.y = (mr[1] + mr[4]) / (4 * rot.x); rot.z = (mr[8] + mr[2]) / (4 * rot.x); } else if(mr[5] > mr[10]) { rot.y = Math.sqrt(1 + mr[5] - mr[0] - mr[10]) / 2; rot.x = (mr[1] + mr[4]) / (4 * rot.y); rot.w = (mr[8] - mr[2]) / (4 * rot.y); rot.z = (mr[6] + mr[9]) / (4 * rot.y); } else { rot.z = Math.sqrt(1 + mr[10] - mr[0] - mr[5]) / 2; rot.x = (mr[8] + mr[2]) / (4 * rot.z); rot.y = (mr[6] + mr[9]) / (4 * rot.z); rot.w = (mr[1] - mr[4]) / (4 * rot.z); } break; } (openfl__$Vector_Vector_$Impl_$().default).push(vec,pos); (openfl__$Vector_Vector_$Impl_$().default).push(vec,rot); (openfl__$Vector_Vector_$Impl_$().default).push(vec,scale); return vec; }, decomposeToOutput: function(orientationStyle,output) { if(orientationStyle == null) { orientationStyle = "eulerAngles"; } if(output == null) { output = (openfl__$Vector_Vector_$Impl_$().default)._new(); } var m = this.clone(); var mr = (openfl_VectorData().default).ofArray(m.rawData); var pos = output[0]; if(pos == null) { pos = new (openfl_geom_Vector3D().default)(mr[12],mr[13],mr[14]); } else { pos.setTo(mr[12],mr[13],mr[14]); } (openfl__$Vector_Vector_$Impl_$().default).set(mr,12,0); (openfl__$Vector_Vector_$Impl_$().default).set(mr,13,0); (openfl__$Vector_Vector_$Impl_$().default).set(mr,14,0); var scale = output[1]; if(scale == null) { scale = new (openfl_geom_Vector3D().default)(); } scale.x = Math.sqrt(mr[0] * mr[0] + mr[1] * mr[1] + mr[2] * mr[2]); scale.y = Math.sqrt(mr[4] * mr[4] + mr[5] * mr[5] + mr[6] * mr[6]); scale.z = Math.sqrt(mr[8] * mr[8] + mr[9] * mr[9] + mr[10] * mr[10]); if(mr[0] * (mr[5] * mr[10] - mr[6] * mr[9]) - mr[1] * (mr[4] * mr[10] - mr[6] * mr[8]) + mr[2] * (mr[4] * mr[9] - mr[5] * mr[8]) < 0) { scale.z = -scale.z; } var _g = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g,0,_g[0] / scale.x); var _g1 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g1,1,_g1[1] / scale.x); var _g2 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g2,2,_g2[2] / scale.x); var _g3 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g3,4,_g3[4] / scale.y); var _g4 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g4,5,_g4[5] / scale.y); var _g5 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g5,6,_g5[6] / scale.y); var _g6 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g6,8,_g6[8] / scale.z); var _g7 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g7,9,_g7[9] / scale.z); var _g8 = mr; (openfl__$Vector_Vector_$Impl_$().default).set(_g8,10,_g8[10] / scale.z); var rot = output[2]; if(rot == null) { rot = new (openfl_geom_Vector3D().default)(); } switch(orientationStyle) { case "axisAngle": rot.w = Math.acos((mr[0] + mr[5] + mr[10] - 1) / 2); var len = Math.sqrt((mr[6] - mr[9]) * (mr[6] - mr[9]) + (mr[8] - mr[2]) * (mr[8] - mr[2]) + (mr[1] - mr[4]) * (mr[1] - mr[4])); if(len != 0) { rot.x = (mr[6] - mr[9]) / len; rot.y = (mr[8] - mr[2]) / len; rot.z = (mr[1] - mr[4]) / len; } else { rot.x = rot.y = rot.z = 0; } break; case "eulerAngles": rot.y = Math.asin(-mr[2]); if(mr[2] != 1 && mr[2] != -1) { rot.x = Math.atan2(mr[6],mr[10]); rot.z = Math.atan2(mr[1],mr[0]); } else { rot.z = 0; rot.x = Math.atan2(mr[4],mr[5]); } break; case "quaternion": var tr = mr[0] + mr[5] + mr[10]; if(tr > 0) { rot.w = Math.sqrt(1 + tr) / 2; rot.x = (mr[6] - mr[9]) / (4 * rot.w); rot.y = (mr[8] - mr[2]) / (4 * rot.w); rot.z = (mr[1] - mr[4]) / (4 * rot.w); } else if(mr[0] > mr[5] && mr[0] > mr[10]) { rot.x = Math.sqrt(1 + mr[0] - mr[5] - mr[10]) / 2; rot.w = (mr[6] - mr[9]) / (4 * rot.x); rot.y = (mr[1] + mr[4]) / (4 * rot.x); rot.z = (mr[8] + mr[2]) / (4 * rot.x); } else if(mr[5] > mr[10]) { rot.y = Math.sqrt(1 + mr[5] - mr[0] - mr[10]) / 2; rot.x = (mr[1] + mr[4]) / (4 * rot.y); rot.w = (mr[8] - mr[2]) / (4 * rot.y); rot.z = (mr[6] + mr[9]) / (4 * rot.y); } else { rot.z = Math.sqrt(1 + mr[10] - mr[0] - mr[5]) / 2; rot.x = (mr[8] + mr[2]) / (4 * rot.z); rot.y = (mr[6] + mr[9]) / (4 * rot.z); rot.w = (mr[1] - mr[4]) / (4 * rot.z); } break; } (openfl__$Vector_Vector_$Impl_$().default).set(output,0,pos); (openfl__$Vector_Vector_$Impl_$().default).set(output,1,rot); (openfl__$Vector_Vector_$Impl_$().default).set(output,2,scale); return output; }, deltaTransformVector: function(v) { var x = v.x; var y = v.y; var z = v.z; return new (openfl_geom_Vector3D().default)(x * this.rawData[0] + y * this.rawData[4] + z * this.rawData[8],x * this.rawData[1] + y * this.rawData[5] + z * this.rawData[9],x * this.rawData[2] + y * this.rawData[6] + z * this.rawData[10],x * this.rawData[3] + y * this.rawData[7] + z * this.rawData[11]); }, deltaTransformVectorToOutput: function(v,output) { var x = v.x; var y = v.y; var z = v.z; if(output != null) { output.setTo(x * this.rawData[0] + y * this.rawData[4] + z * this.rawData[8],x * this.rawData[1] + y * this.rawData[5] + z * this.rawData[9],x * this.rawData[2] + y * this.rawData[6] + z * this.rawData[10]); output.w = x * this.rawData[3] + y * this.rawData[7] + z * this.rawData[11]; return output; } return new (openfl_geom_Vector3D().default)(x * this.rawData[0] + y * this.rawData[4] + z * this.rawData[8],x * this.rawData[1] + y * this.rawData[5] + z * this.rawData[9],x * this.rawData[2] + y * this.rawData[6] + z * this.rawData[10],x * this.rawData[3] + y * this.rawData[7] + z * this.rawData[11]); }, identity: function() { this.rawData = (openfl__$Vector_Vector_$Impl_$().default)._new(null,null,[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0]); }, interpolateTo: function(toMat,percent) { var _g = 0; while(_g < 16) { var i = _g++; (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,i,this.rawData[i] + (toMat.rawData[i] - this.rawData[i]) * percent); } }, invert: function() { var d = this.get_determinant(); var invertable = Math.abs(d) > 0.00000000001; if(invertable) { d = 1 / d; var m11 = this.rawData[0]; var m21 = this.rawData[4]; var m31 = this.rawData[8]; var m41 = this.rawData[12]; var m12 = this.rawData[1]; var m22 = this.rawData[5]; var m32 = this.rawData[9]; var m42 = this.rawData[13]; var m13 = this.rawData[2]; var m23 = this.rawData[6]; var m33 = this.rawData[10]; var m43 = this.rawData[14]; var m14 = this.rawData[3]; var m24 = this.rawData[7]; var m34 = this.rawData[11]; var m44 = this.rawData[15]; (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,0,d * (m22 * (m33 * m44 - m43 * m34) - m32 * (m23 * m44 - m43 * m24) + m42 * (m23 * m34 - m33 * m24))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,1,-d * (m12 * (m33 * m44 - m43 * m34) - m32 * (m13 * m44 - m43 * m14) + m42 * (m13 * m34 - m33 * m14))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,2,d * (m12 * (m23 * m44 - m43 * m24) - m22 * (m13 * m44 - m43 * m14) + m42 * (m13 * m24 - m23 * m14))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,3,-d * (m12 * (m23 * m34 - m33 * m24) - m22 * (m13 * m34 - m33 * m14) + m32 * (m13 * m24 - m23 * m14))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,4,-d * (m21 * (m33 * m44 - m43 * m34) - m31 * (m23 * m44 - m43 * m24) + m41 * (m23 * m34 - m33 * m24))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,5,d * (m11 * (m33 * m44 - m43 * m34) - m31 * (m13 * m44 - m43 * m14) + m41 * (m13 * m34 - m33 * m14))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,6,-d * (m11 * (m23 * m44 - m43 * m24) - m21 * (m13 * m44 - m43 * m14) + m41 * (m13 * m24 - m23 * m14))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,7,d * (m11 * (m23 * m34 - m33 * m24) - m21 * (m13 * m34 - m33 * m14) + m31 * (m13 * m24 - m23 * m14))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,8,d * (m21 * (m32 * m44 - m42 * m34) - m31 * (m22 * m44 - m42 * m24) + m41 * (m22 * m34 - m32 * m24))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,9,-d * (m11 * (m32 * m44 - m42 * m34) - m31 * (m12 * m44 - m42 * m14) + m41 * (m12 * m34 - m32 * m14))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,10,d * (m11 * (m22 * m44 - m42 * m24) - m21 * (m12 * m44 - m42 * m14) + m41 * (m12 * m24 - m22 * m14))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,11,-d * (m11 * (m22 * m34 - m32 * m24) - m21 * (m12 * m34 - m32 * m14) + m31 * (m12 * m24 - m22 * m14))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,12,-d * (m21 * (m32 * m43 - m42 * m33) - m31 * (m22 * m43 - m42 * m23) + m41 * (m22 * m33 - m32 * m23))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,13,d * (m11 * (m32 * m43 - m42 * m33) - m31 * (m12 * m43 - m42 * m13) + m41 * (m12 * m33 - m32 * m13))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,14,-d * (m11 * (m22 * m43 - m42 * m23) - m21 * (m12 * m43 - m42 * m13) + m41 * (m12 * m23 - m22 * m13))); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,15,d * (m11 * (m22 * m33 - m32 * m23) - m21 * (m12 * m33 - m32 * m13) + m31 * (m12 * m23 - m22 * m13))); } return invertable; }, pointAt: function(pos,at,up) { if(at == null) { at = new (openfl_geom_Vector3D().default)(0,0,-1); } if(up == null) { up = new (openfl_geom_Vector3D().default)(0,-1,0); } var dir = at.subtract(pos); var vup = up.clone(); dir.normalize(); vup.normalize(); var dir2 = dir.clone(); dir2.scaleBy(vup.dotProduct(dir)); vup = vup.subtract(dir2); if(vup.get_length() > 0) { vup.normalize(); } else if(dir.x != 0) { vup = new (openfl_geom_Vector3D().default)(-dir.y,dir.x,0); } else { vup = new (openfl_geom_Vector3D().default)(1,0,0); } var right = vup.crossProduct(dir); right.normalize(); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,0,right.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,4,right.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,8,right.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,12,0.0); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,1,vup.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,5,vup.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,9,vup.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,13,0.0); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,2,dir.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,6,dir.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,10,dir.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,14,0.0); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,3,pos.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,7,pos.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,11,pos.z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,15,1.0); }, prepend: function(rhs) { var m111 = rhs.rawData[0]; var m121 = rhs.rawData[4]; var m131 = rhs.rawData[8]; var m141 = rhs.rawData[12]; var m112 = rhs.rawData[1]; var m122 = rhs.rawData[5]; var m132 = rhs.rawData[9]; var m142 = rhs.rawData[13]; var m113 = rhs.rawData[2]; var m123 = rhs.rawData[6]; var m133 = rhs.rawData[10]; var m143 = rhs.rawData[14]; var m114 = rhs.rawData[3]; var m124 = rhs.rawData[7]; var m134 = rhs.rawData[11]; var m144 = rhs.rawData[15]; var m211 = this.rawData[0]; var m221 = this.rawData[4]; var m231 = this.rawData[8]; var m241 = this.rawData[12]; var m212 = this.rawData[1]; var m222 = this.rawData[5]; var m232 = this.rawData[9]; var m242 = this.rawData[13]; var m213 = this.rawData[2]; var m223 = this.rawData[6]; var m233 = this.rawData[10]; var m243 = this.rawData[14]; var m214 = this.rawData[3]; var m224 = this.rawData[7]; var m234 = this.rawData[11]; var m244 = this.rawData[15]; (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,0,m111 * m211 + m112 * m221 + m113 * m231 + m114 * m241); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,1,m111 * m212 + m112 * m222 + m113 * m232 + m114 * m242); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,2,m111 * m213 + m112 * m223 + m113 * m233 + m114 * m243); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,3,m111 * m214 + m112 * m224 + m113 * m234 + m114 * m244); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,4,m121 * m211 + m122 * m221 + m123 * m231 + m124 * m241); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,5,m121 * m212 + m122 * m222 + m123 * m232 + m124 * m242); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,6,m121 * m213 + m122 * m223 + m123 * m233 + m124 * m243); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,7,m121 * m214 + m122 * m224 + m123 * m234 + m124 * m244); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,8,m131 * m211 + m132 * m221 + m133 * m231 + m134 * m241); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,9,m131 * m212 + m132 * m222 + m133 * m232 + m134 * m242); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,10,m131 * m213 + m132 * m223 + m133 * m233 + m134 * m243); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,11,m131 * m214 + m132 * m224 + m133 * m234 + m134 * m244); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,12,m141 * m211 + m142 * m221 + m143 * m231 + m144 * m241); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,13,m141 * m212 + m142 * m222 + m143 * m232 + m144 * m242); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,14,m141 * m213 + m142 * m223 + m143 * m233 + m144 * m243); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,15,m141 * m214 + m142 * m224 + m143 * m234 + m144 * m244); }, prependRotation: function(degrees,axis,pivotPoint) { var tz = 0; var ty = tz; var tx = ty; if(pivotPoint != null) { tx = pivotPoint.x; ty = pivotPoint.y; tz = pivotPoint.z; } var radian = degrees * Math.PI / 180; var cos = Math.cos(radian); var sin = Math.sin(radian); var x = axis.x; var y = axis.y; var z = axis.z; var x2 = x * x; var y2 = y * y; var z2 = z * z; var ls = x2 + y2 + z2; if(ls != 0) { var l = Math.sqrt(ls); x /= l; y /= l; z /= l; x2 /= ls; y2 /= ls; z2 /= ls; } var ccos = 1 - cos; var m = new Matrix3D(); var d = m.rawData; (openfl__$Vector_Vector_$Impl_$().default).set(d,0,x2 + (y2 + z2) * cos); (openfl__$Vector_Vector_$Impl_$().default).set(d,1,x * y * ccos + z * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,2,x * z * ccos - y * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,4,x * y * ccos - z * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,5,y2 + (x2 + z2) * cos); (openfl__$Vector_Vector_$Impl_$().default).set(d,6,y * z * ccos + x * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,8,x * z * ccos + y * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,9,y * z * ccos - x * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,10,z2 + (x2 + y2) * cos); (openfl__$Vector_Vector_$Impl_$().default).set(d,12,(tx * (y2 + z2) - x * (ty * y + tz * z)) * ccos + (ty * z - tz * y) * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,13,(ty * (x2 + z2) - y * (tx * x + tz * z)) * ccos + (tz * x - tx * z) * sin); (openfl__$Vector_Vector_$Impl_$().default).set(d,14,(tz * (x2 + y2) - z * (tx * x + ty * y)) * ccos + (tx * y - ty * x) * sin); this.prepend(m); }, prependScale: function(xScale,yScale,zScale) { this.prepend(new Matrix3D((openfl__$Vector_Vector_$Impl_$().default)._new(null,null,[xScale,0.0,0.0,0.0,0.0,yScale,0.0,0.0,0.0,0.0,zScale,0.0,0.0,0.0,0.0,1.0]))); }, prependTranslation: function(x,y,z) { var m = new Matrix3D(); m.set_position(new (openfl_geom_Vector3D().default)(x,y,z)); this.prepend(m); }, recompose: function(components,orientationStyle) { if(orientationStyle == null) { orientationStyle = "eulerAngles"; } if(components.get_length() < 3 || components[2].x == 0 || components[2].y == 0 || components[2].z == 0) { return false; } this.identity(); var scale = []; scale[0] = scale[1] = scale[2] = components[2].x; scale[4] = scale[5] = scale[6] = components[2].y; scale[8] = scale[9] = scale[10] = components[2].z; if(orientationStyle == "eulerAngles") { var cx = Math.cos(components[1].x); var cy = Math.cos(components[1].y); var cz = Math.cos(components[1].z); var sx = Math.sin(components[1].x); var sy = Math.sin(components[1].y); var sz = Math.sin(components[1].z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,0,cy * cz * scale[0]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,1,cy * sz * scale[1]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,2,-sy * scale[2]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,3,0); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,4,(sx * sy * cz - cx * sz) * scale[4]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,5,(sx * sy * sz + cx * cz) * scale[5]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,6,sx * cy * scale[6]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,7,0); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,8,(cx * sy * cz + sx * sz) * scale[8]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,9,(cx * sy * sz - sx * cz) * scale[9]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,10,cx * cy * scale[10]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,11,0); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,12,components[0].x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,13,components[0].y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,14,components[0].z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,15,1); } else { var x = components[1].x; var y = components[1].y; var z = components[1].z; var w = components[1].w; if(orientationStyle == "axisAngle") { x *= Math.sin(w / 2); y *= Math.sin(w / 2); z *= Math.sin(w / 2); w = Math.cos(w / 2); } (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,0,(1 - 2 * y * y - 2 * z * z) * scale[0]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,1,(2 * x * y + 2 * w * z) * scale[1]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,2,(2 * x * z - 2 * w * y) * scale[2]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,3,0); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,4,(2 * x * y - 2 * w * z) * scale[4]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,5,(1 - 2 * x * x - 2 * z * z) * scale[5]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,6,(2 * y * z + 2 * w * x) * scale[6]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,7,0); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,8,(2 * x * z + 2 * w * y) * scale[8]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,9,(2 * y * z - 2 * w * x) * scale[9]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,10,(1 - 2 * x * x - 2 * y * y) * scale[10]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,11,0); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,12,components[0].x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,13,components[0].y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,14,components[0].z); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,15,1); } if(components[2].x == 0) { (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,0,1e-15); } if(components[2].y == 0) { (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,5,1e-15); } if(components[2].z == 0) { (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,10,1e-15); } return !(components[2].x == 0 || components[2].y == 0 || components[2].y == 0); }, transformVector: function(v) { var x = v.x; var y = v.y; var z = v.z; return new (openfl_geom_Vector3D().default)(x * this.rawData[0] + y * this.rawData[4] + z * this.rawData[8] + this.rawData[12],x * this.rawData[1] + y * this.rawData[5] + z * this.rawData[9] + this.rawData[13],x * this.rawData[2] + y * this.rawData[6] + z * this.rawData[10] + this.rawData[14],x * this.rawData[3] + y * this.rawData[7] + z * this.rawData[11] + this.rawData[15]); }, transformVectorToOutput: function(v,output) { var x = v.x; var y = v.y; var z = v.z; if(output != null) { output.setTo(x * this.rawData[0] + y * this.rawData[4] + z * this.rawData[8] + this.rawData[12],x * this.rawData[1] + y * this.rawData[5] + z * this.rawData[9] + this.rawData[13],x * this.rawData[2] + y * this.rawData[6] + z * this.rawData[10] + this.rawData[14]); output.w = x * this.rawData[3] + y * this.rawData[7] + z * this.rawData[11] + this.rawData[15]; return output; } return new (openfl_geom_Vector3D().default)(x * this.rawData[0] + y * this.rawData[4] + z * this.rawData[8] + this.rawData[12],x * this.rawData[1] + y * this.rawData[5] + z * this.rawData[9] + this.rawData[13],x * this.rawData[2] + y * this.rawData[6] + z * this.rawData[10] + this.rawData[14],x * this.rawData[3] + y * this.rawData[7] + z * this.rawData[11] + this.rawData[15]); }, transformVectors: function(vin,vout) { var i = 0; var x; var y; var z; while(i + 3 <= vin.get_length()) { x = vin[i]; y = vin[i + 1]; z = vin[i + 2]; (openfl__$Vector_Vector_$Impl_$().default).set(vout,i,x * this.rawData[0] + y * this.rawData[4] + z * this.rawData[8] + this.rawData[12]); (openfl__$Vector_Vector_$Impl_$().default).set(vout,i + 1,x * this.rawData[1] + y * this.rawData[5] + z * this.rawData[9] + this.rawData[13]); (openfl__$Vector_Vector_$Impl_$().default).set(vout,i + 2,x * this.rawData[2] + y * this.rawData[6] + z * this.rawData[10] + this.rawData[14]); i += 3; } }, transpose: function() { var oRawData = (openfl_VectorData().default).ofArray(this.rawData); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,1,oRawData[4]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,2,oRawData[8]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,3,oRawData[12]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,4,oRawData[1]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,6,oRawData[9]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,7,oRawData[13]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,8,oRawData[2]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,9,oRawData[6]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,11,oRawData[14]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,12,oRawData[3]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,13,oRawData[7]); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,14,oRawData[11]); }, get_determinant: function() { return (this.rawData[0] * this.rawData[5] - this.rawData[4] * this.rawData[1]) * (this.rawData[10] * this.rawData[15] - this.rawData[14] * this.rawData[11]) - (this.rawData[0] * this.rawData[9] - this.rawData[8] * this.rawData[1]) * (this.rawData[6] * this.rawData[15] - this.rawData[14] * this.rawData[7]) + (this.rawData[0] * this.rawData[13] - this.rawData[12] * this.rawData[1]) * (this.rawData[6] * this.rawData[11] - this.rawData[10] * this.rawData[7]) + (this.rawData[4] * this.rawData[9] - this.rawData[8] * this.rawData[5]) * (this.rawData[2] * this.rawData[15] - this.rawData[14] * this.rawData[3]) - (this.rawData[4] * this.rawData[13] - this.rawData[12] * this.rawData[5]) * (this.rawData[2] * this.rawData[11] - this.rawData[10] * this.rawData[3]) + (this.rawData[8] * this.rawData[13] - this.rawData[12] * this.rawData[9]) * (this.rawData[2] * this.rawData[7] - this.rawData[6] * this.rawData[3]); }, get_position: function() { return new (openfl_geom_Vector3D().default)(this.rawData[12],this.rawData[13],this.rawData[14]); }, set_position: function(val) { (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,12,val.x); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,13,val.y); (openfl__$Vector_Vector_$Impl_$().default).set(this.rawData,14,val.z); return val; } }; Matrix3D.prototype.__class__ = Matrix3D.prototype.constructor = $hxClasses["openfl.geom.Matrix3D"] = Matrix3D; // Init Object.defineProperties(Matrix3D.prototype,{ determinant : { get : function () { return this.get_determinant (); }, set : function (v) { return this.set_determinant (v); }}, position : { get : function () { return this.get_position (); }, set : function (v) { return this.set_position (v); }}}); // Statics Matrix3D.create2D = function(x,y,scale,rotation) { if(rotation == null) { rotation = 0; } if(scale == null) { scale = 1; } var theta = rotation * Math.PI / 180.0; var c = Math.cos(theta); var s = Math.sin(theta); return new Matrix3D((openfl__$Vector_Vector_$Impl_$().default)._new(null,null,[c * scale,-s * scale,0,0,s * scale,c * scale,0,0,0,0,1,0,x,y,0,1])); } Matrix3D.createABCD = function(a,b,c,d,tx,ty) { return new Matrix3D((openfl__$Vector_Vector_$Impl_$().default)._new(null,null,[a,b,0,0,c,d,0,0,0,0,1,0,tx,ty,0,1])); } Matrix3D.createOrtho = function(x0,x1,y0,y1,zNear,zFar) { var sx = 1.0 / (x1 - x0); var sy = 1.0 / (y1 - y0); var sz = 1.0 / (zFar - zNear); return new Matrix3D((openfl__$Vector_Vector_$Impl_$().default)._new(null,null,[2.0 * sx,0,0,0,0,2.0 * sy,0,0,0,0,-2.0 * sz,0,-(x0 + x1) * sx,-(y0 + y1) * sy,-(zNear + zFar) * sz,1])); } Matrix3D.interpolate = function(thisMat,toMat,percent) { var m = new Matrix3D(); var _g = 0; while(_g < 16) { var i = _g++; (openfl__$Vector_Vector_$Impl_$().default).set(m.rawData,i,thisMat.rawData[i] + (toMat.rawData[i] - thisMat.rawData[i]) * percent); } return m; } Matrix3D.interpolateToOutput = function(thisMat,toMat,percent,output) { if(output == null) { output = new Matrix3D(); } var _g = 0; while(_g < 16) { var i = _g++; (openfl__$Vector_Vector_$Impl_$().default).set(output.rawData,i,thisMat.rawData[i] + (toMat.rawData[i] - thisMat.rawData[i]) * percent); } return output; } Matrix3D.__getAxisRotation = function(x,y,z,degrees) { var m = new Matrix3D(); var a1 = new (openfl_geom_Vector3D().default)(x,y,z); var rad = -degrees * (Math.PI / 180); var c = Math.cos(rad); var s = Math.sin(rad); var t = 1.0 - c; (openfl__$Vector_Vector_$Impl_$().default).set(m.rawData,0,c + a1.x * a1.x * t); (openfl__$Vector_Vector_$Impl_$().default).set(m.rawData,5,c + a1.y * a1.y * t); (openfl__$Vector_Vector_$Impl_$().default).set(m.rawData,10,c + a1.z * a1.z * t); var tmp1 = a1.x * a1.y * t; var tmp2 = a1.z * s; (openfl__$Vector_Vector_$Impl_$().default).set(m.rawData,4,tmp1 + tmp2); (openfl__$Vector_Vector_$Impl_$().default).set(m.rawData,1,tmp1 - tmp2); tmp1 = a1.x * a1.z * t; tmp2 = a1.y * s; (openfl__$Vector_Vector_$Impl_$().default).set(m.rawData,8,tmp1 - tmp2); (openfl__$Vector_Vector_$Impl_$().default).set(m.rawData,2,tmp1 + tmp2); tmp1 = a1.y * a1.z * t; tmp2 = a1.x * s; (openfl__$Vector_Vector_$Impl_$().default).set(m.rawData,9,tmp1 + tmp2); (openfl__$Vector_Vector_$Impl_$().default).set(m.rawData,6,tmp1 - tmp2); return m; } Matrix3D.__meta__ = { statics : { create2D : { SuppressWarnings : ["checkstyle:FieldDocComment"]}, createABCD : { SuppressWarnings : ["checkstyle:FieldDocComment"]}, createOrtho : { SuppressWarnings : ["checkstyle:FieldDocComment"]}}} // Export exports.default = Matrix3D;