1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
use std::f32;
use vec3f::Vec3f;
pub struct Aabb3f {
pub min: Vec3f,
pub max: Vec3f
}
impl Aabb3f {
pub fn new() -> Aabb3f {
Aabb3f {
min: Vec3f::from_scalar(f32::INFINITY),
max: Vec3f::from_scalar(f32::NEG_INFINITY)
}
}
pub fn from_point(point: Vec3f) -> Aabb3f {
Aabb3f {
min: point,
max: point
}
}
pub fn contains_point(&self, point: Vec3f) -> bool {
(self.min.x <= point.x &&
self.min.y <= point.y &&
self.min.z <= point.z &&
self.max.x >= point.x &&
self.max.y >= point.y &&
self.max.z >= point.z)
}
}
#[test]
fn test_aabb3f_contains_point() {
use vec3f::ZERO_3F;
assert!(!Aabb3f::new().contains_point(ZERO_3F));
assert!(Aabb3f::from_point(ZERO_3F).contains_point(ZERO_3F));
}