1use nalgebra::{Unit, Vector3};
4
5#[allow(clippy::exhaustive_enums)]
7#[derive(Clone)]
8pub enum Side {
9 Inside(Unit<Vector3<f64>>),
11 Outside(Unit<Vector3<f64>>),
13}
14
15impl Side {
16 #[inline]
18 #[must_use]
19 pub fn new(dir: &Unit<Vector3<f64>>, norm: Unit<Vector3<f64>>) -> Self {
20 if dir.dot(&norm) < 0.0 {
21 Self::Outside(norm)
22 } else {
23 Self::Inside(-norm)
24 }
25 }
26
27 #[inline]
29 #[must_use]
30 pub const fn is_inside(&self) -> bool {
31 match *self {
32 Self::Inside(..) => true,
33 Self::Outside(..) => false,
34 }
35 }
36
37 #[inline]
40 #[must_use]
41 pub const fn norm(&self) -> &Unit<Vector3<f64>> {
42 match *self {
43 Self::Inside(ref norm) | Self::Outside(ref norm) => norm,
44 }
45 }
46}