diff options
| author | HampusM <hampus@hampusmat.com> | 2026-09-14 15:28:19 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-09-14 15:28:19 +0200 |
| commit | ce31f1611f03255be2c9db74690fec1637da7ca8 (patch) | |
| tree | bc7b1192813b18c8a9a8357ec3666fae10257618 | |
| parent | a2b7a1d8c8050847bd4bbb3272eac6fec3c78715 (diff) | |
feat(engine): add Matrix::to_column_major fn
| -rw-r--r-- | engine/src/data_types/matrix.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/engine/src/data_types/matrix.rs b/engine/src/data_types/matrix.rs index ef263a1..9ab5bd4 100644 --- a/engine/src/data_types/matrix.rs +++ b/engine/src/data_types/matrix.rs @@ -61,6 +61,23 @@ impl<Value, const ROWS: usize, const COLUMNS: usize> Matrix<Value, ROWS, COLUMNS { &self.items.as_flattened() } + + pub fn to_column_major(&self) -> [[Value; ROWS]; COLUMNS] + where + Value: Default + Clone, + { + let mut transposed = std::array::from_fn::<_, COLUMNS, _>(|_| { + std::array::from_fn::<_, ROWS, _>(|_| Value::default()) + }); + + for (row_index, row) in self.items.iter().enumerate() { + for (column_index, item) in row.iter().enumerate() { + transposed[column_index][row_index] = item.clone(); + } + } + + transposed + } } impl<Value, const ROWS: usize, const COLUMNS: usize> Default |
