Implement matrix to matrix conversions
This commit is contained in:
parent
15b69686b0
commit
038b200338
1 changed files with 37 additions and 5 deletions
|
@ -39,11 +39,6 @@ approx_eq!(impl<S> Mat2<S>)
|
|||
approx_eq!(impl<S> Mat3<S>)
|
||||
approx_eq!(impl<S> Mat4<S>)
|
||||
|
||||
// Conversion traits
|
||||
pub trait ToMat2<S: Clone + Num + Ord> { fn to_mat2(&self) -> Mat2<S>; }
|
||||
pub trait ToMat3<S: Clone + Num + Ord> { fn to_mat3(&self) -> Mat3<S>; }
|
||||
pub trait ToMat4<S: Clone + Num + Ord> { fn to_mat4(&self) -> Mat4<S>; }
|
||||
|
||||
impl<S: Clone + Num + Ord> Mat2<S> {
|
||||
#[inline]
|
||||
pub fn new(c0r0: S, c0r1: S,
|
||||
|
@ -571,6 +566,43 @@ for Mat4<S>
|
|||
}
|
||||
}
|
||||
|
||||
// Conversion traits
|
||||
pub trait ToMat2<S: Clone + Num + Ord> { fn to_mat2(&self) -> Mat2<S>; }
|
||||
pub trait ToMat3<S: Clone + Num + Ord> { fn to_mat3(&self) -> Mat3<S>; }
|
||||
pub trait ToMat4<S: Clone + Num + Ord> { fn to_mat4(&self) -> Mat4<S>; }
|
||||
|
||||
impl<S: Clone + Float> ToMat3<S> for Mat2<S> {
|
||||
/// Clone the elements of a 2-dimensional matrix into the top corner of a
|
||||
/// 3-dimensional identity matrix.
|
||||
fn to_mat3(&self) -> Mat3<S> {
|
||||
Mat3::new(self.cr(0, 0).clone(), self.cr(0, 1).clone(), zero(),
|
||||
self.cr(1, 0).clone(), self.cr(1, 1).clone(), zero(),
|
||||
zero(), zero(), one())
|
||||
}
|
||||
}
|
||||
|
||||
impl<S: Clone + Float> ToMat4<S> for Mat2<S> {
|
||||
/// Clone the elements of a 2-dimensional matrix into the top corner of a
|
||||
/// 4-dimensional identity matrix.
|
||||
fn to_mat4(&self) -> Mat4<S> {
|
||||
Mat4::new(self.cr(0, 0).clone(), self.cr(0, 1).clone(), zero(), zero(),
|
||||
self.cr(1, 0).clone(), self.cr(1, 1).clone(), zero(), zero(),
|
||||
zero(), zero(), one(), zero(),
|
||||
zero(), zero(), zero(), one())
|
||||
}
|
||||
}
|
||||
|
||||
impl<S: Clone + Float> ToMat4<S> for Mat3<S> {
|
||||
/// Clone the elements of a 3-dimensional matrix into the top corner of a
|
||||
/// 4-dimensional identity matrix.
|
||||
fn to_mat4(&self) -> Mat4<S> {
|
||||
Mat4::new(self.cr(0, 0).clone(), self.cr(0, 1).clone(), self.cr(0, 2).clone(), zero(),
|
||||
self.cr(1, 0).clone(), self.cr(1, 1).clone(), self.cr(1, 2).clone(), zero(),
|
||||
self.cr(2, 0).clone(), self.cr(2, 1).clone(), self.cr(2, 2).clone(), zero(),
|
||||
zero(), zero(), zero(), one())
|
||||
}
|
||||
}
|
||||
|
||||
impl<S:Clone + Float> ToQuat<S> for Mat3<S> {
|
||||
/// Convert the matrix to a quaternion
|
||||
fn to_quat(&self) -> Quat<S> {
|
||||
|
|
Loading…
Reference in a new issue