Add Vec0.
This commit is contained in:
parent
831f561441
commit
c37d58f3fb
38
src/vec.rs
38
src/vec.rs
|
@ -19,6 +19,44 @@ use traits::indexable::Indexable;
|
||||||
|
|
||||||
mod vec_impl;
|
mod vec_impl;
|
||||||
|
|
||||||
|
#[deriving(Ord, ToStr)]
|
||||||
|
pub struct Vec0<N>
|
||||||
|
{ at: [N, ..0] }
|
||||||
|
|
||||||
|
impl<N: Clone> Vec0<N>
|
||||||
|
{
|
||||||
|
#[inline]
|
||||||
|
pub fn new_repeat(_: N) -> Vec0<N>
|
||||||
|
{ Vec0 { at: [ ] } }
|
||||||
|
}
|
||||||
|
|
||||||
|
clone_impl!(Vec0)
|
||||||
|
deep_clone_impl!(Vec0)
|
||||||
|
new_impl!(Vec0, 0)
|
||||||
|
indexable_impl!(Vec0)
|
||||||
|
dim_impl!(Vec0, 0)
|
||||||
|
eq_impl!(Vec0)
|
||||||
|
// (specialized) basis_impl!(Vec0, 0)
|
||||||
|
add_impl!(Vec0)
|
||||||
|
sub_impl!(Vec0)
|
||||||
|
neg_impl!(Vec0)
|
||||||
|
dot_impl!(Vec0, 0)
|
||||||
|
sub_dot_impl!(Vec0, 0)
|
||||||
|
scalar_mul_impl!(Vec0, 0)
|
||||||
|
scalar_div_impl!(Vec0, 0)
|
||||||
|
scalar_add_impl!(Vec0, 0)
|
||||||
|
scalar_sub_impl!(Vec0, 0)
|
||||||
|
translation_impl!(Vec0)
|
||||||
|
translatable_impl!(Vec0)
|
||||||
|
norm_impl!(Vec0, 0)
|
||||||
|
approx_eq_impl!(Vec0)
|
||||||
|
zero_impl!(Vec0)
|
||||||
|
one_impl!(Vec0)
|
||||||
|
bounded_impl!(Vec0)
|
||||||
|
iterable_impl!(Vec0)
|
||||||
|
iterable_mut_impl!(Vec0)
|
||||||
|
to_homogeneous_impl!(Vec0, Vec1)
|
||||||
|
from_homogeneous_impl!(Vec1, Vec0, 1)
|
||||||
|
|
||||||
#[deriving(Ord, ToStr)]
|
#[deriving(Ord, ToStr)]
|
||||||
pub struct Vec1<N>
|
pub struct Vec1<N>
|
||||||
|
|
|
@ -1,10 +1,28 @@
|
||||||
|
use std::vec::{VecIterator, VecMutIterator};
|
||||||
|
use std::iterator::FromIterator;
|
||||||
use std::num::{Zero, One, abs};
|
use std::num::{Zero, One, abs};
|
||||||
use traits::basis::Basis;
|
use traits::basis::Basis;
|
||||||
use traits::cross::Cross;
|
use traits::cross::Cross;
|
||||||
use traits::division_ring::DivisionRing;
|
use traits::division_ring::DivisionRing;
|
||||||
use traits::norm::Norm;
|
use traits::norm::Norm;
|
||||||
use traits::sample::UniformSphereSample;
|
use traits::sample::UniformSphereSample;
|
||||||
use vec::{Vec1, Vec2, Vec3};
|
use traits::iterable::FromAnyIterator;
|
||||||
|
use vec::{Vec0, Vec1, Vec2, Vec3};
|
||||||
|
|
||||||
|
impl<N: Clone> FromAnyIterator<N> for Vec0<N>
|
||||||
|
{
|
||||||
|
fn from_iterator<'l>(_: &mut VecIterator<'l, N>) -> Vec0<N>
|
||||||
|
{ Vec0 { at: [ ] } }
|
||||||
|
|
||||||
|
fn from_mut_iterator<'l>(_: &mut VecMutIterator<'l, N>) -> Vec0<N>
|
||||||
|
{ Vec0 { at: [ ] } }
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<N, Iter: Iterator<N>> FromIterator<N, Iter> for Vec0<N>
|
||||||
|
{
|
||||||
|
fn from_iterator(_: &mut Iter) -> Vec0<N>
|
||||||
|
{ Vec0 { at: [ ] } }
|
||||||
|
}
|
||||||
|
|
||||||
impl<N: Mul<N, N> + Sub<N, N>> Cross<Vec1<N>> for Vec2<N>
|
impl<N: Mul<N, N> + Sub<N, N>> Cross<Vec1<N>> for Vec2<N>
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue