Struct CanonicalGeometryV1
pub struct CanonicalGeometryV1 { /* private fields */ }Description
Opaque canonical content and identity of one geometry revision.
This value can only be derived from one admitted exact kind or from its kind-specific bounded canonical replay. It has no public kind catalogue and no constructor accepting a caller-provided digest or entity-set facts.
Implementations§
§impl CanonicalGeometryV1
impl CanonicalGeometryV1
pub fn cartesian_region_bounds(
&self,
region: &NamedEntitySet,
) -> Option<Vec<[f64; 2]>>
pub fn cartesian_region_bounds( &self, region: &NamedEntitySet, ) -> Option<Vec<[f64; 2]>>
Exact Cartesian bounds of one selected full-dimensional region.
Recognizes canonical boxes and individual axis-aligned rectangular faces, including subdivided straight sides. Curved, nonrectangular, grouped, and foreign selections have no admitted Cartesian product interpretation.
§impl CanonicalGeometryV1
impl CanonicalGeometryV1
pub fn from_convex_polyhedra(
vertices_m: Vec<[f64; 3]>,
outward_shells: Vec<Vec<Vec<usize>>>,
entity_sets: Vec<NamedEntitySet>,
tolerance_m: f64,
) -> Result<CanonicalGeometryV1, Diagnostic>
pub fn from_convex_polyhedra( vertices_m: Vec<[f64; 3]>, outward_shells: Vec<Vec<Vec<usize>>>, entity_sets: Vec<NamedEntitySet>, tolerance_m: f64, ) -> Result<CanonicalGeometryV1, Diagnostic>
Admit finite, closed convex polyhedral volumes with disjoint interiors.
Coordinates and positive classification precision are metres. Each shell contains its parent’s outward-oriented polygon vertex loops. Shell and vertex order and loop rotation are canonicalized; reversed outward orientation is rejected. Facets shared by parents have one exact identity and opposite incidences. Curved, nonconvex, open, degenerate, and overlapping volumes are outside this family. No numerical tessellation is retained.
As with PlanarRegion::new, named members address the resulting canonical
enumerations, never input-relative indices: sorted vertices, sorted
undirected edge pairs, sorted undirected facet loops, and sorted shells.
Facet loops start at their least vertex; the lexicographically smaller
direction orders global facets. Shells sort their outward loops.
Dimensions 0, 1, 2, and 3 name vertices, edges, facets, and volumes.
§Errors
Returns EQ0901 for invalid topology, geometry, precision, membership, or
resource excess. Default canonical limits and a fixed 16,777,216 geometric
floating predicate and 262,144 exact binary-rational predicate budgets
also bound construction. Precision conditions edge lengths and interior
clearance; it never excuses nonplanarity, nonconvexity, or overlap.
pub fn polyhedral_vertices(&self) -> Option<&[[f64; 3]]>
pub fn polyhedral_vertices(&self) -> Option<&[[f64; 3]]>
Canonical exact polyhedral vertices in metres, without mesh vertices.
pub fn polyhedral_volume_facets(&self, volume: usize) -> Option<&[usize]>
pub fn polyhedral_volume_facets(&self, volume: usize) -> Option<&[usize]>
Canonically ordered exact facets incident to one canonical volume.
pub fn polyhedral_outward_facet(
&self,
facet: usize,
volume: usize,
) -> Option<&[usize]>
pub fn polyhedral_outward_facet( &self, facet: usize, volume: usize, ) -> Option<&[usize]>
Exact facet vertex loop oriented outward relative to its selected parent.
Returns None for a foreign facet/volume incidence or another family.
§impl CanonicalGeometryV1
impl CanonicalGeometryV1
pub fn replay_canonical(
bytes: &[u8],
limits: CanonicalGeometryLimits,
) -> Result<CanonicalGeometryV1, Diagnostic>
pub fn replay_canonical( bytes: &[u8], limits: CanonicalGeometryLimits, ) -> Result<CanonicalGeometryV1, Diagnostic>
Decode any current canonical Geometry family through its owning decoder.
The explicit child schema selects only among concurrently admitted Geometry families; it does not infer or migrate historical generations.
§Errors
Returns EQ0901 for malformed, oversized, unknown, or noncanonical bytes.
pub fn ambient_dimension(&self) -> usize
pub fn ambient_dimension(&self) -> usize
Dimension of the physical coordinate embedding.
pub fn topological_dimension(&self) -> usize
pub fn topological_dimension(&self) -> usize
Highest topological dimension represented by the geometry.
pub fn entity_set_dimension(&self, name: &str) -> Option<usize>
pub fn entity_set_dimension(&self, name: &str) -> Option<usize>
Topological dimension of one exact entity-set name.
pub fn cartesian_boundary_embedding(
&self,
boundary: &NamedEntitySet,
parent: &NamedEntitySet,
) -> Option<CartesianBoundaryEmbedding>
pub fn cartesian_boundary_embedding( &self, boundary: &NamedEntitySet, parent: &NamedEntitySet, ) -> Option<CartesianBoundaryEmbedding>
Exact Cartesian embedding of one complete box side and its parent.
Primitive topology or exact authored rectangle coordinates supply the axis
and outward side. Grouped, incomplete, curved, nonrectangular, foreign,
or stale selections return None.
pub fn constant_parent_outward_normal(&self, name: &str) -> Option<[f64; 2]>
pub fn constant_parent_outward_normal(&self, name: &str) -> Option<[f64; 2]>
Exact constant parent-outward normal of one supported boundary set.
A classification-free rectangle derives all four axis normals from its
canonical boundary topology. The curved families expose a normal only
for exact single-edge x-lower and x-upper sets. A circular member,
multi-side group, and unsupported geometry return None. Authored planar
rectangles derive normals only for complete exact parent-relative sides;
callers must not infer a catalogue from entity indices.
pub fn from_region(
region: &PlanarRegion,
) -> Result<CanonicalGeometryV1, Diagnostic>
pub fn from_region( region: &PlanarRegion, ) -> Result<CanonicalGeometryV1, Diagnostic>
Derive canonical bytes and identity from one validated region.
§Errors
Returns EQ0901 if canonical JSON serialization unexpectedly fails.
pub fn decode_canonical(
bytes: &[u8],
limits: CanonicalGeometryLimits,
) -> Result<CanonicalGeometryV1, Diagnostic>
pub fn decode_canonical( bytes: &[u8], limits: CanonicalGeometryLimits, ) -> Result<CanonicalGeometryV1, Diagnostic>
Decode one bounded, byte-for-byte canonical geometry definition.
The input is not retained. It is parsed, resource-checked, revalidated
through PlanarRegion::new, reconstructed from that region, and
accepted only when the reconstructed bytes equal the input exactly.
§Errors
Returns EQ0901 for malformed or unknown wire data, resource excess,
invalid geometry, or any noncanonical encoding.
pub fn from_circular_hole(
bounds: [[f64; 2]; 2],
circle_center: [f64; 2],
circle_radius_m: f64,
entity_sets: Vec<NamedEntitySet>,
) -> Result<CanonicalGeometryV1, Diagnostic>
pub fn from_circular_hole( bounds: [[f64; 2]; 2], circle_center: [f64; 2], circle_radius_m: f64, entity_sets: Vec<NamedEntitySet>, ) -> Result<CanonicalGeometryV1, Diagnostic>
Construct one exact axis-aligned rectangle-minus-circle geometry.
The current content identity has strict positive clearance and complete named edge/face membership, with no approximation tolerance or provenance.
§Errors
Returns EQ0901 for invalid exact geometry or entity-set meaning.
pub fn from_circular_hole_named_roles(
bounds: [[f64; 2]; 2],
circle_center: [f64; 2],
circle_radius_m: f64,
region: &str,
x_lower: &str,
x_upper: &str,
y_lower: &str,
y_upper: &str,
hole: &str,
) -> Result<CanonicalGeometryV1, Diagnostic>
pub fn from_circular_hole_named_roles( bounds: [[f64; 2]; 2], circle_center: [f64; 2], circle_radius_m: f64, region: &str, x_lower: &str, x_upper: &str, y_lower: &str, y_upper: &str, hole: &str, ) -> Result<CanonicalGeometryV1, Diagnostic>
Construct one exact rectangle-minus-circle geometry from semantic roles.
Equal boundary names group their fixed roles into one entity set.
§Errors
Returns EQ0901 for invalid exact geometry or role meaning.
pub fn decode_circular_hole_canonical(
bytes: &[u8],
limits: CanonicalGeometryLimits,
) -> Result<CanonicalGeometryV1, Diagnostic>
pub fn decode_circular_hole_canonical( bytes: &[u8], limits: CanonicalGeometryLimits, ) -> Result<CanonicalGeometryV1, Diagnostic>
Decode the accepted circular-hole wire without widening the straight decoder.
§Errors
Returns EQ0901 for malformed, unknown, excessive, invalid, or
noncanonical circular-hole bytes.
pub const fn region(&self) -> Option<&PlanarRegion>
pub const fn region(&self) -> Option<&PlanarRegion>
Validated straight-edged region content, if this kind has one.
An exact curved geometry never fabricates its numerical chordal realization as exact region meaning.
pub const fn planar_rectangle_bounds(&self) -> Option<&[[f64; 2]; 2]>
pub const fn planar_rectangle_bounds(&self) -> Option<&[[f64; 2]; 2]>
Exact Cartesian bounds for the classification-free rectangle kind.
pub fn cartesian_box_bounds(&self) -> Option<&[[f64; 2]]>
pub fn cartesian_box_bounds(&self) -> Option<&[[f64; 2]]>
Exact bounds for the classification-free Cartesian box kind.
pub const fn circular_hole_bounds(&self) -> Option<&[[f64; 2]; 2]>
pub const fn circular_hole_bounds(&self) -> Option<&[[f64; 2]; 2]>
Exact axis-aligned bounds for the admitted circular-hole kind.
pub const fn circular_hole_center(&self) -> Option<[f64; 2]>
pub const fn circular_hole_center(&self) -> Option<[f64; 2]>
Exact circle centre for the admitted circular-hole kind.
pub const fn circular_hole_radius_m(&self) -> Option<f64>
pub const fn circular_hole_radius_m(&self) -> Option<f64>
Exact circle radius for the admitted circular-hole kind.
pub const fn classification_tolerance_m(&self) -> Option<f64>
pub const fn classification_tolerance_m(&self) -> Option<f64>
Producer classification precision in metres, when this kind owns one.
Straight-edged planar and convex-polyhedral kinds retain their
classification precision. Analytic kinds, including circular holes,
carry no classification policy and return None.
pub fn entity_sets(&self) -> &[NamedEntitySet]
pub fn entity_sets(&self) -> &[NamedEntitySet]
Canonically ordered named exact entity sets.
pub fn entity_set(&self, name: &str) -> Option<&NamedEntitySet>
pub fn entity_set(&self, name: &str) -> Option<&NamedEntitySet>
One exact named entity set.
pub fn canonical_bytes(&self) -> &[u8] ⓘ
pub fn canonical_bytes(&self) -> &[u8] ⓘ
Exact compact canonical JSON bytes.
pub const fn digest_bytes(&self) -> [u8; 32]
pub const fn digest_bytes(&self) -> [u8; 32]
Complete domain-separated SHA-256 identity bytes.
pub fn decode_cartesian_box_v1_canonical(
bytes: &[u8],
limits: CanonicalGeometryLimits,
) -> Result<CanonicalGeometryV1, Diagnostic>
pub fn decode_cartesian_box_v1_canonical( bytes: &[u8], limits: CanonicalGeometryLimits, ) -> Result<CanonicalGeometryV1, Diagnostic>
Decode the exact Cartesian interval/rectangle/box wire.
pub const fn planar_adjacent_rectangle_partition(
&self,
) -> Option<(&[[f64; 2]; 2], f64)>
pub const fn planar_adjacent_rectangle_partition( &self, ) -> Option<(&[[f64; 2]; 2], f64)>
Exact bounds and interface coordinate for the adjacent partition kind.
pub fn decode_planar_adjacent_rectangle_partition_v1_canonical(
bytes: &[u8],
limits: CanonicalGeometryLimits,
) -> Result<CanonicalGeometryV1, Diagnostic>
pub fn decode_planar_adjacent_rectangle_partition_v1_canonical( bytes: &[u8], limits: CanonicalGeometryLimits, ) -> Result<CanonicalGeometryV1, Diagnostic>
Decode the tolerance-free adjacent rectangle partition wire.
pub fn decode_planar_rectangle_v2_canonical(
bytes: &[u8],
limits: CanonicalGeometryLimits,
) -> Result<CanonicalGeometryV1, Diagnostic>
pub fn decode_planar_rectangle_v2_canonical( bytes: &[u8], limits: CanonicalGeometryLimits, ) -> Result<CanonicalGeometryV1, Diagnostic>
Decode the classification-free planar rectangle wire.
Trait Implementations§
§impl Clone for CanonicalGeometryV1
impl Clone for CanonicalGeometryV1
§impl Debug for CanonicalGeometryV1
impl Debug for CanonicalGeometryV1
§impl PartialEq for CanonicalGeometryV1
impl PartialEq for CanonicalGeometryV1
§fn eq(&self, other: &CanonicalGeometryV1) -> bool
fn eq(&self, other: &CanonicalGeometryV1) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for CanonicalGeometryV1
Auto Trait Implementations§
impl Freeze for CanonicalGeometryV1
impl RefUnwindSafe for CanonicalGeometryV1
impl Send for CanonicalGeometryV1
impl Sync for CanonicalGeometryV1
impl Unpin for CanonicalGeometryV1
impl UnsafeUnpin for CanonicalGeometryV1
impl UnwindSafe for CanonicalGeometryV1
Blanket Implementations§
Source§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Source§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
§fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§impl<T> ConvUtil for T
impl<T> ConvUtil for T
§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
§fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
§fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> Twhere
Self: Distribution<T>,
Source§impl<T> From<T> for T
impl<T> From<T> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> Into<U> for Twhere
U: From<T>,
impl<T, U> Into<U> for Twhere
U: From<T>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Same for T
impl<T> Same for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.