melonjs 14.0.2 → 14.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +10 -0
- package/dist/melonjs.mjs/_virtual/arraymultimap.js +10 -0
- package/dist/melonjs.mjs/_virtual/earcut.js +10 -0
- package/dist/melonjs.mjs/_virtual/howler.js +10 -0
- package/dist/melonjs.mjs/_virtual/index.js +10 -0
- package/dist/melonjs.mjs/_virtual/index2.js +10 -0
- package/dist/melonjs.mjs/_virtual/multimap.js +10 -0
- package/dist/melonjs.mjs/_virtual/setmultimap.js +10 -0
- package/dist/melonjs.mjs/application/application.js +238 -0
- package/dist/melonjs.mjs/audio/audio.js +536 -0
- package/dist/melonjs.mjs/camera/camera2d.js +731 -0
- package/dist/melonjs.mjs/entity/entity.js +247 -0
- package/dist/melonjs.mjs/game.js +29 -0
- package/dist/melonjs.mjs/geometries/ellipse.js +274 -0
- package/dist/melonjs.mjs/geometries/line.js +115 -0
- package/dist/melonjs.mjs/geometries/path2d.js +318 -0
- package/dist/melonjs.mjs/geometries/point.js +88 -0
- package/dist/melonjs.mjs/geometries/poly.js +498 -0
- package/dist/melonjs.mjs/geometries/rectangle.js +374 -0
- package/dist/melonjs.mjs/geometries/roundrect.js +167 -0
- package/dist/melonjs.mjs/index.js +248 -0
- package/dist/melonjs.mjs/input/gamepad.js +501 -0
- package/dist/melonjs.mjs/input/input.js +26 -0
- package/dist/melonjs.mjs/input/keyboard.js +470 -0
- package/dist/melonjs.mjs/input/pointer.js +393 -0
- package/dist/melonjs.mjs/input/pointerevent.js +818 -0
- package/dist/melonjs.mjs/lang/deprecated.js +157 -0
- package/dist/melonjs.mjs/level/level.js +297 -0
- package/dist/melonjs.mjs/level/tiled/TMXGroup.js +141 -0
- package/dist/melonjs.mjs/level/tiled/TMXLayer.js +446 -0
- package/dist/melonjs.mjs/level/tiled/TMXObject.js +355 -0
- package/dist/melonjs.mjs/level/tiled/TMXTile.js +193 -0
- package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +636 -0
- package/dist/melonjs.mjs/level/tiled/TMXTileset.js +309 -0
- package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +81 -0
- package/dist/melonjs.mjs/level/tiled/TMXUtils.js +367 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +504 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +218 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +155 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +124 -0
- package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +107 -0
- package/dist/melonjs.mjs/loader/loader.js +801 -0
- package/dist/melonjs.mjs/loader/loadingscreen.js +120 -0
- package/dist/melonjs.mjs/loader/melonjs_logo.png.js +11 -0
- package/dist/melonjs.mjs/math/color.js +616 -0
- package/dist/melonjs.mjs/math/math.js +218 -0
- package/dist/melonjs.mjs/math/matrix2.js +501 -0
- package/dist/melonjs.mjs/math/matrix3.js +679 -0
- package/dist/melonjs.mjs/math/observable_vector2.js +469 -0
- package/dist/melonjs.mjs/math/observable_vector3.js +559 -0
- package/dist/melonjs.mjs/math/vector2.js +526 -0
- package/dist/melonjs.mjs/math/vector3.js +567 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +73 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +21 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +324 -0
- package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +69 -0
- package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +691 -0
- package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +350 -0
- package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +3241 -0
- package/dist/melonjs.mjs/particles/emitter.js +265 -0
- package/dist/melonjs.mjs/particles/particle.js +186 -0
- package/dist/melonjs.mjs/particles/settings.js +319 -0
- package/dist/melonjs.mjs/physics/body.js +702 -0
- package/dist/melonjs.mjs/physics/bounds.js +459 -0
- package/dist/melonjs.mjs/physics/collision.js +132 -0
- package/dist/melonjs.mjs/physics/detector.js +194 -0
- package/dist/melonjs.mjs/physics/quadtree.js +394 -0
- package/dist/melonjs.mjs/physics/response.js +57 -0
- package/dist/melonjs.mjs/physics/sat.js +483 -0
- package/dist/melonjs.mjs/physics/world.js +219 -0
- package/dist/melonjs.mjs/plugin/plugin.js +141 -0
- package/dist/melonjs.mjs/renderable/collectable.js +60 -0
- package/dist/melonjs.mjs/renderable/colorlayer.js +78 -0
- package/dist/melonjs.mjs/renderable/container.js +1016 -0
- package/dist/melonjs.mjs/renderable/dragndrop.js +224 -0
- package/dist/melonjs.mjs/renderable/imagelayer.js +305 -0
- package/dist/melonjs.mjs/renderable/light2d.js +155 -0
- package/dist/melonjs.mjs/renderable/nineslicesprite.js +246 -0
- package/dist/melonjs.mjs/renderable/renderable.js +781 -0
- package/dist/melonjs.mjs/renderable/sprite.js +653 -0
- package/dist/melonjs.mjs/renderable/trigger.js +156 -0
- package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +212 -0
- package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +225 -0
- package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +127 -0
- package/dist/melonjs.mjs/state/stage.js +236 -0
- package/dist/melonjs.mjs/state/state.js +596 -0
- package/dist/melonjs.mjs/system/device.js +909 -0
- package/dist/melonjs.mjs/system/dom.js +78 -0
- package/dist/melonjs.mjs/system/event.js +537 -0
- package/dist/melonjs.mjs/system/platform.js +41 -0
- package/dist/melonjs.mjs/system/pooling.js +209 -0
- package/dist/melonjs.mjs/system/save.js +157 -0
- package/dist/melonjs.mjs/system/timer.js +286 -0
- package/dist/melonjs.mjs/text/bitmaptext.js +363 -0
- package/dist/melonjs.mjs/text/bitmaptextdata.js +198 -0
- package/dist/melonjs.mjs/text/glyph.js +65 -0
- package/dist/melonjs.mjs/text/text.js +452 -0
- package/dist/melonjs.mjs/text/textmetrics.js +175 -0
- package/dist/melonjs.mjs/text/textstyle.js +23 -0
- package/dist/melonjs.mjs/tweens/easing.js +336 -0
- package/dist/melonjs.mjs/tweens/interpolation.js +112 -0
- package/dist/melonjs.mjs/tweens/tween.js +479 -0
- package/dist/melonjs.mjs/utils/agent.js +76 -0
- package/dist/melonjs.mjs/utils/array.js +63 -0
- package/dist/melonjs.mjs/utils/file.js +42 -0
- package/dist/melonjs.mjs/utils/function.js +70 -0
- package/dist/melonjs.mjs/utils/string.js +82 -0
- package/dist/melonjs.mjs/utils/utils.js +173 -0
- package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +806 -0
- package/dist/melonjs.mjs/video/renderer.js +410 -0
- package/dist/melonjs.mjs/video/texture/atlas.js +519 -0
- package/dist/melonjs.mjs/video/texture/cache.js +143 -0
- package/dist/melonjs.mjs/video/texture/canvas_texture.js +144 -0
- package/dist/melonjs.mjs/video/video.js +462 -0
- package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +142 -0
- package/dist/melonjs.mjs/video/webgl/glshader.js +167 -0
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +10 -0
- package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +10 -0
- package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +10 -0
- package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +10 -0
- package/dist/melonjs.mjs/video/webgl/utils/attributes.js +25 -0
- package/dist/melonjs.mjs/video/webgl/utils/precision.js +20 -0
- package/dist/melonjs.mjs/video/webgl/utils/program.js +67 -0
- package/dist/melonjs.mjs/video/webgl/utils/string.js +25 -0
- package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +92 -0
- package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +494 -0
- package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +1035 -0
- package/dist/melonjs.module.d.ts +1298 -1359
- package/dist/melonjs.module.js +2072 -3520
- package/package.json +21 -16
- package/src/application/application.js +4 -5
- package/src/audio/audio.js +32 -32
- package/src/camera/camera2d.js +32 -33
- package/src/entity/entity.js +18 -19
- package/src/geometries/ellipse.js +17 -18
- package/src/geometries/line.js +6 -7
- package/src/geometries/path2d.js +33 -34
- package/src/geometries/point.js +1 -2
- package/src/geometries/poly.js +16 -18
- package/src/geometries/rectangle.js +19 -20
- package/src/geometries/roundrect.js +9 -10
- package/src/input/gamepad.js +15 -15
- package/src/input/keyboard.js +12 -12
- package/src/input/pointer.js +6 -6
- package/src/input/pointerevent.js +12 -12
- package/src/lang/deprecated.js +12 -12
- package/src/level/level.js +25 -25
- package/src/level/tiled/TMXLayer.js +23 -24
- package/src/level/tiled/TMXTile.js +6 -7
- package/src/level/tiled/TMXTileMap.js +8 -10
- package/src/level/tiled/TMXTileset.js +3 -4
- package/src/level/tiled/TMXTilesetGroup.js +1 -2
- package/src/level/tiled/TMXUtils.js +5 -5
- package/src/level/tiled/renderer/TMXHexagonalRenderer.js +3 -4
- package/src/level/tiled/renderer/TMXIsometricRenderer.js +3 -4
- package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +2 -3
- package/src/level/tiled/renderer/TMXRenderer.js +20 -21
- package/src/level/tiled/renderer/TMXStaggeredRenderer.js +1 -2
- package/src/loader/loader.js +20 -20
- package/src/math/color.js +21 -22
- package/src/math/math.js +16 -16
- package/src/math/matrix2.js +17 -18
- package/src/math/matrix3.js +26 -27
- package/src/math/observable_vector2.js +15 -16
- package/src/math/observable_vector3.js +17 -18
- package/src/math/vector2.js +10 -11
- package/src/math/vector3.js +11 -12
- package/src/particles/emitter.js +7 -8
- package/src/particles/particle.js +3 -4
- package/src/physics/body.js +29 -30
- package/src/physics/bounds.js +10 -10
- package/src/physics/collision.js +2 -2
- package/src/physics/detector.js +6 -6
- package/src/physics/quadtree.js +18 -23
- package/src/physics/sat.js +31 -31
- package/src/physics/world.js +6 -7
- package/src/plugin/plugin.js +5 -5
- package/src/renderable/collectable.js +4 -6
- package/src/renderable/colorlayer.js +6 -8
- package/src/renderable/container.js +25 -27
- package/src/renderable/dragndrop.js +14 -14
- package/src/renderable/imagelayer.js +14 -15
- package/src/renderable/light2d.js +4 -5
- package/src/renderable/nineslicesprite.js +17 -18
- package/src/renderable/renderable.js +26 -28
- package/src/renderable/sprite.js +29 -30
- package/src/renderable/trigger.js +16 -17
- package/src/renderable/ui/uibaseelement.js +8 -9
- package/src/renderable/ui/uispriteelement.js +8 -8
- package/src/renderable/ui/uitextbutton.js +15 -15
- package/src/state/stage.js +8 -9
- package/src/state/state.js +17 -17
- package/src/system/device.js +11 -11
- package/src/system/event.js +10 -10
- package/src/system/pooling.js +9 -9
- package/src/system/save.js +2 -2
- package/src/system/timer.js +10 -10
- package/src/text/bitmaptext.js +19 -20
- package/src/text/bitmaptextdata.js +3 -4
- package/src/text/glyph.js +1 -2
- package/src/text/text.js +24 -25
- package/src/text/textmetrics.js +9 -10
- package/src/tweens/tween.js +20 -21
- package/src/utils/agent.js +5 -5
- package/src/utils/array.js +4 -4
- package/src/utils/file.js +2 -2
- package/src/utils/function.js +6 -6
- package/src/utils/string.js +5 -5
- package/src/utils/utils.js +4 -4
- package/src/video/canvas/canvas_renderer.js +72 -73
- package/src/video/renderer.js +27 -28
- package/src/video/texture/atlas.js +22 -22
- package/src/video/texture/canvas_texture.js +9 -9
- package/src/video/video.js +17 -17
- package/src/video/webgl/buffer/vertex.js +1 -2
- package/src/video/webgl/glshader.js +12 -12
- package/src/video/webgl/webgl_compositor.js +42 -43
- package/src/video/webgl/webgl_renderer.js +76 -77
|
@@ -0,0 +1,679 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* melonJS Game Engine - v14.1.1
|
|
3
|
+
* http://www.melonjs.org
|
|
4
|
+
* melonjs is licensed under the MIT License.
|
|
5
|
+
* http://www.opensource.org/licenses/mit-license
|
|
6
|
+
* @copyright (C) 2011 - 2022 Olivier Biot (AltByte Pte Ltd)
|
|
7
|
+
*/
|
|
8
|
+
import pool from '../system/pooling.js';
|
|
9
|
+
import { EPSILON } from './math.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @classdesc
|
|
13
|
+
* a 4x4 Matrix3d Object
|
|
14
|
+
*/
|
|
15
|
+
class Matrix3d {
|
|
16
|
+
/**
|
|
17
|
+
* @param {(Matrix3d|...number)} args - An instance of me.Matrix3d to copy from, or individual Matrix components (See {@link Matrix3d.setTransform}). If not arguments are given, the matrix will be set to Identity.
|
|
18
|
+
*/
|
|
19
|
+
constructor(...args) {
|
|
20
|
+
this.onResetEvent(...args);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @ignore
|
|
25
|
+
*/
|
|
26
|
+
onResetEvent() {
|
|
27
|
+
if (typeof this.val === "undefined") {
|
|
28
|
+
this.val = new Float32Array(16);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (arguments.length && arguments[0] instanceof Matrix3d) {
|
|
32
|
+
this.copy(arguments[0]);
|
|
33
|
+
}
|
|
34
|
+
else if (arguments.length === 16) {
|
|
35
|
+
this.setTransform.apply(this, arguments);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.identity();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* tx component of the matrix
|
|
44
|
+
* @public
|
|
45
|
+
* @type {number}
|
|
46
|
+
* @name tx
|
|
47
|
+
* @memberof Matrix3d
|
|
48
|
+
*/
|
|
49
|
+
get tx() {
|
|
50
|
+
return this.val[12];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* ty component of the matrix
|
|
55
|
+
* @public
|
|
56
|
+
* @type {number}
|
|
57
|
+
* @name ty
|
|
58
|
+
* @memberof Matrix3d
|
|
59
|
+
*/
|
|
60
|
+
get ty() {
|
|
61
|
+
return this.val[13];
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* ty component of the matrix
|
|
66
|
+
* @public
|
|
67
|
+
* @type {number}
|
|
68
|
+
* @name tz
|
|
69
|
+
* @memberof Matrix3d
|
|
70
|
+
*/
|
|
71
|
+
get tz() {
|
|
72
|
+
return this.val[14];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* reset the transformation matrix to the identity matrix (no transformation).<br>
|
|
77
|
+
* the identity matrix and parameters position : <br>
|
|
78
|
+
* <img src="images/identity-matrix_2x.png"/>
|
|
79
|
+
* @name identity
|
|
80
|
+
* @memberof Matrix3d
|
|
81
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
82
|
+
*/
|
|
83
|
+
identity() {
|
|
84
|
+
return this.setTransform(
|
|
85
|
+
1, 0, 0, 0,
|
|
86
|
+
0, 1, 0, 0,
|
|
87
|
+
0, 0, 1, 0,
|
|
88
|
+
0, 0, 0, 1
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* set the matrix to the specified value
|
|
94
|
+
* @name setTransform
|
|
95
|
+
* @memberof Matrix3d
|
|
96
|
+
* @param {number} m00
|
|
97
|
+
* @param {number} m01
|
|
98
|
+
* @param {number} m02
|
|
99
|
+
* @param {number} m03
|
|
100
|
+
* @param {number} m10
|
|
101
|
+
* @param {number} m11
|
|
102
|
+
* @param {number} m12
|
|
103
|
+
* @param {number} m13
|
|
104
|
+
* @param {number} m20
|
|
105
|
+
* @param {number} m21
|
|
106
|
+
* @param {number} m22
|
|
107
|
+
* @param {number} m23
|
|
108
|
+
* @param {number} m30
|
|
109
|
+
* @param {number} m31
|
|
110
|
+
* @param {number} m32
|
|
111
|
+
* @param {number} m33
|
|
112
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
113
|
+
*/
|
|
114
|
+
setTransform(m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33) {
|
|
115
|
+
var a = this.val;
|
|
116
|
+
|
|
117
|
+
a[0] = m00;
|
|
118
|
+
a[1] = m01;
|
|
119
|
+
a[2] = m02;
|
|
120
|
+
a[3] = m03;
|
|
121
|
+
a[4] = m10;
|
|
122
|
+
a[5] = m11;
|
|
123
|
+
a[6] = m12;
|
|
124
|
+
a[7] = m13;
|
|
125
|
+
a[8] = m20;
|
|
126
|
+
a[9] = m21;
|
|
127
|
+
a[10] = m22;
|
|
128
|
+
a[11] = m23;
|
|
129
|
+
a[12] = m30;
|
|
130
|
+
a[13] = m31;
|
|
131
|
+
a[14] = m32;
|
|
132
|
+
a[15] = m33;
|
|
133
|
+
|
|
134
|
+
return this;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Copies over the values from another me.Matrix3d.
|
|
139
|
+
* @name copy
|
|
140
|
+
* @memberof Matrix3d
|
|
141
|
+
* @param {Matrix3d} m - the matrix object to copy from
|
|
142
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
143
|
+
*/
|
|
144
|
+
copy(m) {
|
|
145
|
+
this.val.set(m.val);
|
|
146
|
+
return this;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Copies over the upper-left 2x2 values from the given me.Matrix2d
|
|
151
|
+
* @name fromMat2d
|
|
152
|
+
* @memberof Matrix3d
|
|
153
|
+
* @param {Matrix2d} m - the matrix object to copy from
|
|
154
|
+
* @returns {Matrix2d} Reference to this object for method chaining
|
|
155
|
+
*/
|
|
156
|
+
fromMat2d(m) {
|
|
157
|
+
var b = m.val;
|
|
158
|
+
return this.setTransform(
|
|
159
|
+
b[0], b[3], b[6], 0,
|
|
160
|
+
b[1], b[4], b[7], 0,
|
|
161
|
+
b[2], b[5], b[8], 0,
|
|
162
|
+
0, 0, 0, 1
|
|
163
|
+
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* multiply both matrix
|
|
169
|
+
* @name multiply
|
|
170
|
+
* @memberof Matrix3d
|
|
171
|
+
* @param {Matrix3d} m - Other matrix
|
|
172
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
173
|
+
*/
|
|
174
|
+
multiply(m) {
|
|
175
|
+
var a = this.val;
|
|
176
|
+
var b = m.val;
|
|
177
|
+
|
|
178
|
+
var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
|
|
179
|
+
var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
|
|
180
|
+
var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
|
|
181
|
+
var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
|
|
182
|
+
var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];
|
|
183
|
+
|
|
184
|
+
a[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
|
|
185
|
+
a[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
|
|
186
|
+
a[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
|
|
187
|
+
a[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
|
|
188
|
+
|
|
189
|
+
b0 = b[4];
|
|
190
|
+
b1 = b[5];
|
|
191
|
+
b2 = b[6];
|
|
192
|
+
b3 = b[7];
|
|
193
|
+
|
|
194
|
+
a[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
|
|
195
|
+
a[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
|
|
196
|
+
a[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
|
|
197
|
+
a[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
|
|
198
|
+
|
|
199
|
+
b0 = b[8];
|
|
200
|
+
b1 = b[9];
|
|
201
|
+
b2 = b[10];
|
|
202
|
+
b3 = b[11];
|
|
203
|
+
|
|
204
|
+
a[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
|
|
205
|
+
a[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
|
|
206
|
+
a[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
|
|
207
|
+
a[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
|
|
208
|
+
|
|
209
|
+
b0 = b[12];
|
|
210
|
+
b1 = b[13];
|
|
211
|
+
b2 = b[14];
|
|
212
|
+
b3 = b[15];
|
|
213
|
+
|
|
214
|
+
a[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
|
|
215
|
+
a[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
|
|
216
|
+
a[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
|
|
217
|
+
a[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
|
|
218
|
+
|
|
219
|
+
return this;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Transpose the value of this matrix.
|
|
224
|
+
* @name transpose
|
|
225
|
+
* @memberof Matrix3d
|
|
226
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
227
|
+
*/
|
|
228
|
+
transpose() {
|
|
229
|
+
var a = this.val,
|
|
230
|
+
a01 = a[1],
|
|
231
|
+
a02 = a[2],
|
|
232
|
+
a03 = a[3],
|
|
233
|
+
a12 = a[6],
|
|
234
|
+
a13 = a[7],
|
|
235
|
+
a23 = a[11];
|
|
236
|
+
|
|
237
|
+
a[1] = a[4];
|
|
238
|
+
a[2] = a[8];
|
|
239
|
+
a[3] = a[12];
|
|
240
|
+
a[4] = a01;
|
|
241
|
+
a[6] = a[9];
|
|
242
|
+
a[7] = a[13];
|
|
243
|
+
a[8] = a02;
|
|
244
|
+
a[9] = a12;
|
|
245
|
+
a[11] = a[14];
|
|
246
|
+
a[12] = a03;
|
|
247
|
+
a[13] = a13;
|
|
248
|
+
a[14] = a23;
|
|
249
|
+
|
|
250
|
+
return this;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* invert this matrix, causing it to apply the opposite transformation.
|
|
255
|
+
* @name invert
|
|
256
|
+
* @memberof Matrix3d
|
|
257
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
258
|
+
*/
|
|
259
|
+
invert() {
|
|
260
|
+
var a = this.val;
|
|
261
|
+
|
|
262
|
+
var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3];
|
|
263
|
+
var a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7];
|
|
264
|
+
var a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11];
|
|
265
|
+
var a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];
|
|
266
|
+
|
|
267
|
+
var b00 = a00 * a11 - a01 * a10;
|
|
268
|
+
var b01 = a00 * a12 - a02 * a10;
|
|
269
|
+
var b02 = a00 * a13 - a03 * a10;
|
|
270
|
+
var b03 = a01 * a12 - a02 * a11;
|
|
271
|
+
|
|
272
|
+
var b04 = a01 * a13 - a03 * a11;
|
|
273
|
+
var b05 = a02 * a13 - a03 * a12;
|
|
274
|
+
var b06 = a20 * a31 - a21 * a30;
|
|
275
|
+
var b07 = a20 * a32 - a22 * a30;
|
|
276
|
+
|
|
277
|
+
var b08 = a20 * a33 - a23 * a30;
|
|
278
|
+
var b09 = a21 * a32 - a22 * a31;
|
|
279
|
+
var b10 = a21 * a33 - a23 * a31;
|
|
280
|
+
var b11 = a22 * a33 - a23 * a32;
|
|
281
|
+
|
|
282
|
+
// Calculate the determinant
|
|
283
|
+
var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;
|
|
284
|
+
|
|
285
|
+
if (!det)
|
|
286
|
+
{
|
|
287
|
+
return null;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
det = 1 / det;
|
|
291
|
+
|
|
292
|
+
a[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;
|
|
293
|
+
a[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det;
|
|
294
|
+
a[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det;
|
|
295
|
+
a[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det;
|
|
296
|
+
a[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det;
|
|
297
|
+
a[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det;
|
|
298
|
+
a[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det;
|
|
299
|
+
a[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det;
|
|
300
|
+
a[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det;
|
|
301
|
+
a[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det;
|
|
302
|
+
a[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det;
|
|
303
|
+
a[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det;
|
|
304
|
+
a[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det;
|
|
305
|
+
a[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det;
|
|
306
|
+
a[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det;
|
|
307
|
+
a[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det;
|
|
308
|
+
|
|
309
|
+
return this;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* apply the current transform to the given 2d or 3d vector
|
|
314
|
+
* @name apply
|
|
315
|
+
* @memberof Matrix3d
|
|
316
|
+
* @param {Vector2d|Vector3d} v - the vector object to be transformed
|
|
317
|
+
* @returns {Vector2d|Vector3d} result vector object.
|
|
318
|
+
*/
|
|
319
|
+
apply(v) {
|
|
320
|
+
var a = this.val,
|
|
321
|
+
x = v.x,
|
|
322
|
+
y = v.y,
|
|
323
|
+
z = (typeof v.z !== "undefined") ? v.z : 1;
|
|
324
|
+
|
|
325
|
+
var w = (a[3] * x + a[7] * y + a[11] * z + a[15]) || 1.0;
|
|
326
|
+
|
|
327
|
+
v.x = (a[0] * x + a[4] * y + a[8] * z + a[12]) / w;
|
|
328
|
+
v.y = (a[1] * x + a[5] * y + a[9] * z + a[13]) / w;
|
|
329
|
+
|
|
330
|
+
if (typeof v.z !== "undefined") {
|
|
331
|
+
v.z = (a[2] * x + a[6] * y + a[10] * z + a[14]) / w;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
return v;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* apply the inverted current transform to the given 2d or 3d vector
|
|
339
|
+
* @name applyInverse
|
|
340
|
+
* @memberof Matrix3d
|
|
341
|
+
* @param {Vector2d|Vector3d} v - the vector object to be transformed
|
|
342
|
+
* @returns {Vector2d|Vector3d} result vector object.
|
|
343
|
+
*/
|
|
344
|
+
applyInverse(v) {
|
|
345
|
+
// invert the current matrix
|
|
346
|
+
var im = pool.pull("Matrix3d", this).invert();
|
|
347
|
+
|
|
348
|
+
// apply the inverted matrix
|
|
349
|
+
im.apply(v);
|
|
350
|
+
|
|
351
|
+
pool.push(im);
|
|
352
|
+
|
|
353
|
+
return v;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* generate an orthogonal projection matrix, with the result replacing the current matrix
|
|
358
|
+
* <img src="images/glOrtho.gif"/><br>
|
|
359
|
+
* @name ortho
|
|
360
|
+
* @memberof Matrix3d
|
|
361
|
+
* @param {number} left - farthest left on the x-axis
|
|
362
|
+
* @param {number} right - farthest right on the x-axis
|
|
363
|
+
* @param {number} bottom - farthest down on the y-axis
|
|
364
|
+
* @param {number} top - farthest up on the y-axis
|
|
365
|
+
* @param {number} near - distance to the near clipping plane along the -Z axis
|
|
366
|
+
* @param {number} far - distance to the far clipping plane along the -Z axis
|
|
367
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
368
|
+
*/
|
|
369
|
+
ortho(left, right, bottom, top, near, far) {
|
|
370
|
+
var a = this.val;
|
|
371
|
+
var leftRight = 1.0 / (left - right);
|
|
372
|
+
var bottomTop = 1.0 / (bottom - top);
|
|
373
|
+
var nearFar = 1.0 / (near - far);
|
|
374
|
+
|
|
375
|
+
a[0] = -2.0 * leftRight;
|
|
376
|
+
a[1] = 0.0;
|
|
377
|
+
a[2] = 0.0;
|
|
378
|
+
a[3] = 0.0;
|
|
379
|
+
a[4] = 0.0;
|
|
380
|
+
a[5] = -2.0 * bottomTop;
|
|
381
|
+
a[6] = 0.0;
|
|
382
|
+
a[7] = 0.0;
|
|
383
|
+
a[8] = 0.0;
|
|
384
|
+
a[9] = 0.0;
|
|
385
|
+
a[10] = 2.0 * nearFar;
|
|
386
|
+
a[11] = 0.0;
|
|
387
|
+
a[12] = (left + right) * leftRight;
|
|
388
|
+
a[13] = (top + bottom) * bottomTop;
|
|
389
|
+
a[14] = (far + near) * nearFar;
|
|
390
|
+
a[15] = 1.0;
|
|
391
|
+
|
|
392
|
+
return this;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* scale the matrix
|
|
397
|
+
* @name scale
|
|
398
|
+
* @memberof Matrix3d
|
|
399
|
+
* @param {number} x - a number representing the abscissa of the scaling vector.
|
|
400
|
+
* @param {number} [y=x] - a number representing the ordinate of the scaling vector.
|
|
401
|
+
* @param {number} [z=0] - a number representing the depth vector
|
|
402
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
403
|
+
*/
|
|
404
|
+
scale(x, y, z) {
|
|
405
|
+
var a = this.val,
|
|
406
|
+
_x = x,
|
|
407
|
+
_y = typeof(y) === "undefined" ? _x : y,
|
|
408
|
+
_z = typeof(z) === "undefined" ? 0 : z;
|
|
409
|
+
|
|
410
|
+
a[0] = a[0] * _x;
|
|
411
|
+
a[1] = a[1] * _x;
|
|
412
|
+
a[2] = a[2] * _x;
|
|
413
|
+
a[3] = a[3] * _x;
|
|
414
|
+
|
|
415
|
+
a[4] = a[4] * _y;
|
|
416
|
+
a[5] = a[5] * _y;
|
|
417
|
+
a[6] = a[6] * _y;
|
|
418
|
+
a[7] = a[7] * _y;
|
|
419
|
+
|
|
420
|
+
a[8] = a[8] * _z;
|
|
421
|
+
a[9] = a[9] * _z;
|
|
422
|
+
a[10] = a[10] * _z;
|
|
423
|
+
a[11] = a[11] * _z;
|
|
424
|
+
|
|
425
|
+
return this;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/**
|
|
429
|
+
* adds a 2D scaling transformation.
|
|
430
|
+
* @name scaleV
|
|
431
|
+
* @memberof Matrix3d
|
|
432
|
+
* @param {Vector2d|Vector3d} v - scaling vector
|
|
433
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
434
|
+
*/
|
|
435
|
+
scaleV(v) {
|
|
436
|
+
return this.scale(v.x, v.y, v.z);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* specifies a 2D scale operation using the [sx, 1] scaling vector
|
|
441
|
+
* @name scaleX
|
|
442
|
+
* @memberof Matrix3d
|
|
443
|
+
* @param {number} x - x scaling vector
|
|
444
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
445
|
+
*/
|
|
446
|
+
scaleX(x) {
|
|
447
|
+
return this.scale(x, 1);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* specifies a 2D scale operation using the [1,sy] scaling vector
|
|
452
|
+
* @name scaleY
|
|
453
|
+
* @memberof Matrix3d
|
|
454
|
+
* @param {number} y - y scaling vector
|
|
455
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
456
|
+
*/
|
|
457
|
+
scaleY(y) {
|
|
458
|
+
return this.scale(1, y);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* rotate this matrix (counter-clockwise) by the specified angle (in radians).
|
|
463
|
+
* @name rotate
|
|
464
|
+
* @memberof Matrix3d
|
|
465
|
+
* @param {number} angle - Rotation angle in radians.
|
|
466
|
+
* @param {Vector3d} v - the axis to rotate around
|
|
467
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
468
|
+
*/
|
|
469
|
+
rotate(angle, v) {
|
|
470
|
+
if (angle !== 0) {
|
|
471
|
+
var a = this.val,
|
|
472
|
+
x = v.x,
|
|
473
|
+
y = v.y,
|
|
474
|
+
z = v.z;
|
|
475
|
+
|
|
476
|
+
var len = Math.sqrt(x * x + y * y + z * z);
|
|
477
|
+
|
|
478
|
+
var s, c, t;
|
|
479
|
+
var a00, a01, a02, a03;
|
|
480
|
+
var a10, a11, a12, a13;
|
|
481
|
+
var a20, a21, a22, a23;
|
|
482
|
+
var b00, b01, b02;
|
|
483
|
+
var b10, b11, b12;
|
|
484
|
+
var b20, b21, b22;
|
|
485
|
+
|
|
486
|
+
if (len < EPSILON) {
|
|
487
|
+
return null;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
len = 1 / len;
|
|
491
|
+
x *= len;
|
|
492
|
+
y *= len;
|
|
493
|
+
z *= len;
|
|
494
|
+
|
|
495
|
+
s = Math.sin(angle);
|
|
496
|
+
c = Math.cos(angle);
|
|
497
|
+
t = 1 - c;
|
|
498
|
+
|
|
499
|
+
a00 = a[0];
|
|
500
|
+
a01 = a[1];
|
|
501
|
+
a02 = a[2];
|
|
502
|
+
a03 = a[3];
|
|
503
|
+
a10 = a[4];
|
|
504
|
+
a11 = a[5];
|
|
505
|
+
a12 = a[6];
|
|
506
|
+
a13 = a[7];
|
|
507
|
+
a20 = a[8];
|
|
508
|
+
a21 = a[9];
|
|
509
|
+
a22 = a[10];
|
|
510
|
+
a23 = a[11];
|
|
511
|
+
|
|
512
|
+
// Construct the elements of the rotation matrix
|
|
513
|
+
b00 = x * x * t + c;
|
|
514
|
+
b01 = y * x * t + z * s;
|
|
515
|
+
b02 = z * x * t - y * s;
|
|
516
|
+
b10 = x * y * t - z * s;
|
|
517
|
+
b11 = y * y * t + c;
|
|
518
|
+
b12 = z * y * t + x * s;
|
|
519
|
+
b20 = x * z * t + y * s;
|
|
520
|
+
b21 = y * z * t - x * s;
|
|
521
|
+
b22 = z * z * t + c;
|
|
522
|
+
|
|
523
|
+
// Perform rotation-specific matrix multiplication
|
|
524
|
+
a[0] = a00 * b00 + a10 * b01 + a20 * b02;
|
|
525
|
+
a[1] = a01 * b00 + a11 * b01 + a21 * b02;
|
|
526
|
+
a[2] = a02 * b00 + a12 * b01 + a22 * b02;
|
|
527
|
+
a[3] = a03 * b00 + a13 * b01 + a23 * b02;
|
|
528
|
+
a[4] = a00 * b10 + a10 * b11 + a20 * b12;
|
|
529
|
+
a[5] = a01 * b10 + a11 * b11 + a21 * b12;
|
|
530
|
+
a[6] = a02 * b10 + a12 * b11 + a22 * b12;
|
|
531
|
+
a[7] = a03 * b10 + a13 * b11 + a23 * b12;
|
|
532
|
+
a[8] = a00 * b20 + a10 * b21 + a20 * b22;
|
|
533
|
+
a[9] = a01 * b20 + a11 * b21 + a21 * b22;
|
|
534
|
+
a[10] = a02 * b20 + a12 * b21 + a22 * b22;
|
|
535
|
+
a[11] = a03 * b20 + a13 * b21 + a23 * b22;
|
|
536
|
+
}
|
|
537
|
+
return this;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* translate the matrix position using the given vector
|
|
542
|
+
* @name translate
|
|
543
|
+
* @memberof Matrix3d
|
|
544
|
+
* @method
|
|
545
|
+
* @param {number} x - a number representing the abscissa of the vector.
|
|
546
|
+
* @param {number} [y=x] - a number representing the ordinate of the vector.
|
|
547
|
+
* @param {number} [z=0] - a number representing the depth of the vector
|
|
548
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
549
|
+
*/
|
|
550
|
+
/**
|
|
551
|
+
* translate the matrix by a vector on the horizontal and vertical axis
|
|
552
|
+
* @name translateV
|
|
553
|
+
* @memberof Matrix3d
|
|
554
|
+
* @param {Vector2d|Vector3d} v - the vector to translate the matrix by
|
|
555
|
+
* @returns {Matrix3d} Reference to this object for method chaining
|
|
556
|
+
*/
|
|
557
|
+
translate() {
|
|
558
|
+
var a = this.val;
|
|
559
|
+
var _x, _y, _z;
|
|
560
|
+
|
|
561
|
+
if (arguments.length > 1 ) {
|
|
562
|
+
// x, y (, z)
|
|
563
|
+
_x = arguments[0];
|
|
564
|
+
_y = arguments[1];
|
|
565
|
+
_z = typeof(arguments[2]) === "undefined" ? 0 : arguments[2];
|
|
566
|
+
} else {
|
|
567
|
+
// 2d/3d vector
|
|
568
|
+
_x = arguments[0].x;
|
|
569
|
+
_y = arguments[0].y;
|
|
570
|
+
_z = typeof(arguments[0].z) === "undefined" ? 0 : arguments[0].z;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
a[12] = a[0] * _x + a[4] * _y + a[8] * _z + a[12];
|
|
574
|
+
a[13] = a[1] * _x + a[5] * _y + a[9] * _z + a[13];
|
|
575
|
+
a[14] = a[2] * _x + a[6] * _y + a[10] * _z + a[14];
|
|
576
|
+
a[15] = a[3] * _x + a[7] * _y + a[11] * _z + a[15];
|
|
577
|
+
|
|
578
|
+
return this;
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* returns true if the matrix is an identity matrix.
|
|
583
|
+
* @name isIdentity
|
|
584
|
+
* @memberof Matrix3d
|
|
585
|
+
* @returns {boolean}
|
|
586
|
+
*/
|
|
587
|
+
isIdentity() {
|
|
588
|
+
var a = this.val;
|
|
589
|
+
|
|
590
|
+
return (
|
|
591
|
+
(a[0] === 1) &&
|
|
592
|
+
(a[1] === 0) &&
|
|
593
|
+
(a[2] === 0) &&
|
|
594
|
+
(a[3] === 0) &&
|
|
595
|
+
(a[4] === 0) &&
|
|
596
|
+
(a[5] === 1) &&
|
|
597
|
+
(a[6] === 0) &&
|
|
598
|
+
(a[7] === 0) &&
|
|
599
|
+
(a[8] === 0) &&
|
|
600
|
+
(a[9] === 0) &&
|
|
601
|
+
(a[10] === 1) &&
|
|
602
|
+
(a[11] === 0) &&
|
|
603
|
+
(a[12] === 0) &&
|
|
604
|
+
(a[13] === 0) &&
|
|
605
|
+
(a[14] === 0) &&
|
|
606
|
+
(a[15] === 1)
|
|
607
|
+
);
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
/**
|
|
611
|
+
* return true if the two matrices are identical
|
|
612
|
+
* @name equals
|
|
613
|
+
* @memberof Matrix3d
|
|
614
|
+
* @param {Matrix3d} m - the other matrix
|
|
615
|
+
* @returns {boolean} true if both are equals
|
|
616
|
+
*/
|
|
617
|
+
equals(m) {
|
|
618
|
+
var b = m.val;
|
|
619
|
+
var a = this.val;
|
|
620
|
+
|
|
621
|
+
return (
|
|
622
|
+
(a[0] === b[0]) &&
|
|
623
|
+
(a[1] === b[1]) &&
|
|
624
|
+
(a[2] === b[2]) &&
|
|
625
|
+
(a[3] === b[3]) &&
|
|
626
|
+
(a[4] === b[4]) &&
|
|
627
|
+
(a[5] === b[5]) &&
|
|
628
|
+
(a[6] === b[6]) &&
|
|
629
|
+
(a[7] === b[7]) &&
|
|
630
|
+
(a[8] === b[8]) &&
|
|
631
|
+
(a[9] === b[9]) &&
|
|
632
|
+
(a[10] === b[10]) &&
|
|
633
|
+
(a[11] === b[11]) &&
|
|
634
|
+
(a[12] === b[12]) &&
|
|
635
|
+
(a[13] === b[13]) &&
|
|
636
|
+
(a[14] === b[14]) &&
|
|
637
|
+
(a[15] === b[15])
|
|
638
|
+
);
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
/**
|
|
642
|
+
* Clone the Matrix
|
|
643
|
+
* @name clone
|
|
644
|
+
* @memberof Matrix3d
|
|
645
|
+
* @returns {Matrix3d}
|
|
646
|
+
*/
|
|
647
|
+
clone() {
|
|
648
|
+
return pool.pull("Matrix3d", this);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
/**
|
|
652
|
+
* return an array representation of this Matrix
|
|
653
|
+
* @name toArray
|
|
654
|
+
* @memberof Matrix3d
|
|
655
|
+
* @returns {Float32Array}
|
|
656
|
+
*/
|
|
657
|
+
toArray() {
|
|
658
|
+
return this.val;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
/**
|
|
662
|
+
* convert the object to a string representation
|
|
663
|
+
* @name toString
|
|
664
|
+
* @memberof Matrix3d
|
|
665
|
+
* @returns {string}
|
|
666
|
+
*/
|
|
667
|
+
toString() {
|
|
668
|
+
var a = this.val;
|
|
669
|
+
|
|
670
|
+
return "me.Matrix3d(" +
|
|
671
|
+
a[0] + ", " + a[1] + ", " + a[2] + ", " + a[3] + ", " +
|
|
672
|
+
a[4] + ", " + a[5] + ", " + a[6] + ", " + a[7] + ", " +
|
|
673
|
+
a[8] + ", " + a[9] + ", " + a[10] + ", " + a[11] + ", " +
|
|
674
|
+
a[12] + ", " + a[13] + ", " + a[14] + ", " + a[15] +
|
|
675
|
+
")";
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
export { Matrix3d as default };
|