tools:matrix:start
                Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tools:matrix:start [2021/09/16 17:45] – [Vectors and Matrices] ursgraf | tools:matrix:start [2022/04/20 13:29] (current) – [Logging Matrices] ursgraf | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| <code cpp> | <code cpp> | ||
| Vector< | Vector< | ||
| - | v << 1.5, -2, 0; | ||
| </ | </ | ||
| The declaration could be simplified to | The declaration could be simplified to | ||
| <code cpp> | <code cpp> | ||
| Vector3<> | Vector3<> | ||
| - | v << 1.5, -2, 0; | ||
| </ | </ | ||
| - | as '' | + | as '' | 
| + | <code cpp> | ||
| + | v = {1.5, -2, 0} | ||
| + | v << 1.5, -2, 0; // or with input operator | ||
| + | Vector3 v{1,2,3}; // or directly upon declaration | ||
| + | </ | ||
| + | A matrix of 3 times 3 with element type '' | ||
| <code cpp> | <code cpp> | ||
| Matrix< | Matrix< | ||
| - | m << 1, 4, 7, | + | m << 1, 2, 3, | 
| - | 2, 5, 8, | + | 4, 5, 6, | 
| - | 3, 6, 9; | + | 7, 8, 9; | 
| </ | </ | ||
| - | The first three numbers will be filled into the first colon. While the internal representation is simply a one dimensional vector, the matrix could be visualized as | + | The first three numbers will be filled into the first row. While the internal representation is simply a one dimensional vector, the matrix could be visualized as | 
| - | + | ||
| - | + | ||
| - | |1|2|3| | + | |
| - | | 4 | 5 | 6 | | + | |
| - | | 7 | 8 | 9 | | + | |
| + | | ^col0^col1^col2^ | ||
| + | ^row0|1|2|3| | ||
| + | ^row1|4|5|6| | ||
| + | ^row2|7|8|9| | ||
| + | When declaring and initializing a matrix, the values must be given colon per colon. The same matrix as given above would be initialized as follows | ||
| + | <code cpp> | ||
| + | Matrix< | ||
| + | </ | ||
| ===== Accessing Elements ===== | ===== Accessing Elements ===== | ||
| You can access rows, columns or single elements of matrices with the following methods: | You can access rows, columns or single elements of matrices with the following methods: | ||
| <code cpp> | <code cpp> | ||
| m.get(0, | m.get(0, | ||
| - | m.getRow(1); | + | m.get(1, | 
| - | m.getCol(0); | + | m.getRow(1); | 
| - | m.getSubMatrix< | + | m.getCol(0); | 
| + | m.getSubMatrix< | ||
| </ | </ | ||
| Single elements, rows or columns can be written with the methods //set()//, // | Single elements, rows or columns can be written with the methods //set()//, // | ||
| Line 43: | Line 51: | ||
| ===== Logging Matrices ===== | ===== Logging Matrices ===== | ||
| + | A matrix can be logged simply by writing | ||
| + | <code cpp> | ||
| + | log.info() << m; | ||
| + | </ | ||
| + | With the 3 x 3 matrix from above we would get | ||
| + | < | ||
| + | 2021-09-16 17: | ||
| + | </ | ||
| + | The matrix is plotted colon per colon. To give some more examples: | ||
| + | <code cpp> | ||
| + | Matrix< | ||
| + | Matrix< | ||
| + | Matrix< | ||
| + | </ | ||
| + | This matrices will be printed as | ||
| + | < | ||
| + | 2021-09-16 17: | ||
| + | 2021-09-16 17: | ||
| + | 2021-09-16 17: | ||
| + | </ | ||
| + | |||
| + | ===== Matrix Operations ===== | ||
| + | Some examples show basic matrix operations. | ||
| + | <code cpp> | ||
| + | Vector2 v1{1,2}; | ||
| + | Matrix< | ||
| + | log.info() << v1 * v2; // will print [ [3 6]' [4 8]' ] | ||
| + | log.info() << v2 * v1; // will print [11]' | ||
| + | |||
| + | Matrix< | ||
| + | log.info() << v2 * m1; // will print [ [9]' [5]' ] | ||
| + | log.info() << v1.transpose() * m1;// will print [ [4]' [3]' ] | ||
| + | |||
| + | auto x = v2 * m1; | ||
| + | Vector2 v4 = x.transpose(); | ||
| + | log.info() << v4; // will print [9 5]' | ||
| + | </ | ||
tools/matrix/start.1631807104.txt.gz · Last modified: 2021/09/16 17:45 by ursgraf
                
                