Line data Source code
1 : import 'package:vector_math/vector_math_64.dart'; 2 : 3 : export 'package:vector_math/vector_math_64.dart' hide Colors; 4 : 5 : extension Matrix4Extension on Matrix4 { 6 : /// A first row and first column value. 7 12 : double get m11 => storage[0]; 8 : 9 : /// A first row and second column value. 10 3 : double get m12 => storage[1]; 11 : 12 : /// A first row and third column value. 13 3 : double get m13 => storage[2]; 14 : 15 : /// A first row and fourth column value. 16 3 : double get m14 => storage[3]; 17 : 18 : /// A second row and first column value. 19 3 : double get m21 => storage[4]; 20 : 21 : /// A second row and second column value. 22 12 : double get m22 => storage[5]; 23 : 24 : /// A second row and third column value. 25 3 : double get m23 => storage[6]; 26 : 27 : /// A second row and fourth column value. 28 3 : double get m24 => storage[7]; 29 : 30 : /// A third row and first column value. 31 3 : double get m31 => storage[8]; 32 : 33 : /// A third row and second column value. 34 3 : double get m32 => storage[9]; 35 : 36 : /// A third row and third column value. 37 12 : double get m33 => storage[10]; 38 : 39 : /// A third row and fourth column value. 40 3 : double get m34 => storage[11]; 41 : 42 : /// A fourth row and first column value. 43 12 : double get m41 => storage[12]; 44 : 45 : /// A fourth row and second column value. 46 12 : double get m42 => storage[13]; 47 : 48 : /// A fourth row and third column value. 49 3 : double get m43 => storage[14]; 50 : 51 : /// A fourth row and fourth column value. 52 3 : double get m44 => storage[15]; 53 : 54 : /// Translate this matrix by a [Vector2]. 55 0 : void translate2(Vector2 vector) { 56 0 : return translate(vector.x, vector.y); 57 : } 58 : 59 : /// Transform [position] of type [Vector2] using the transformation defined by 60 : /// this. 61 1 : Vector2 transform2(Vector2 position) { 62 1 : return Vector2( 63 9 : (position.x * m11) + (position.y * m21) + m41, 64 9 : (position.x * m12) + (position.y * m22) + m42, 65 : ); 66 : } 67 : 68 : /// Transform a copy of [position] of type [Vector2] using the transformation 69 : /// defined by this. If a [out] parameter is supplied, the copy is stored in 70 : /// [out]. 71 1 : Vector2 transformed2(Vector2 position, [Vector2? out]) { 72 : if (out == null) { 73 : // ignore: parameter_assignments 74 0 : out = Vector2.copy(position); 75 : } else { 76 1 : out.setFrom(position); 77 : } 78 1 : return transform2(out); 79 : } 80 : 81 : /// Create a scaled matrix. 82 : /// 83 : /// Scale by a [Vector3], [Vector4], or x,y,z 84 0 : static Matrix4 scale(dynamic x, [double? y, double? z]) { 85 0 : return Matrix4.identity()..scale(x, y, z); 86 : } 87 : }