* Multiplies the current 4x4 matrix with another 4x4 matrix. * This method updates the current matrix with the result of the multiplication. * * @private * @param {number[]} _src - A 16-element array representing the 4x4 matrix to multiply with. * * @returns {this} The current inst
(_src)
| 1653 | * matrix.#mult4x4(srcMatrix); |
| 1654 | */ |
| 1655 | #mult4x4(_src) { |
| 1656 | // each row is used for the multiplier |
| 1657 | let b0 = this.matrix[0], |
| 1658 | b1 = this.matrix[1], |
| 1659 | b2 = this.matrix[2], |
| 1660 | b3 = this.matrix[3]; |
| 1661 | this.matrix[0] = b0 * _src[0] + b1 * _src[4] + b2 * _src[8] + b3 * _src[12]; |
| 1662 | this.matrix[1] = b0 * _src[1] + b1 * _src[5] + b2 * _src[9] + b3 * _src[13]; |
| 1663 | this.matrix[2] = |
| 1664 | b0 * _src[2] + b1 * _src[6] + b2 * _src[10] + b3 * _src[14]; |
| 1665 | this.matrix[3] = |
| 1666 | b0 * _src[3] + b1 * _src[7] + b2 * _src[11] + b3 * _src[15]; |
| 1667 | |
| 1668 | b0 = this.matrix[4]; |
| 1669 | b1 = this.matrix[5]; |
| 1670 | b2 = this.matrix[6]; |
| 1671 | b3 = this.matrix[7]; |
| 1672 | this.matrix[4] = b0 * _src[0] + b1 * _src[4] + b2 * _src[8] + b3 * _src[12]; |
| 1673 | this.matrix[5] = b0 * _src[1] + b1 * _src[5] + b2 * _src[9] + b3 * _src[13]; |
| 1674 | this.matrix[6] = |
| 1675 | b0 * _src[2] + b1 * _src[6] + b2 * _src[10] + b3 * _src[14]; |
| 1676 | this.matrix[7] = |
| 1677 | b0 * _src[3] + b1 * _src[7] + b2 * _src[11] + b3 * _src[15]; |
| 1678 | |
| 1679 | b0 = this.matrix[8]; |
| 1680 | b1 = this.matrix[9]; |
| 1681 | b2 = this.matrix[10]; |
| 1682 | b3 = this.matrix[11]; |
| 1683 | this.matrix[8] = b0 * _src[0] + b1 * _src[4] + b2 * _src[8] + b3 * _src[12]; |
| 1684 | this.matrix[9] = b0 * _src[1] + b1 * _src[5] + b2 * _src[9] + b3 * _src[13]; |
| 1685 | this.matrix[10] = |
| 1686 | b0 * _src[2] + b1 * _src[6] + b2 * _src[10] + b3 * _src[14]; |
| 1687 | this.matrix[11] = |
| 1688 | b0 * _src[3] + b1 * _src[7] + b2 * _src[11] + b3 * _src[15]; |
| 1689 | |
| 1690 | b0 = this.matrix[12]; |
| 1691 | b1 = this.matrix[13]; |
| 1692 | b2 = this.matrix[14]; |
| 1693 | b3 = this.matrix[15]; |
| 1694 | this.matrix[12] = |
| 1695 | b0 * _src[0] + b1 * _src[4] + b2 * _src[8] + b3 * _src[12]; |
| 1696 | this.matrix[13] = |
| 1697 | b0 * _src[1] + b1 * _src[5] + b2 * _src[9] + b3 * _src[13]; |
| 1698 | this.matrix[14] = |
| 1699 | b0 * _src[2] + b1 * _src[6] + b2 * _src[10] + b3 * _src[14]; |
| 1700 | this.matrix[15] = |
| 1701 | b0 * _src[3] + b1 * _src[7] + b2 * _src[11] + b3 * _src[15]; |
| 1702 | |
| 1703 | return this; |
| 1704 | } |
| 1705 | |
| 1706 | /** |
| 1707 | * @param {p5.Matrix|Float32Array|Number[]} multMatrix The matrix |