1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// devela/src/geom/metric/_.rs
//
// public
//!
//! This module gives distinct spatial roles to orthogonal component values.
//!
//! ```text
//! Position absolute location
//! Distance relative separation
//! Extent origin-independent size
//! Stride per-axis traversal step
//!
//! Position + Extent ──> Region
//! Region + Stride ──> RegionStrided
//! ```
//!
//! Although these types share dimensional component storage, their meanings differ.
//! - A [`Position`] locates something,
//! - a [`Distance`] separates locations,
//! - an [`Extent`] gives dimensional size,
//! - a [`Stride`] describes repeated stepping.
//!
//! [`Region`] combines a position and extent. [`RegionStrided`] adds traversal
//! spacing without changing the region's spatial bounds.
//!
//! The core families support any dimensionality through a const generic.
//! One-, two-, and three-dimensional aliases are provided, together with the
//! [`pos!`], [`dis!`], [`ext!`], and [`region!`] construction macros.
//!
//! # Boundaries
//!
//! - Direction, rotation, and region-relative sides belong to [`geom::dir`][crate::geom::dir].
//! - Affine points and transformations belong to [`geom::affine`][crate::geom::affine].
//! - Concrete geometric objects belong to [`geom::fig`].
//! - Abstract intervals, ratios, and other quantitative relations belong to [`num::quant`].
//! - Physical units and measured quantities belong to [`phys`][crate::phys].
//!
//! [`RegionStrided`] records spatial stepping.
//! It does not define storage, indexing, iteration order, or memory layout.
//!
//! [`geom::fig`]: crate::geom::fig
//! [`num::quant`]: crate::num::quant
//
cratemods_in!
cratemods_out!