Add is_zero method to Vector trait
This commit is contained in:
parent
dd973d2e49
commit
16e06c3855
5 changed files with 37 additions and 0 deletions
|
@ -43,6 +43,9 @@ fn test_vec2() {
|
|||
assert -a == Vec2::new(-1f, -2f);
|
||||
assert a.neg() == Vec2::new(-1f, -2f);
|
||||
|
||||
assert Vec2::new(0f, 0f).is_zero();
|
||||
assert !Vec2::new(1f, 1f).is_zero();
|
||||
|
||||
assert a.mul_t(f1) == Vec2::new( 1.5f, 3.0f);
|
||||
assert a.div_t(f2) == Vec2::new( 2.0f, 4.0f);
|
||||
|
||||
|
@ -183,6 +186,9 @@ fn test_vec3() {
|
|||
assert -a == Vec3::new(-1f, -2f, -3f);
|
||||
assert a.neg() == Vec3::new(-1f, -2f, -3f);
|
||||
|
||||
assert Vec3::new(0f, 0f, 0f).is_zero();
|
||||
assert !Vec3::new(1f, 1f, 1f).is_zero();
|
||||
|
||||
assert a.mul_t(f1) == Vec3::new( 1.5f, 3.0f, 4.5f);
|
||||
assert a.div_t(f2) == Vec3::new( 2.0f, 4.0f, 6.0f);
|
||||
|
||||
|
@ -325,6 +331,9 @@ fn test_vec4() {
|
|||
assert -a == Vec4::new(-1f, -2f, -3f, -4f);
|
||||
assert a.neg() == Vec4::new(-1f, -2f, -3f, -4f);
|
||||
|
||||
assert Vec4::new(0f, 0f, 0f, 0f).is_zero();
|
||||
assert !Vec4::new(1f, 1f, 1f, 1f).is_zero();
|
||||
|
||||
assert a.mul_t(f1) == Vec4::new( 1.5f, 3.0f, 4.5f, 6.0f);
|
||||
assert a.div_t(f2) == Vec4::new( 2.0f, 4.0f, 6.0f, 8.0f);
|
||||
|
||||
|
|
|
@ -91,6 +91,13 @@ pub trait NumericVector<T>: Vector<T> Neg<self> {
|
|||
*/
|
||||
static pure fn zero() -> self;
|
||||
|
||||
/**
|
||||
* # Return value
|
||||
*
|
||||
* True if the vector is equal to zero
|
||||
*/
|
||||
pure fn is_zero(&self) -> bool;
|
||||
|
||||
/**
|
||||
* # Return value
|
||||
*
|
||||
|
|
|
@ -85,6 +85,12 @@ pub impl<T:Copy Number> Vec2<T>: NumericVector<T> {
|
|||
Number::zero())
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pure fn is_zero(&self) -> bool {
|
||||
self[0] == Number::zero() &&
|
||||
self[1] == Number::zero()
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pure fn mul_t(&self, value: T) -> Vec2<T> {
|
||||
Vec2::new(self[0] * value,
|
||||
|
|
|
@ -89,6 +89,13 @@ pub impl<T:Copy Number> Vec3<T>: NumericVector<T> {
|
|||
Number::zero())
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pure fn is_zero(&self) -> bool {
|
||||
self[0] == Number::zero() &&
|
||||
self[1] == Number::zero() &&
|
||||
self[2] == Number::zero()
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pure fn mul_t(&self, value: T) -> Vec3<T> {
|
||||
Vec3::new(self[0] * value,
|
||||
|
|
|
@ -93,6 +93,14 @@ pub impl<T:Copy Number> Vec4<T>: NumericVector<T> {
|
|||
Number::zero())
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pure fn is_zero(&self) -> bool {
|
||||
self[0] == Number::zero() &&
|
||||
self[1] == Number::zero() &&
|
||||
self[2] == Number::zero() &&
|
||||
self[3] == Number::zero()
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pure fn mul_t(&self, value: T) -> Vec4<T> {
|
||||
Vec4::new(self[0] * value,
|
||||
|
|
Loading…
Reference in a new issue