Fixed bug and add test
This commit is contained in:
parent
2748c16f55
commit
c32a378caf
@ -71,10 +71,10 @@ macro_rules! make_bounding_box {
|
|||||||
pub fn intersection(&self, other: &$name<T>) -> $name<T> {
|
pub fn intersection(&self, other: &$name<T>) -> $name<T> {
|
||||||
let mut ret = self.clone();
|
let mut ret = self.clone();
|
||||||
for i in 0..$size {
|
for i in 0..$size {
|
||||||
if ret.min()[i] > other.min()[i] {
|
if ret.min()[i] < other.min()[i] {
|
||||||
ret.min_mut()[i] = other.min()[i];
|
ret.min_mut()[i] = other.min()[i];
|
||||||
}
|
}
|
||||||
if ret.max()[i] < other.max()[i] {
|
if ret.max()[i] > other.max()[i] {
|
||||||
ret.max_mut()[i] = other.max()[i];
|
ret.max_mut()[i] = other.max()[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -101,6 +101,9 @@ mod tests {
|
|||||||
use math::vector::Vector2;
|
use math::vector::Vector2;
|
||||||
use math::bounding_box::BoundingBox2;
|
use math::bounding_box::BoundingBox2;
|
||||||
|
|
||||||
|
use math::vector::Vector3;
|
||||||
|
use math::bounding_box::BoundingBox3;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn initialization() {
|
fn initialization() {
|
||||||
use std::f64::{MIN, MAX};
|
use std::f64::{MIN, MAX};
|
||||||
@ -121,4 +124,26 @@ mod tests {
|
|||||||
assert_delta!(bounding_box.max().x(), v1.x(), 0.01);
|
assert_delta!(bounding_box.max().x(), v1.x(), 0.01);
|
||||||
assert_delta!(bounding_box.max().y(), v2.y(), 0.01);
|
assert_delta!(bounding_box.max().y(), v2.y(), 0.01);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn intersection() {
|
||||||
|
let b1 = BoundingBox3::new(
|
||||||
|
Vector3::new(0, 0, 0),
|
||||||
|
Vector3::new(2, 2, 2),
|
||||||
|
);
|
||||||
|
|
||||||
|
let b2 = BoundingBox3::new(
|
||||||
|
Vector3::new(1, 1, 1),
|
||||||
|
Vector3::new(3, 3, 3),
|
||||||
|
);
|
||||||
|
|
||||||
|
let b = b1.intersection(&b2);
|
||||||
|
assert_eq!(b.min().x(), 1);
|
||||||
|
assert_eq!(b.min().y(), 1);
|
||||||
|
assert_eq!(b.min().z(), 1);
|
||||||
|
|
||||||
|
assert_eq!(b.max().x(), 2);
|
||||||
|
assert_eq!(b.max().y(), 2);
|
||||||
|
assert_eq!(b.max().z(), 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user