* 求逆矩阵 * @param {Float32Array|Array. } out * @param {Float32Array|Array. } a
(out, a)
| 2725 | * @param {Float32Array|Array.<number>} a |
| 2726 | */ |
| 2727 | function invert(out, a) { |
| 2728 | |
| 2729 | var aa = a[0]; |
| 2730 | var ac = a[2]; |
| 2731 | var atx = a[4]; |
| 2732 | var ab = a[1]; |
| 2733 | var ad = a[3]; |
| 2734 | var aty = a[5]; |
| 2735 | |
| 2736 | var det = aa * ad - ab * ac; |
| 2737 | if (!det) { |
| 2738 | return null; |
| 2739 | } |
| 2740 | det = 1.0 / det; |
| 2741 | |
| 2742 | out[0] = ad * det; |
| 2743 | out[1] = -ab * det; |
| 2744 | out[2] = -ac * det; |
| 2745 | out[3] = aa * det; |
| 2746 | out[4] = (ac * aty - ad * atx) * det; |
| 2747 | out[5] = (ab * atx - aa * aty) * det; |
| 2748 | return out; |
| 2749 | } |
| 2750 | |
| 2751 | /** |
| 2752 | * Clone a new matrix. |
no outgoing calls
no test coverage detected