#![cfg(all(feature = "geometry-select", feature = "properties"))]
mod frame;
mod read;
pub(crate) use frame::{FrameError, RigidFrame};
pub(crate) use read::{
enumeration, governing, positive_length, type_object, world_transform, ReadError,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Side {
Left,
Right,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct Sector {
pub center: [f64; 3],
pub radius: f64,
pub start: [f64; 3],
pub axis: [f64; 3],
pub sweep: f64,
}
impl Sector {
#[must_use]
pub fn direction_at(&self, angle: f64) -> [f64; 3] {
frame::rotate(self.start, self.axis, angle)
}
#[must_use]
pub fn end(&self) -> [f64; 3] {
self.direction_at(self.sweep)
}
}