Add (pointwise) Add and Sub impl for matrices.
This commit is contained in:
parent
b08a8384ae
commit
037cf95542
54
src/mat.rs
54
src/mat.rs
|
@ -37,6 +37,8 @@ pub struct Mat1<N> {
|
||||||
|
|
||||||
mat_impl!(Mat1, m11)
|
mat_impl!(Mat1, m11)
|
||||||
mat_cast_impl!(Mat1, m11)
|
mat_cast_impl!(Mat1, m11)
|
||||||
|
add_impl!(Mat1, m11)
|
||||||
|
sub_impl!(Mat1, m11)
|
||||||
one_impl!(Mat1, _1)
|
one_impl!(Mat1, _1)
|
||||||
iterable_impl!(Mat1, 1)
|
iterable_impl!(Mat1, 1)
|
||||||
iterable_mut_impl!(Mat1, 1)
|
iterable_mut_impl!(Mat1, 1)
|
||||||
|
@ -65,6 +67,10 @@ mat_impl!(Mat2, m11, m12,
|
||||||
m21, m22)
|
m21, m22)
|
||||||
mat_cast_impl!(Mat2, m11, m12,
|
mat_cast_impl!(Mat2, m11, m12,
|
||||||
m21, m22)
|
m21, m22)
|
||||||
|
add_impl!(Mat2, m11, m12,
|
||||||
|
m21, m22)
|
||||||
|
sub_impl!(Mat2, m11, m12,
|
||||||
|
m21, m22)
|
||||||
one_impl!(Mat2, _1, _0,
|
one_impl!(Mat2, _1, _0,
|
||||||
_0, _1)
|
_0, _1)
|
||||||
iterable_impl!(Mat2, 2)
|
iterable_impl!(Mat2, 2)
|
||||||
|
@ -97,6 +103,12 @@ mat_impl!(Mat3, m11, m12, m13,
|
||||||
mat_cast_impl!(Mat3, m11, m12, m13,
|
mat_cast_impl!(Mat3, m11, m12, m13,
|
||||||
m21, m22, m23,
|
m21, m22, m23,
|
||||||
m31, m32, m33)
|
m31, m32, m33)
|
||||||
|
add_impl!(Mat3, m11, m12, m13,
|
||||||
|
m21, m22, m23,
|
||||||
|
m31, m32, m33)
|
||||||
|
sub_impl!(Mat3, m11, m12, m13,
|
||||||
|
m21, m22, m23,
|
||||||
|
m31, m32, m33)
|
||||||
one_impl!(Mat3, _1, _0, _0,
|
one_impl!(Mat3, _1, _0, _0,
|
||||||
_0, _1, _0,
|
_0, _1, _0,
|
||||||
_0, _0, _1)
|
_0, _0, _1)
|
||||||
|
@ -137,6 +149,18 @@ mat_cast_impl!(Mat4,
|
||||||
m31, m32, m33, m34,
|
m31, m32, m33, m34,
|
||||||
m41, m42, m43, m44
|
m41, m42, m43, m44
|
||||||
)
|
)
|
||||||
|
add_impl!(Mat4,
|
||||||
|
m11, m12, m13, m14,
|
||||||
|
m21, m22, m23, m24,
|
||||||
|
m31, m32, m33, m34,
|
||||||
|
m41, m42, m43, m44
|
||||||
|
)
|
||||||
|
sub_impl!(Mat4,
|
||||||
|
m11, m12, m13, m14,
|
||||||
|
m21, m22, m23, m24,
|
||||||
|
m31, m32, m33, m34,
|
||||||
|
m41, m42, m43, m44
|
||||||
|
)
|
||||||
one_impl!(Mat4, _1, _0, _0, _0,
|
one_impl!(Mat4, _1, _0, _0, _0,
|
||||||
_0, _1, _0, _0,
|
_0, _1, _0, _0,
|
||||||
_0, _0, _1, _0,
|
_0, _0, _1, _0,
|
||||||
|
@ -188,6 +212,20 @@ one_impl!(Mat5,
|
||||||
_0, _0, _0, _1, _0,
|
_0, _0, _0, _1, _0,
|
||||||
_0, _0, _0, _0, _1
|
_0, _0, _0, _0, _1
|
||||||
)
|
)
|
||||||
|
add_impl!(Mat5,
|
||||||
|
m11, m12, m13, m14, m15,
|
||||||
|
m21, m22, m23, m24, m25,
|
||||||
|
m31, m32, m33, m34, m35,
|
||||||
|
m41, m42, m43, m44, m45,
|
||||||
|
m51, m52, m53, m54, m55
|
||||||
|
)
|
||||||
|
sub_impl!(Mat5,
|
||||||
|
m11, m12, m13, m14, m15,
|
||||||
|
m21, m22, m23, m24, m25,
|
||||||
|
m31, m32, m33, m34, m35,
|
||||||
|
m41, m42, m43, m44, m45,
|
||||||
|
m51, m52, m53, m54, m55
|
||||||
|
)
|
||||||
iterable_impl!(Mat5, 5)
|
iterable_impl!(Mat5, 5)
|
||||||
iterable_mut_impl!(Mat5, 5)
|
iterable_mut_impl!(Mat5, 5)
|
||||||
dim_impl!(Mat5, 5)
|
dim_impl!(Mat5, 5)
|
||||||
|
@ -231,6 +269,22 @@ mat_cast_impl!(Mat6,
|
||||||
m51, m52, m53, m54, m55, m56,
|
m51, m52, m53, m54, m55, m56,
|
||||||
m61, m62, m63, m64, m65, m66
|
m61, m62, m63, m64, m65, m66
|
||||||
)
|
)
|
||||||
|
add_impl!(Mat6,
|
||||||
|
m11, m12, m13, m14, m15, m16,
|
||||||
|
m21, m22, m23, m24, m25, m26,
|
||||||
|
m31, m32, m33, m34, m35, m36,
|
||||||
|
m41, m42, m43, m44, m45, m46,
|
||||||
|
m51, m52, m53, m54, m55, m56,
|
||||||
|
m61, m62, m63, m64, m65, m66
|
||||||
|
)
|
||||||
|
sub_impl!(Mat6,
|
||||||
|
m11, m12, m13, m14, m15, m16,
|
||||||
|
m21, m22, m23, m24, m25, m26,
|
||||||
|
m31, m32, m33, m34, m35, m36,
|
||||||
|
m41, m42, m43, m44, m45, m46,
|
||||||
|
m51, m52, m53, m54, m55, m56,
|
||||||
|
m61, m62, m63, m64, m65, m66
|
||||||
|
)
|
||||||
one_impl!(Mat6,
|
one_impl!(Mat6,
|
||||||
_1, _0, _0, _0, _0, _0,
|
_1, _0, _0, _0, _0, _0,
|
||||||
_0, _1, _0, _0, _0, _0,
|
_0, _1, _0, _0, _0, _0,
|
||||||
|
|
|
@ -25,6 +25,28 @@ macro_rules! mat_cast_impl(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
macro_rules! add_impl(
|
||||||
|
($t: ident, $comp0: ident $(,$compN: ident)*) => (
|
||||||
|
impl<N: Add<N, N>> Add<$t<N>, $t<N>> for $t<N> {
|
||||||
|
#[inline]
|
||||||
|
pub fn add(&self, other: &$t<N>) -> $t<N> {
|
||||||
|
$t::new(self.$comp0 + other.$comp0 $(, self.$compN + other.$compN )*)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
macro_rules! sub_impl(
|
||||||
|
($t: ident, $comp0: ident $(,$compN: ident)*) => (
|
||||||
|
impl<N: Sub<N, N>> Sub<$t<N>, $t<N>> for $t<N> {
|
||||||
|
#[inline]
|
||||||
|
pub fn sub(&self, other: &$t<N>) -> $t<N> {
|
||||||
|
$t::new(self.$comp0 - other.$comp0 $(, self.$compN - other.$compN )*)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
macro_rules! iterable_impl(
|
macro_rules! iterable_impl(
|
||||||
($t: ident, $dim: expr) => (
|
($t: ident, $dim: expr) => (
|
||||||
impl<N> Iterable<N> for $t<N> {
|
impl<N> Iterable<N> for $t<N> {
|
||||||
|
|
Loading…
Reference in New Issue