summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-09-14 15:28:19 +0200
committerHampusM <hampus@hampusmat.com>2026-09-14 15:28:19 +0200
commitce31f1611f03255be2c9db74690fec1637da7ca8 (patch)
treebc7b1192813b18c8a9a8357ec3666fae10257618
parenta2b7a1d8c8050847bd4bbb3272eac6fec3c78715 (diff)
feat(engine): add Matrix::to_column_major fn
-rw-r--r--engine/src/data_types/matrix.rs17
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