From 3f3f59e8ebd03a07a6e833044fdd45a9e7166e84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Crozet?= Date: Thu, 1 Aug 2013 18:55:42 +0200 Subject: [PATCH] Changed mod visibilities + add doc for types.rs --- src/dvec.rs | 2 +- src/nalgebra.rc | 73 ++++++++++++----------- src/types.rs | 146 +++++++++++++++++++++++++++++++++++++--------- src/vec_macros.rs | 2 +- 4 files changed, 156 insertions(+), 67 deletions(-) diff --git a/src/dvec.rs b/src/dvec.rs index 2d70e2f4..579dcd4f 100644 --- a/src/dvec.rs +++ b/src/dvec.rs @@ -52,7 +52,7 @@ impl> FromIterator for DVec { let mut res = DVec { at: ~[] }; - for param.advance |e| + foreach e in param { res.at.push(e) } res diff --git a/src/nalgebra.rc b/src/nalgebra.rc index 814c9a52..086f4937 100644 --- a/src/nalgebra.rc +++ b/src/nalgebra.rc @@ -17,15 +17,15 @@ extern mod std; extern mod extra; -mod dmat; -mod dvec; +pub mod dmat; +pub mod dvec; pub mod vec; pub mod mat; // specialization for some 1d, 2d and 3d operations -pub mod mat_spec; -pub mod vec_spec; -pub mod vec0_spec; +mod mat_spec; +mod vec_spec; +mod vec0_spec; /// Wrappers around raw matrices to restrict their behaviour. pub mod adaptors @@ -36,41 +36,40 @@ pub mod adaptors pub mod types; -pub mod num -{ - pub use traits::dim::*; - pub use traits::homogeneous::*; - pub use traits::ring::*; - pub use traits::division_ring::*; -} +// pub mod num +// { +// pub use traits::dim::*; +// pub use traits::homogeneous::*; +// pub use traits::ring::*; +// pub use traits::division_ring::*; +// } // FIXME: it would be better to hide all those from the outside! -/// Useful linear-algebra related traits. -mod traits +pub mod traits { - mod sample; - mod indexable; - mod column; - mod iterable; - mod dot; - mod cross; - mod inv; - mod transpose; - mod dim; - mod basis; - mod norm; - mod rotation; - mod translation; - mod transformation; - mod vector_space; - mod ring; - mod division_ring; - mod sub_dot; - mod rlmul; - mod scalar_op; - mod homogeneous; - mod vec_cast; - mod mat_cast; + pub mod sample; + pub mod indexable; + pub mod column; + pub mod iterable; + pub mod dot; + pub mod cross; + pub mod inv; + pub mod transpose; + pub mod dim; + pub mod basis; + pub mod norm; + pub mod rotation; + pub mod translation; + pub mod transformation; + pub mod vector_space; + pub mod ring; + pub mod division_ring; + pub mod sub_dot; + pub mod rlmul; + pub mod scalar_op; + pub mod homogeneous; + pub mod vec_cast; + pub mod mat_cast; } #[cfg(test)] diff --git a/src/types.rs b/src/types.rs index 52142663..28a0ac47 100644 --- a/src/types.rs +++ b/src/types.rs @@ -4,127 +4,217 @@ use adaptors::rotmat::Rotmat; use adaptors::transform::Transform; // 1D +/// 1-dimensional `f64`-valued vector. pub type Vec1f64 = Vec1; +/// 1-dimensional `f32`-valued vector. pub type Vec1f32 = Vec1; +/// 1-dimensional `float`-valued vector. pub type Vec1flt = Vec1; +/// 1-dimensional `f64`-valued matrix. pub type Mat1f64 = Mat1; +/// 1-dimensional `f32`-valued matrix. pub type Mat1f32 = Mat1; +/// 1-dimensional `float`-valued matrix. pub type Mat1flt = Mat1; -pub type Rot1f64 = Rotmat>; -pub type Rot1f32 = Rotmat>; -pub type Rot1flt = Rotmat>; - -pub type Iso1f64 = Transform; -pub type Iso1f32 = Transform; -pub type Iso1flt = Transform; +// /// 1-dimensional `f64`-valued rotation matrix. +// pub type Rot1f64 = Rotmat>; +// /// 1-dimensional `f32`-valued rotation matrix. +// pub type Rot1f32 = Rotmat>; +// /// 1-dimensional `float`-valued rotation matrix. +// pub type Rot1flt = Rotmat>; +// +// /// 1-dimensional `f64`-valued isometric transform. +// pub type Iso1f64 = Transform; +// /// 1-dimensional `f32`-valued isometric transform. +// pub type Iso1f32 = Transform; +// /// 1-dimensional `float`-valued isometric transform. +// pub type Iso1flt = Transform; +/// 1-dimensional `f64`-valued general transform. pub type Aff1f64 = Transform; +/// 1-dimensional `f32`-valued general transform. pub type Aff1f32 = Transform; +/// 1-dimensional `float`-valued general transform. pub type Aff1flt = Transform; // 2D +/// 2-dimensional `f64`-valued vector. pub type Vec2f64 = Vec2; +/// 2-dimensional `f32`-valued vector. pub type Vec2f32 = Vec2; +/// 2-dimensional `float`-valued vector. pub type Vec2flt = Vec2; +/// 2-dimensional `f64`-valued matrix. pub type Mat2f64 = Mat2; +/// 2-dimensional `f32`-valued matrix. pub type Mat2f32 = Mat2; +/// 2-dimensional `float`-valued matrix. pub type Mat2flt = Mat2; +/// 2-dimensional `f64`-valued rotation matrix. pub type Rot2f64 = Rotmat>; +/// 2-dimensional `f32`-valued rotation matrix. pub type Rot2f32 = Rotmat>; +/// 2-dimensional `float`-valued rotation matrix. pub type Rot2flt = Rotmat>; +/// 2-dimensional `f64`-valued isometric transform. pub type Iso2f64 = Transform; +/// 2-dimensional `f32`-valued isometric transform. pub type Iso2f32 = Transform; +/// 2-dimensional `float`-valued isometric transform. pub type Iso2flt = Transform; +/// 2-dimensional `f64`-valued general transform. pub type Aff2f64 = Transform; +/// 2-dimensional `f32`-valued general transform. pub type Aff2f32 = Transform; +/// 2-dimensional `float`-valued general transform. pub type Aff2flt = Transform; // 3D +/// 3-dimensional `f64`-valued vector. pub type Vec3f64 = Vec3; +/// 3-dimensional `f32`-valued vector. pub type Vec3f32 = Vec3; +/// 3-dimensional `float`-valued vector. pub type Vec3flt = Vec3; +/// 3-dimensional `f64`-valued matrix. pub type Mat3f64 = Mat3; +/// 3-dimensional `f32`-valued matrix. pub type Mat3f32 = Mat3; +/// 3-dimensional `float`-valued matrix. pub type Mat3flt = Mat3; +/// 3-dimensional `f64`-valued rotation matrix. pub type Rot3f64 = Rotmat>; +/// 3-dimensional `f32`-valued rotation matrix. pub type Rot3f32 = Rotmat>; +/// 3-dimensional `float`-valued rotation matrix. pub type Rot3flt = Rotmat>; +/// 3-dimensional `f64`-valued isometric transform. pub type Iso3f64 = Transform; +/// 3-dimensional `f32`-valued isometric transform. pub type Iso3f32 = Transform; +/// 3-dimensional `float`-valued isometric transform. pub type Iso3flt = Transform; +/// 3-dimensional `f64`-valued general transform. pub type Aff3f64 = Transform; +/// 3-dimensional `f32`-valued general transform. pub type Aff3f32 = Transform; +/// 3-dimensional `float`-valued general transform. pub type Aff3flt = Transform; // 4D +/// 4-dimensional `f64`-valued vector. pub type Vec4f64 = Vec4; +/// 4-dimensional `f32`-valued vector. pub type Vec4f32 = Vec4; +/// 4-dimensional `float`-valued vector. pub type Vec4flt = Vec4; +/// 4-dimensional `f64`-valued matrix. pub type Mat4f64 = Mat4; +/// 4-dimensional `f32`-valued matrix. pub type Mat4f32 = Mat4; +/// 4-dimensional `float`-valued matrix. pub type Mat4flt = Mat4; -pub type Rot4f64 = Rotmat>; -pub type Rot4f32 = Rotmat>; -pub type Rot4flt = Rotmat>; - -pub type Iso4f64 = Transform; -pub type Iso4f32 = Transform; -pub type Iso4flt = Transform; +// /// 4-dimensional `f64`-valued rotation matrix. +// pub type Rot4f64 = Rotmat>; +// /// 4-dimensional `f32`-valued rotation matrix. +// pub type Rot4f32 = Rotmat>; +// /// 4-dimensional `float`-valued rotation matrix. +// pub type Rot4flt = Rotmat>; +// +// /// 4-dimensional `f64`-valued isometric transform. +// pub type Iso4f64 = Transform; +// /// 4-dimensional `f32`-valued isometric transform. +// pub type Iso4f32 = Transform; +// /// 4-dimensional `float`-valued isometric transform. +// pub type Iso4flt = Transform; +/// 4-dimensional `f64`-valued general transform. pub type Aff4f64 = Transform; +/// 4-dimensional `f32`-valued general transform. pub type Aff4f32 = Transform; +/// 4-dimensional `float`-valued general transform. pub type Aff4flt = Transform; // 5D +/// 5-dimensional `f64`-valued vector. pub type Vec5f64 = Vec5; +/// 5-dimensional `f32`-valued vector. pub type Vec5f32 = Vec5; +/// 5-dimensional `float`-valued vector. pub type Vec5flt = Vec5; +/// 5-dimensional `f64`-valued matrix. pub type Mat5f64 = Mat5; +/// 5-dimensional `f32`-valued matrix. pub type Mat5f32 = Mat5; +/// 5-dimensional `float`-valued matrix. pub type Mat5flt = Mat5; -pub type Rot5f64 = Rotmat>; -pub type Rot5f32 = Rotmat>; -pub type Rot5flt = Rotmat>; - -pub type Iso5f64 = Transform; -pub type Iso5f32 = Transform; -pub type Iso5flt = Transform; +// /// 5-dimensional `f64`-valued rotation matrix. +// pub type Rot5f64 = Rotmat>; +// /// 5-dimensional `f32`-valued rotation matrix. +// pub type Rot5f32 = Rotmat>; +// /// 5-dimensional `float`-valued rotation matrix. +// pub type Rot5flt = Rotmat>; +// +// /// 5-dimensional `f64`-valued isometric transform. +// pub type Iso5f64 = Transform; +// /// 5-dimensional `f32`-valued isometric transform. +// pub type Iso5f32 = Transform; +// /// 5-dimensional `float`-valued isometric transform. +// pub type Iso5flt = Transform; +/// 5-dimensional `f64`-valued general transform. pub type Aff5f64 = Transform; +/// 5-dimensional `f32`-valued general transform. pub type Aff5f32 = Transform; +/// 5-dimensional `float`-valued general transform. pub type Aff5flt = Transform; // 6D +/// 6-dimensional `f64`-valued vector. pub type Vec6f64 = Vec6; +/// 6-dimensional `f32`-valued vector. pub type Vec6f32 = Vec6; +/// 6-dimensional `float`-valued vector. pub type Vec6flt = Vec6; +/// 6-dimensional `f64`-valued matrix. pub type Mat6f64 = Mat6; +/// 6-dimensional `f32`-valued matrix. pub type Mat6f32 = Mat6; +/// 6-dimensional `float`-valued matrix. pub type Mat6flt = Mat6; -pub type Rot6f64 = Rotmat>; -pub type Rot6f32 = Rotmat>; -pub type Rot6flt = Rotmat>; - -pub type Iso6f64 = Transform; -pub type Iso6f32 = Transform; -pub type Iso6flt = Transform; +// /// 6-dimensional `f64`-valued rotation matrix. +// pub type Rot6f64 = Rotmat>; +// /// 6-dimensional `f32`-valued rotation matrix. +// pub type Rot6f32 = Rotmat>; +// /// 6-dimensional `float`-valued rotation matrix. +// pub type Rot6flt = Rotmat>; +// +// /// 6-dimensional `f64`-valued isometric transform. +// pub type Iso6f64 = Transform; +// /// 6-dimensional `f32`-valued isometric transform. +// pub type Iso6f32 = Transform; +// /// 6-dimensional `float`-valued isometric transform. +// pub type Iso6flt = Transform; +/// 6-dimensional `f64`-valued general transform. pub type Aff6f64 = Transform; +/// 6-dimensional `f32`-valued general transform. pub type Aff6f32 = Transform; +/// 6-dimensional `float`-valued general transform. pub type Aff6flt = Transform; diff --git a/src/vec_macros.rs b/src/vec_macros.rs index de3f904d..23bd2116 100644 --- a/src/vec_macros.rs +++ b/src/vec_macros.rs @@ -161,7 +161,7 @@ macro_rules! basis_impl( elt = elt - self.scalar_mul(&basis_element.dot(self)); - for basis.iter().advance |v| + foreach v in basis.iter() { elt = elt - v.scalar_mul(&elt.dot(v)) }; if !elt.sqnorm().approx_eq(&Zero::zero())