MCPcopy
hub / github.com/processing/p5.js / apply

Method apply

src/math/Matrices/Matrix.js:823–878  ·  view source on GitHub ↗

* Applies a transformation matrix to the current matrix. * * This method multiplies the current matrix by another matrix, which can be provided * in several forms: another Matrix instance, an array representing a matrix, or as * individual arguments representing the elements of a 4x4 mat

(multMatrix)

Source from the content-addressed store, hash-verified

821 * }
822 */
823 apply(multMatrix) {
824 let _src;
825
826 if (multMatrix === this || multMatrix === this.matrix) {
827 _src = this.copy().matrix; // only need to allocate in this rare case
828 } else if (multMatrix instanceof Matrix) {
829 _src = multMatrix.matrix;
830 } else if (isMatrixArray(multMatrix)) {
831 _src = multMatrix;
832 } else if (arguments.length === 16) {
833 _src = arguments;
834 } else {
835 return; // nothing to do.
836 }
837
838 const mat4 = this.matrix;
839
840 // each row is used for the multiplier
841 const m0 = mat4[0];
842 const m4 = mat4[4];
843 const m8 = mat4[8];
844 const m12 = mat4[12];
845 mat4[0] = _src[0] * m0 + _src[1] * m4 + _src[2] * m8 + _src[3] * m12;
846 mat4[4] = _src[4] * m0 + _src[5] * m4 + _src[6] * m8 + _src[7] * m12;
847 mat4[8] = _src[8] * m0 + _src[9] * m4 + _src[10] * m8 + _src[11] * m12;
848 mat4[12] = _src[12] * m0 + _src[13] * m4 + _src[14] * m8 + _src[15] * m12;
849
850 const m1 = mat4[1];
851 const m5 = mat4[5];
852 const m9 = mat4[9];
853 const m13 = mat4[13];
854 mat4[1] = _src[0] * m1 + _src[1] * m5 + _src[2] * m9 + _src[3] * m13;
855 mat4[5] = _src[4] * m1 + _src[5] * m5 + _src[6] * m9 + _src[7] * m13;
856 mat4[9] = _src[8] * m1 + _src[9] * m5 + _src[10] * m9 + _src[11] * m13;
857 mat4[13] = _src[12] * m1 + _src[13] * m5 + _src[14] * m9 + _src[15] * m13;
858
859 const m2 = mat4[2];
860 const m6 = mat4[6];
861 const m10 = mat4[10];
862 const m14 = mat4[14];
863 mat4[2] = _src[0] * m2 + _src[1] * m6 + _src[2] * m10 + _src[3] * m14;
864 mat4[6] = _src[4] * m2 + _src[5] * m6 + _src[6] * m10 + _src[7] * m14;
865 mat4[10] = _src[8] * m2 + _src[9] * m6 + _src[10] * m10 + _src[11] * m14;
866 mat4[14] = _src[12] * m2 + _src[13] * m6 + _src[14] * m10 + _src[15] * m14;
867
868 const m3 = mat4[3];
869 const m7 = mat4[7];
870 const m11 = mat4[11];
871 const m15 = mat4[15];
872 mat4[3] = _src[0] * m3 + _src[1] * m7 + _src[2] * m11 + _src[3] * m15;
873 mat4[7] = _src[4] * m3 + _src[5] * m7 + _src[6] * m11 + _src[7] * m15;
874 mat4[11] = _src[8] * m3 + _src[9] * m7 + _src[10] * m11 + _src[11] * m15;
875 mat4[15] = _src[12] * m3 + _src[13] * m7 + _src[14] * m11 + _src[15] * m15;
876
877 return this;
878 }
879
880 /**

Callers 15

p5.sound.min.jsFile · 0.45
p5.sound.jsFile · 0.45
loadSoundFunction · 0.45
doFadeFunction · 0.45
fnFunction · 0.45
doFadeFunction · 0.45
fnFunction · 0.45
doFadeFunction · 0.45
fnFunction · 0.45
createElementFunction · 0.45
fnBindFunction · 0.45
downloading.jsFile · 0.45

Calls 2

copyMethod · 0.95
isMatrixArrayFunction · 0.70

Tested by

no test coverage detected