ncollide3d/bounding_volume/
aabb_support_map.rs1use crate::bounding_volume;
2use crate::bounding_volume::{HasBoundingVolume, AABB};
3use crate::math::Isometry;
4use crate::shape::{Capsule, Segment};
5#[cfg(feature = "dim3")]
6use crate::shape::{Cone, Cylinder};
7use na::RealField;
8
9#[cfg(feature = "dim3")]
10impl<N: RealField + Copy> HasBoundingVolume<N, AABB<N>> for Cone<N> {
11 #[inline]
12 fn bounding_volume(&self, m: &Isometry<N>) -> AABB<N> {
13 bounding_volume::support_map_aabb(m, self)
14 }
15
16 #[inline]
17 fn local_bounding_volume(&self) -> AABB<N> {
18 bounding_volume::local_support_map_aabb(self)
19 }
20}
21
22#[cfg(feature = "dim3")]
23impl<N: RealField + Copy> HasBoundingVolume<N, AABB<N>> for Cylinder<N> {
24 #[inline]
25 fn bounding_volume(&self, m: &Isometry<N>) -> AABB<N> {
26 bounding_volume::support_map_aabb(m, self)
27 }
28
29 #[inline]
30 fn local_bounding_volume(&self) -> AABB<N> {
31 bounding_volume::local_support_map_aabb(self)
32 }
33}
34
35impl<N: RealField + Copy> HasBoundingVolume<N, AABB<N>> for Capsule<N> {
36 #[inline]
37 fn bounding_volume(&self, m: &Isometry<N>) -> AABB<N> {
38 bounding_volume::support_map_aabb(m, self)
39 }
40
41 #[inline]
42 fn local_bounding_volume(&self) -> AABB<N> {
43 bounding_volume::local_support_map_aabb(self)
44 }
45}
46
47impl<N: RealField + Copy> HasBoundingVolume<N, AABB<N>> for Segment<N> {
48 #[inline]
49 fn bounding_volume(&self, m: &Isometry<N>) -> AABB<N> {
50 bounding_volume::support_map_aabb(m, self)
52 }
53
54 #[inline]
55 fn local_bounding_volume(&self) -> AABB<N> {
56 bounding_volume::local_support_map_aabb(self)
57 }
58}