rapier2d/utils/
matrix_column.rs1use crate::math::{Matrix, Vector};
4use na::Scalar;
5
6pub trait MatrixColumn {
8 type Column;
10 fn column(&self, i: usize) -> Self::Column;
12}
13
14impl<T: Copy> MatrixColumn for [T; 2] {
15 type Column = T;
16 fn column(&self, i: usize) -> Self::Column {
17 self[i]
18 }
19}
20
21impl MatrixColumn for Matrix {
22 type Column = Vector;
23 #[inline]
24 fn column(&self, i: usize) -> Self::Column {
25 self.col(i)
26 }
27}
28
29impl<T: Scalar> MatrixColumn for na::Matrix3<T> {
30 type Column = na::Vector3<T>;
31 #[inline]
32 fn column(&self, i: usize) -> Self::Column {
33 self.column(i).into_owned()
34 }
35}
36
37impl<T: Scalar> MatrixColumn for na::Matrix2<T> {
38 type Column = na::Vector2<T>;
39 #[inline]
40 fn column(&self, i: usize) -> Self::Column {
41 self.column(i).into_owned()
42 }
43}