Skip to main content

ecitygml_core/model/core/
implicit_geometry.rs

1use egml::model::geometry::primitives::Point;
2use egml::model::geometry::{DirectPosition, Envelope};
3use nalgebra::Isometry3;
4
5#[derive(Debug, Clone, PartialEq, Default)]
6pub struct ImplicitGeometry {
7    pub reference_point: Point,
8}
9
10impl ImplicitGeometry {
11    pub fn new(reference_point: Point) -> Self {
12        Self { reference_point }
13    }
14
15    pub fn points(&self) -> Vec<&DirectPosition> {
16        vec![&self.reference_point.pos()]
17    }
18
19    pub fn apply_transform(&mut self, m: &Isometry3<f64>) {
20        self.reference_point.apply_transform(m);
21    }
22
23    pub fn compute_envelope(&self) -> Option<Envelope> {
24        // TODO: compute envelope containing referenced geometry
25        Some(self.reference_point.compute_envelope())
26    }
27}