#[non_exhaustive]pub struct PolylineItem {Show 15 fields
pub positions: Vec<[f32; 3]>,
pub scalars: Vec<f32>,
pub strip_lengths: Vec<u32>,
pub scalar_range: Option<(f32, f32)>,
pub colormap_id: Option<ColormapId>,
pub default_color: [f32; 4],
pub line_width: f32,
pub id: u64,
pub node_colors: Vec<[f32; 4]>,
pub edge_scalars: Vec<f32>,
pub edge_colors: Vec<[f32; 4]>,
pub node_radii: Vec<f32>,
pub node_vectors: Vec<[f32; 3]>,
pub edge_vectors: Vec<[f32; 3]>,
pub vector_scale: f32,
}Expand description
A polyline (stream tracer) item to render in the viewport.
All streamlines for one source are concatenated into a single vertex buffer.
strip_lengths records how many vertices belong to each individual streamline.
§Curve network quantities
In addition to the existing per-node scalar path (scalars/colormap_id), this
item supports several curve-network quantities:
- Per-edge scalars (
edge_scalars): one value per segment; rendered as a flat constant color per edge (both endpoints share the same LUT value). - Per-node colors (
node_colors): direct RGBA per node; takes priority over scalar-driven coloring. - Per-edge colors (
edge_colors): direct RGBA per segment; takes priority over edge scalars. - Per-node radius (
node_radii): per-node line width in pixels; overrides the globalline_width. - Node vectors (
node_vectors): world-space 3-D arrows at each node, rendered automatically asGlyphItemarrows. - Edge vectors (
edge_vectors): world-space 3-D arrows at each segment midpoint, also rendered asGlyphItemarrows.
Color priority per segment: node_colors/edge_colors (direct) > edge_scalars >
scalars (per-node) > default_color.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.positions: Vec<[f32; 3]>World-space positions for all streamlines, concatenated.
scalars: Vec<f32>Per-node scalar values (same length as positions). Empty = no scalar coloring.
strip_lengths: Vec<u32>Number of vertices per individual streamline strip.
scalar_range: Option<(f32, f32)>Scalar range for LUT mapping. None = auto from min/max of scalars or edge_scalars.
colormap_id: Option<ColormapId>Colormap for scalar coloring. None = viridis.
default_color: [f32; 4]Fallback color when no scalar or direct-color data is provided.
line_width: f32Global line width in pixels. Used when node_radii is empty.
id: u64Unique ID for identification. 0 = not pickable.
node_colors: Vec<[f32; 4]>Per-node direct RGBA colors. Length must match positions. Empty = not used.
Takes priority over scalar-driven coloring when non-empty.
edge_scalars: Vec<f32>Per-edge scalar values. Length = total segment count across all strips (sum of
strip_lengths[i] - 1). Used when scalars is empty; both endpoints of each
segment share the same LUT value (flat constant color per edge).
edge_colors: Vec<[f32; 4]>Per-edge direct RGBA colors. Length = total segment count. Takes priority over
edge_scalars when non-empty.
node_radii: Vec<f32>Per-node line width in pixels. Length must match positions. When non-empty,
overrides the global line_width; adjacent endpoints are linearly interpolated
along each segment.
node_vectors: Vec<[f32; 3]>Per-node world-space vectors. Length must match positions. When non-empty the
renderer automatically generates a GlyphItem (arrows at node positions).
edge_vectors: Vec<[f32; 3]>Per-edge world-space vectors. Length = total segment count. When non-empty the
renderer automatically generates a GlyphItem (arrows at segment midpoints).
vector_scale: f32Scale applied to generated arrow glyphs from node_vectors/edge_vectors.
Trait Implementations§
Source§impl Clone for PolylineItem
impl Clone for PolylineItem
Source§fn clone(&self) -> PolylineItem
fn clone(&self) -> PolylineItem
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for PolylineItem
impl RefUnwindSafe for PolylineItem
impl Send for PolylineItem
impl Sync for PolylineItem
impl Unpin for PolylineItem
impl UnsafeUnpin for PolylineItem
impl UnwindSafe for PolylineItem
Blanket Implementations§
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,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§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).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.