#[non_exhaustive]pub enum SurfaceRelation {
CurveBounded {
basis: NodeId,
boundaries: Vec<NodeId>,
implicit_outer: bool,
},
RectangularTrimmed {
basis: NodeId,
u: (Scalar, Scalar),
v: (Scalar, Scalar),
u_sense: bool,
v_sense: bool,
},
Offset {
basis: NodeId,
distance: Scalar,
self_intersect: Option<bool>,
},
LinearExtrusion {
swept_curve: NodeId,
direction: Vec3,
},
Revolution {
swept_curve: NodeId,
axis_origin: Point3,
axis_direction: Vec3,
},
SectionedSurface {
directrix: NodeId,
sections: Vec<StationedOpenSection>,
frame: StationFrame,
},
OpenSectionsAtStations {
directrix: NodeId,
sections: Vec<SectionAtStation>,
frame: StationFrame,
},
Ruled {
first: RuledSide,
second: RuledSide,
},
}Expand description
Relationship between surface nodes.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
CurveBounded
Surface bounded by oriented curve nodes.
RectangularTrimmed
Rectangular parameter-space trim.
Offset
Constant-distance offset surface.
LinearExtrusion
Surface generated by translating a curve: S(u, v) = c(u) + v d,
u the curve’s own parameter and v in units of direction’s
length (it is not normalised).
Revolution
Surface generated by revolving a curve around an axis:
S(u, v) = O + R(u) (c(v) - O), O the axis_origin, c the swept
curve and R(u) the right-handed turn by u radians about the unit
axis_direction (its length is not read). u = 0 is the swept curve
itself and v is the curve’s own parameter.
SectionedSurface
Open sections standing at stations along a directrix, joined by tag (#241).
Each section’s open polyline is placed in the directrix’s frame at
its station (profile x to the lateral axis, y to up; see
crate::station). Between two stations, points with equal tags
are joined and interpolated linearly in distance, as are the
offsets. At least two sections, strictly increasing in distance,
with one tag sequence (or none) are required.
OpenSectionsAtStations
Open sections standing at stations along a directrix, each
optionally explicitly oriented (#246): the general form of
SurfaceRelation::SectionedSurface.
Each section’s open polyline is placed as in a SectionedSurface,
its plane turned by the section’s orientation. Sections are joined
by tag, or by index when none is tagged (see crate::station).
At least two sections, strictly increasing in distance, all tagged
or none, are required.
Ruled
Surface ruled between two sides (#402):
p(u, v) = (1 - v) first(u) + v second(u) for u, v in [0, 1].
The sides are atomic Curve3 nodes over oriented intervals, or an
apex point (not both). Two sides that are the same curve over the
same interval would give no surface and are refused.
Trait Implementations§
impl BuiltInNode for SurfaceRelation
Source§impl Clone for SurfaceRelation
impl Clone for SurfaceRelation
Source§fn clone(&self) -> SurfaceRelation
fn clone(&self) -> SurfaceRelation
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more