Struct rerun::Capsules3D
source · pub struct Capsules3D {
pub lengths: Vec<Length>,
pub radii: Vec<Radius>,
pub translations: Option<Vec<PoseTranslation3D>>,
pub rotation_axis_angles: Option<Vec<PoseRotationAxisAngle>>,
pub quaternions: Option<Vec<PoseRotationQuat>>,
pub colors: Option<Vec<Color>>,
pub labels: Option<Vec<Text>>,
pub show_labels: Option<ShowLabels>,
pub class_ids: Option<Vec<ClassId>>,
}
Expand description
Archetype: 3D capsules; cylinders with hemispherical caps.
Capsules are defined by two endpoints (the centers of their end cap spheres), which are located at (0, 0, 0) and (0, 0, length), that is, extending along the positive direction of the Z axis. Capsules in other orientations may be produced by applying a rotation to the entity or instances.
§Example
§Batch of capsules
use rerun::external::glam::vec3;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let rec = rerun::RecordingStreamBuilder::new("rerun_example_capsule3d_batch").spawn()?;
rec.log(
"capsules",
&rerun::Capsules3D::from_lengths_and_radii([0., 2., 4., 6., 8.], [1., 0.5, 0.5, 0.5, 1.])
.with_colors([
rerun::Color::from_rgb(255, 0, 0),
rerun::Color::from_rgb(188, 188, 0),
rerun::Color::from_rgb(0, 255, 0),
rerun::Color::from_rgb(0, 188, 188),
rerun::Color::from_rgb(0, 0, 255),
])
.with_translations([
vec3(0., 0., 0.),
vec3(2., 0., 0.),
vec3(4., 0., 0.),
vec3(6., 0., 0.),
vec3(8., 0., 0.),
])
.with_rotation_axis_angles((0..5).map(|i| {
rerun::RotationAxisAngle::new(
[1.0, 0.0, 0.0],
rerun::Angle::from_degrees(i as f32 * -22.5),
)
})),
)?;
Ok(())
}
Fields§
§lengths: Vec<Length>
Lengths of the capsules, defined as the distance between the centers of the endcaps.
radii: Vec<Radius>
Radii of the capsules.
translations: Option<Vec<PoseTranslation3D>>
Optional translations of the capsules.
If not specified, one end of each capsule will be at (0, 0, 0).
Note that this uses a components::PoseTranslation3D
which is also used by archetypes::InstancePoses3D
.
rotation_axis_angles: Option<Vec<PoseRotationAxisAngle>>
Rotations via axis + angle.
If no rotation is specified, the capsules align with the +Z axis of the local coordinate system.
Note that this uses a components::PoseRotationAxisAngle
which is also used by archetypes::InstancePoses3D
.
quaternions: Option<Vec<PoseRotationQuat>>
Rotations via quaternion.
If no rotation is specified, the capsules align with the +Z axis of the local coordinate system.
Note that this uses a components::PoseRotationQuat
which is also used by archetypes::InstancePoses3D
.
colors: Option<Vec<Color>>
Optional colors for the capsules.
labels: Option<Vec<Text>>
Optional text labels for the capsules, which will be located at their centers.
show_labels: Option<ShowLabels>
Optional choice of whether the text labels should be shown by default.
class_ids: Option<Vec<ClassId>>
Optional class ID for the ellipsoids.
The class ID provides colors and labels if not specified explicitly.
Implementations§
source§impl Capsules3D
impl Capsules3D
sourcepub const NUM_COMPONENTS: usize = 10usize
pub const NUM_COMPONENTS: usize = 10usize
The total number of components in the archetype: 2 required, 3 recommended, 5 optional
source§impl Capsules3D
impl Capsules3D
sourcepub fn with_translations(
self,
translations: impl IntoIterator<Item = impl Into<PoseTranslation3D>>
) -> Capsules3D
pub fn with_translations( self, translations: impl IntoIterator<Item = impl Into<PoseTranslation3D>> ) -> Capsules3D
Optional translations of the capsules.
If not specified, one end of each capsule will be at (0, 0, 0).
Note that this uses a components::PoseTranslation3D
which is also used by archetypes::InstancePoses3D
.
sourcepub fn with_rotation_axis_angles(
self,
rotation_axis_angles: impl IntoIterator<Item = impl Into<PoseRotationAxisAngle>>
) -> Capsules3D
pub fn with_rotation_axis_angles( self, rotation_axis_angles: impl IntoIterator<Item = impl Into<PoseRotationAxisAngle>> ) -> Capsules3D
Rotations via axis + angle.
If no rotation is specified, the capsules align with the +Z axis of the local coordinate system.
Note that this uses a components::PoseRotationAxisAngle
which is also used by archetypes::InstancePoses3D
.
sourcepub fn with_quaternions(
self,
quaternions: impl IntoIterator<Item = impl Into<PoseRotationQuat>>
) -> Capsules3D
pub fn with_quaternions( self, quaternions: impl IntoIterator<Item = impl Into<PoseRotationQuat>> ) -> Capsules3D
Rotations via quaternion.
If no rotation is specified, the capsules align with the +Z axis of the local coordinate system.
Note that this uses a components::PoseRotationQuat
which is also used by archetypes::InstancePoses3D
.
sourcepub fn with_colors(
self,
colors: impl IntoIterator<Item = impl Into<Color>>
) -> Capsules3D
pub fn with_colors( self, colors: impl IntoIterator<Item = impl Into<Color>> ) -> Capsules3D
Optional colors for the capsules.
sourcepub fn with_labels(
self,
labels: impl IntoIterator<Item = impl Into<Text>>
) -> Capsules3D
pub fn with_labels( self, labels: impl IntoIterator<Item = impl Into<Text>> ) -> Capsules3D
Optional text labels for the capsules, which will be located at their centers.
sourcepub fn with_show_labels(self, show_labels: impl Into<ShowLabels>) -> Capsules3D
pub fn with_show_labels(self, show_labels: impl Into<ShowLabels>) -> Capsules3D
Optional choice of whether the text labels should be shown by default.
sourcepub fn with_class_ids(
self,
class_ids: impl IntoIterator<Item = impl Into<ClassId>>
) -> Capsules3D
pub fn with_class_ids( self, class_ids: impl IntoIterator<Item = impl Into<ClassId>> ) -> Capsules3D
Optional class ID for the ellipsoids.
The class ID provides colors and labels if not specified explicitly.
source§impl Capsules3D
impl Capsules3D
sourcepub fn from_lengths_and_radii(
lengths: impl IntoIterator<Item = impl Into<Length>>,
radii: impl IntoIterator<Item = f32>
) -> Capsules3D
pub fn from_lengths_and_radii( lengths: impl IntoIterator<Item = impl Into<Length>>, radii: impl IntoIterator<Item = f32> ) -> Capsules3D
Creates a new Capsules3D
with the given axis-aligned lengths and radii.
For multiple capsules, you should generally follow this with
Capsules3D::with_translations()
and one of the rotation methods, in order to move them
apart from each other.
sourcepub fn from_endpoints_and_radii(
start_points: impl IntoIterator<Item = impl Into<Position3D>>,
end_points: impl IntoIterator<Item = impl Into<Position3D>>,
radii: impl IntoIterator<Item = f32>
) -> Capsules3D
pub fn from_endpoints_and_radii( start_points: impl IntoIterator<Item = impl Into<Position3D>>, end_points: impl IntoIterator<Item = impl Into<Position3D>>, radii: impl IntoIterator<Item = f32> ) -> Capsules3D
Creates a new Capsules3D
where each capsule extends between the given pairs of points.
Trait Implementations§
source§impl Archetype for Capsules3D
impl Archetype for Capsules3D
§type Indicator = GenericIndicatorComponent<Capsules3D>
type Indicator = GenericIndicatorComponent<Capsules3D>
source§fn name() -> ArchetypeName
fn name() -> ArchetypeName
rerun.archetypes.Points2D
.source§fn display_name() -> &'static str
fn display_name() -> &'static str
source§fn indicator() -> MaybeOwnedComponentBatch<'static>
fn indicator() -> MaybeOwnedComponentBatch<'static>
source§fn required_components() -> Cow<'static, [ComponentName]>
fn required_components() -> Cow<'static, [ComponentName]>
source§fn recommended_components() -> Cow<'static, [ComponentName]>
fn recommended_components() -> Cow<'static, [ComponentName]>
source§fn optional_components() -> Cow<'static, [ComponentName]>
fn optional_components() -> Cow<'static, [ComponentName]>
source§fn all_components() -> Cow<'static, [ComponentName]>
fn all_components() -> Cow<'static, [ComponentName]>
source§fn from_arrow_components(
arrow_data: impl IntoIterator<Item = (ComponentName, Box<dyn Array>)>
) -> Result<Capsules3D, DeserializationError>
fn from_arrow_components( arrow_data: impl IntoIterator<Item = (ComponentName, Box<dyn Array>)> ) -> Result<Capsules3D, DeserializationError>
ComponentNames
, deserializes them
into this archetype. Read moresource§fn from_arrow(
data: impl IntoIterator<Item = (Field, Box<dyn Array>)>
) -> Result<Self, DeserializationError>where
Self: Sized,
fn from_arrow(
data: impl IntoIterator<Item = (Field, Box<dyn Array>)>
) -> Result<Self, DeserializationError>where
Self: Sized,
source§impl AsComponents for Capsules3D
impl AsComponents for Capsules3D
source§fn as_component_batches(&self) -> Vec<MaybeOwnedComponentBatch<'_>>
fn as_component_batches(&self) -> Vec<MaybeOwnedComponentBatch<'_>>
ComponentBatch
s. Read moresource§impl Clone for Capsules3D
impl Clone for Capsules3D
source§fn clone(&self) -> Capsules3D
fn clone(&self) -> Capsules3D
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for Capsules3D
impl Debug for Capsules3D
source§impl PartialEq for Capsules3D
impl PartialEq for Capsules3D
source§fn eq(&self, other: &Capsules3D) -> bool
fn eq(&self, other: &Capsules3D) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl SizeBytes for Capsules3D
impl SizeBytes for Capsules3D
source§fn heap_size_bytes(&self) -> u64
fn heap_size_bytes(&self) -> u64
self
on the heap, in bytes.source§fn total_size_bytes(&self) -> u64
fn total_size_bytes(&self) -> u64
self
in bytes, accounting for both stack and heap space.source§fn stack_size_bytes(&self) -> u64
fn stack_size_bytes(&self) -> u64
self
on the stack, in bytes. Read moreimpl ArchetypeReflectionMarker for Capsules3D
impl StructuralPartialEq for Capsules3D
Auto Trait Implementations§
impl Freeze for Capsules3D
impl RefUnwindSafe for Capsules3D
impl Send for Capsules3D
impl Sync for Capsules3D
impl Unpin for Capsules3D
impl UnwindSafe for Capsules3D
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> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§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>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§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.§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.§impl<T> DowncastSync for T
impl<T> DowncastSync 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> 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<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request