pub struct Segment2d {
pub vertices: [Vec2; 2],
}
Expand description
A line segment defined by two endpoints in 2D space.
Fields§
§vertices: [Vec2; 2]
The endpoints of the line segment.
Implementations§
Source§impl Segment2d
impl Segment2d
Sourcepub const fn new(point1: Vec2, point2: Vec2) -> Self
pub const fn new(point1: Vec2, point2: Vec2) -> Self
Create a new Segment2d
from its endpoints.
Sourcepub fn from_points(point1: Vec2, point2: Vec2) -> (Self, Vec2)
👎Deprecated since 0.16.0: Use the new
constructor instead
pub fn from_points(point1: Vec2, point2: Vec2) -> (Self, Vec2)
new
constructor insteadCreate a new Segment2d
from its endpoints and compute its geometric center.
Sourcepub fn from_direction_and_length(direction: Dir2, length: f32) -> Self
pub fn from_direction_and_length(direction: Dir2, length: f32) -> Self
Create a new Segment2d
centered at the origin with the given direction and length.
The endpoints will be at -direction * length / 2.0
and direction * length / 2.0
.
Sourcepub fn from_scaled_direction(scaled_direction: Vec2) -> Self
pub fn from_scaled_direction(scaled_direction: Vec2) -> Self
Create a new Segment2d
centered at the origin from a vector representing
the direction and length of the line segment.
The endpoints will be at -scaled_direction / 2.0
and scaled_direction / 2.0
.
Sourcepub fn from_ray_and_length(ray: Ray2d, length: f32) -> Self
pub fn from_ray_and_length(ray: Ray2d, length: f32) -> Self
Create a new Segment2d
starting from the origin of the given ray
,
going in the direction of the ray for the given length
.
The endpoints will be at ray.origin
and ray.origin + length * ray.direction
.
Sourcepub fn center(&self) -> Vec2
pub fn center(&self) -> Vec2
Compute the midpoint between the two endpoints of the line segment.
Sourcepub fn length_squared(&self) -> f32
pub fn length_squared(&self) -> f32
Compute the squared length of the line segment.
Sourcepub fn direction(&self) -> Dir2
pub fn direction(&self) -> Dir2
Compute the normalized direction pointing from the first endpoint to the second endpoint.
For the non-panicking version, see Segment2d::try_direction
.
§Panics
Panics if a valid direction could not be computed, for example when the endpoints are coincident, NaN, or infinite.
Sourcepub fn try_direction(&self) -> Result<Dir2, InvalidDirectionError>
pub fn try_direction(&self) -> Result<Dir2, InvalidDirectionError>
Try to compute the normalized direction pointing from the first endpoint to the second endpoint.
Returns Err(InvalidDirectionError)
if a valid direction could not be computed,
for example when the endpoints are coincident, NaN, or infinite.
Sourcepub fn scaled_direction(&self) -> Vec2
pub fn scaled_direction(&self) -> Vec2
Compute the vector from the first endpoint to the second endpoint.
Sourcepub fn left_normal(&self) -> Dir2
pub fn left_normal(&self) -> Dir2
Compute the normalized counterclockwise normal on the left-hand side of the line segment.
For the non-panicking version, see Segment2d::try_left_normal
.
§Panics
Panics if a valid normal could not be computed, for example when the endpoints are coincident, NaN, or infinite.
Sourcepub fn try_left_normal(&self) -> Result<Dir2, InvalidDirectionError>
pub fn try_left_normal(&self) -> Result<Dir2, InvalidDirectionError>
Try to compute the normalized counterclockwise normal on the left-hand side of the line segment.
Returns Err(InvalidDirectionError)
if a valid normal could not be computed,
for example when the endpoints are coincident, NaN, or infinite.
Sourcepub fn scaled_left_normal(&self) -> Vec2
pub fn scaled_left_normal(&self) -> Vec2
Compute the non-normalized counterclockwise normal on the left-hand side of the line segment.
The length of the normal is the distance between the endpoints.
Sourcepub fn right_normal(&self) -> Dir2
pub fn right_normal(&self) -> Dir2
Compute the normalized clockwise normal on the right-hand side of the line segment.
For the non-panicking version, see Segment2d::try_right_normal
.
§Panics
Panics if a valid normal could not be computed, for example when the endpoints are coincident, NaN, or infinite.
Sourcepub fn try_right_normal(&self) -> Result<Dir2, InvalidDirectionError>
pub fn try_right_normal(&self) -> Result<Dir2, InvalidDirectionError>
Try to compute the normalized clockwise normal on the right-hand side of the line segment.
Returns Err(InvalidDirectionError)
if a valid normal could not be computed,
for example when the endpoints are coincident, NaN, or infinite.
Sourcepub fn scaled_right_normal(&self) -> Vec2
pub fn scaled_right_normal(&self) -> Vec2
Compute the non-normalized clockwise normal on the right-hand side of the line segment.
The length of the normal is the distance between the endpoints.
Sourcepub fn transformed(&self, isometry: impl Into<Isometry2d>) -> Self
pub fn transformed(&self, isometry: impl Into<Isometry2d>) -> Self
Compute the segment transformed by the given Isometry2d
.
Sourcepub fn translated(&self, translation: Vec2) -> Segment2d
pub fn translated(&self, translation: Vec2) -> Segment2d
Compute the segment translated by the given vector.
Sourcepub fn rotated(&self, rotation: Rot2) -> Segment2d
pub fn rotated(&self, rotation: Rot2) -> Segment2d
Compute the segment rotated around the origin by the given rotation.
Sourcepub fn rotated_around(&self, rotation: Rot2, point: Vec2) -> Segment2d
pub fn rotated_around(&self, rotation: Rot2, point: Vec2) -> Segment2d
Compute the segment rotated around the given point by the given rotation.
Sourcepub fn rotated_around_center(&self, rotation: Rot2) -> Segment2d
pub fn rotated_around_center(&self, rotation: Rot2) -> Segment2d
Compute the segment rotated around its own center.
Sourcepub fn centered(&self) -> Segment2d
pub fn centered(&self) -> Segment2d
Compute the segment with its center at the origin, keeping the same direction and length.
Sourcepub fn resized(&self, length: f32) -> Segment2d
pub fn resized(&self, length: f32) -> Segment2d
Compute the segment with a new length, keeping the same direction and center.
Trait Implementations§
Source§impl Bounded2d for Segment2d
impl Bounded2d for Segment2d
Source§fn aabb_2d(&self, isometry: impl Into<Isometry2d>) -> Aabb2d
fn aabb_2d(&self, isometry: impl Into<Isometry2d>) -> Aabb2d
Source§fn bounding_circle(&self, isometry: impl Into<Isometry2d>) -> BoundingCircle
fn bounding_circle(&self, isometry: impl Into<Isometry2d>) -> BoundingCircle
Source§impl BoundedExtrusion for Segment2d
impl BoundedExtrusion for Segment2d
Source§fn extrusion_aabb_3d(
&self,
half_depth: f32,
isometry: impl Into<Isometry3d>,
) -> Aabb3d
fn extrusion_aabb_3d( &self, half_depth: f32, isometry: impl Into<Isometry3d>, ) -> Aabb3d
half_depth
, transformed by the given translation
and rotation
.Source§fn extrusion_bounding_sphere(
&self,
half_depth: f32,
isometry: impl Into<Isometry3d>,
) -> BoundingSphere
fn extrusion_bounding_sphere( &self, half_depth: f32, isometry: impl Into<Isometry3d>, ) -> BoundingSphere
base_shape
with the given half_depth
with the given translation and rotationSource§impl<'de> Deserialize<'de> for Segment2d
impl<'de> Deserialize<'de> for Segment2d
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl FromReflect for Segment2d
impl FromReflect for Segment2d
Source§fn from_reflect(reflect: &dyn PartialReflect) -> Option<Self>
fn from_reflect(reflect: &dyn PartialReflect) -> Option<Self>
Self
from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn PartialReflect>,
) -> Result<Self, Box<dyn PartialReflect>>
fn take_from_reflect( reflect: Box<dyn PartialReflect>, ) -> Result<Self, Box<dyn PartialReflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read moreSource§impl GetTypeRegistration for Segment2d
impl GetTypeRegistration for Segment2d
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration
for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl PartialReflect for Segment2d
impl PartialReflect for Segment2d
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn try_apply(&mut self, value: &dyn PartialReflect) -> Result<(), ApplyError>
fn try_apply(&mut self, value: &dyn PartialReflect) -> Result<(), ApplyError>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<Self>) -> ReflectOwned
fn reflect_owned(self: Box<Self>) -> ReflectOwned
Source§fn try_into_reflect(
self: Box<Self>,
) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
fn try_into_reflect( self: Box<Self>, ) -> Result<Box<dyn Reflect>, Box<dyn PartialReflect>>
Source§fn try_as_reflect(&self) -> Option<&dyn Reflect>
fn try_as_reflect(&self) -> Option<&dyn Reflect>
Source§fn try_as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
fn try_as_reflect_mut(&mut self) -> Option<&mut dyn Reflect>
Source§fn into_partial_reflect(self: Box<Self>) -> Box<dyn PartialReflect>
fn into_partial_reflect(self: Box<Self>) -> Box<dyn PartialReflect>
Source§fn as_partial_reflect(&self) -> &dyn PartialReflect
fn as_partial_reflect(&self) -> &dyn PartialReflect
Source§fn as_partial_reflect_mut(&mut self) -> &mut dyn PartialReflect
fn as_partial_reflect_mut(&mut self) -> &mut dyn PartialReflect
Source§fn reflect_partial_eq(&self, value: &dyn PartialReflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn PartialReflect) -> Option<bool>
Source§fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
fn reflect_clone(&self) -> Result<Box<dyn Reflect>, ReflectCloneError>
Self
using reflection. Read moreSource§fn apply(&mut self, value: &(dyn PartialReflect + 'static))
fn apply(&mut self, value: &(dyn PartialReflect + 'static))
Source§fn clone_value(&self) -> Box<dyn PartialReflect>
fn clone_value(&self) -> Box<dyn PartialReflect>
reflect_clone
. To convert reflected values to dynamic ones, use to_dynamic
.Self
into its dynamic representation. Read moreSource§fn to_dynamic(&self) -> Box<dyn PartialReflect>
fn to_dynamic(&self) -> Box<dyn PartialReflect>
Source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Reflect for Segment2d
impl Reflect for Segment2d
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any
. Read moreSource§fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
Source§fn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
Source§impl Struct for Segment2d
impl Struct for Segment2d
Source§fn field(&self, name: &str) -> Option<&dyn PartialReflect>
fn field(&self, name: &str) -> Option<&dyn PartialReflect>
name
as a &dyn PartialReflect
.Source§fn field_mut(&mut self, name: &str) -> Option<&mut dyn PartialReflect>
fn field_mut(&mut self, name: &str) -> Option<&mut dyn PartialReflect>
name
as a
&mut dyn PartialReflect
.Source§fn field_at(&self, index: usize) -> Option<&dyn PartialReflect>
fn field_at(&self, index: usize) -> Option<&dyn PartialReflect>
index
as a
&dyn PartialReflect
.Source§fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn PartialReflect>
fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn PartialReflect>
index
as a &mut dyn PartialReflect
.Source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
index
.Source§fn iter_fields(&self) -> FieldIter<'_>
fn iter_fields(&self) -> FieldIter<'_>
fn to_dynamic_struct(&self) -> DynamicStruct
Source§fn clone_dynamic(&self) -> DynamicStruct
fn clone_dynamic(&self) -> DynamicStruct
to_dynamic_struct
insteadDynamicStruct
.Source§fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
fn get_represented_struct_info(&self) -> Option<&'static StructInfo>
None
if TypeInfo
is not available.Source§impl TypePath for Segment2d
impl TypePath for Segment2d
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
impl Copy for Segment2d
impl Primitive2d for Segment2d
impl StructuralPartialEq for Segment2d
Auto Trait Implementations§
impl Freeze for Segment2d
impl RefUnwindSafe for Segment2d
impl Send for Segment2d
impl Sync for Segment2d
impl Unpin for Segment2d
impl UnwindSafe for Segment2d
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> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
Source§impl<T> DynamicTyped for Twhere
T: Typed,
impl<T> DynamicTyped for Twhere
T: Typed,
Source§fn reflect_type_info(&self) -> &'static TypeInfo
fn reflect_type_info(&self) -> &'static TypeInfo
Typed::type_info
.Source§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere
S: Struct,
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn PartialReflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§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 more