axiolid_primitive/
half_space.rs1use axiolid_core::{Plane3, Scalar};
4
5#[derive(Debug, Clone, Copy, PartialEq)]
7#[cfg_attr(
8 feature = "serde",
9 derive(serde::Serialize, serde::Deserialize),
10 serde(deny_unknown_fields)
11)]
12pub struct HalfSpace {
13 pub boundary: Plane3,
15 pub agreement: bool,
17}
18
19#[derive(Debug, Clone, Copy, PartialEq)]
22pub struct ClipMargin(Scalar);
23
24impl ClipMargin {
25 pub fn new(factor: Scalar) -> Option<Self> {
27 (factor.is_finite() && factor > 0.0).then_some(Self(factor))
28 }
29
30 pub const fn factor(self) -> Scalar {
32 self.0
33 }
34}