Struct lyon::tessellation::math::TypedPoint2D
[−]
pub struct TypedPoint2D<T, U> { pub x: T, pub y: T, // some fields omitted }
A 2d Point tagged with a unit.
Fields
x: T
y: T
Methods
impl<T, U> TypedPoint2D<T, U> where
T: Zero + Copy,
T: Zero + Copy,
fn zero() -> TypedPoint2D<T, U>
Constructor, setting all components to zero.
fn to_3d(&self) -> TypedPoint3D<T, U>
Convert into a 3d point.
impl<T, U> TypedPoint2D<T, U> where
T: Copy,
T: Copy,
fn new(x: T, y: T) -> TypedPoint2D<T, U>
Constructor taking scalar values directly.
fn from_lengths(x: Length<T, U>, y: Length<T, U>) -> TypedPoint2D<T, U>
Constructor taking properly typed Lengths instead of scalar values.
fn x_typed(&self) -> Length<T, U>
Returns self.x as a Length carrying the unit.
fn y_typed(&self) -> Length<T, U>
Returns self.y as a Length carrying the unit.
fn to_untyped(&self) -> TypedPoint2D<T, UnknownUnit>
Drop the units, preserving only the numeric value.
fn from_untyped(p: &TypedPoint2D<T, UnknownUnit>) -> TypedPoint2D<T, U>
Tag a unitless value with units.
fn to_array(&self) -> [T; 2]
impl<T, U> TypedPoint2D<T, U> where
T: Mul<T, Output = T> + Add<T, Output = T> + Sub<T, Output = T> + Copy,
T: Mul<T, Output = T> + Add<T, Output = T> + Sub<T, Output = T> + Copy,
fn dot(self, other: TypedPoint2D<T, U>) -> T
Dot product.
fn cross(self, other: TypedPoint2D<T, U>) -> T
Returns the norm of the cross product [self.x, self.y, 0] x [other.x, other.y, 0]..
impl<T, U> TypedPoint2D<T, U> where
T: Copy + Add<T, Output = T>,
T: Copy + Add<T, Output = T>,
fn add_size(&self, other: &TypedSize2D<T, U>) -> TypedPoint2D<T, U>
impl<T, U> TypedPoint2D<T, U> where
T: Float,
T: Float,
fn min(self, other: TypedPoint2D<T, U>) -> TypedPoint2D<T, U>
fn max(self, other: TypedPoint2D<T, U>) -> TypedPoint2D<T, U>
impl<T, U> TypedPoint2D<T, U> where
T: Round,
T: Round,
fn round(&self) -> TypedPoint2D<T, U>
Rounds each component to the nearest integer value.
This behavior is preserved for negative values (unlike the basic cast). For example { -0.1, -0.8 }.round() == { 0.0, -1.0 }
impl<T, U> TypedPoint2D<T, U> where
T: Ceil,
T: Ceil,
fn ceil(&self) -> TypedPoint2D<T, U>
Rounds each component to the smallest integer equal or greater than the orginal value.
This behavior is preserved for negative values (unlike the basic cast). For example { -0.1, -0.8 }.ceil() == { 0.0, 0.0 }.
impl<T, U> TypedPoint2D<T, U> where
T: Floor,
T: Floor,
fn floor(&self) -> TypedPoint2D<T, U>
Rounds each component to the biggest integer equal or lower than the orginal value.
This behavior is preserved for negative values (unlike the basic cast). For example { -0.1, -0.8 }.floor() == { -1.0, -1.0 }.
impl<T, U> TypedPoint2D<T, U> where
T: Copy + NumCast,
T: Copy + NumCast,
fn cast<NewT>(&self) -> Option<TypedPoint2D<NewT, U>> where
NewT: Copy + NumCast,
NewT: Copy + NumCast,
Cast from one numeric representation to another, preserving the units.
When casting from floating point to integer coordinates, the decimals are truncated as one would expect from a simple cast, but this behavior does not always make sense geometrically. Consider using round(), ceil or floor() before casting.
fn to_f32(&self) -> TypedPoint2D<f32, U>
Cast into an f32 vector.
fn to_uint(&self) -> TypedPoint2D<usize, U>
Cast into an usize point, truncating decimals if any.
When casting from floating point vectors, it is worth considering whether to round(), ceil() or floor() before the cast in order to obtain the desired conversion behavior.
fn to_i32(&self) -> TypedPoint2D<i32, U>
Cast into an i32 point, truncating decimals if any.
When casting from floating point vectors, it is worth considering whether to round(), ceil() or floor() before the cast in order to obtain the desired conversion behavior.
fn to_i64(&self) -> TypedPoint2D<i64, U>
Cast into an i64 point, truncating decimals if any.
When casting from floating point vectors, it is worth considering whether to round(), ceil() or floor() before the cast in order to obtain the desired conversion behavior.
Trait Implementations
impl<T, U> Copy for TypedPoint2D<T, U> where
T: Copy,
T: Copy,
impl<T, U> Deserialize for TypedPoint2D<T, U> where
T: Deserialize,
T: Deserialize,
fn deserialize<D>(
deserializer: &mut D
) -> Result<TypedPoint2D<T, U>, <D as Deserializer>::Error> where
D: Deserializer,
deserializer: &mut D
) -> Result<TypedPoint2D<T, U>, <D as Deserializer>::Error> where
D: Deserializer,
impl<T, U> Mul<T> for TypedPoint2D<T, U> where
T: Copy + Mul<T, Output = T>,
T: Copy + Mul<T, Output = T>,
type Output = TypedPoint2D<T, U>
fn mul(self, scale: T) -> TypedPoint2D<T, U>
impl<T, U1, U2> Mul<ScaleFactor<T, U1, U2>> for TypedPoint2D<T, U1> where
T: Copy + Mul<T, Output = T>,
T: Copy + Mul<T, Output = T>,
type Output = TypedPoint2D<T, U2>
fn mul(self, scale: ScaleFactor<T, U1, U2>) -> TypedPoint2D<T, U2>
impl<T, U> Debug for TypedPoint2D<T, U> where
T: Debug,
T: Debug,
impl<T, U> Hash for TypedPoint2D<T, U> where
T: Hash,
T: Hash,
impl<T, U> Sub<TypedPoint2D<T, U>> for TypedPoint2D<T, U> where
T: Copy + Sub<T, Output = T>,
T: Copy + Sub<T, Output = T>,
type Output = TypedPoint2D<T, U>
fn sub(self, other: TypedPoint2D<T, U>) -> TypedPoint2D<T, U>
impl<T, U> HeapSizeOf for TypedPoint2D<T, U> where
T: HeapSizeOf,
T: HeapSizeOf,
fn heap_size_of_children(&self) -> usize
impl<T, U> Decodable for TypedPoint2D<T, U> where
T: Decodable,
U: Decodable,
T: Decodable,
U: Decodable,
fn decode<__DTU>(
__arg_0: &mut __DTU
) -> Result<TypedPoint2D<T, U>, <__DTU as Decoder>::Error> where
__DTU: Decoder,
__arg_0: &mut __DTU
) -> Result<TypedPoint2D<T, U>, <__DTU as Decoder>::Error> where
__DTU: Decoder,
impl<T, U> Encodable for TypedPoint2D<T, U> where
T: Encodable,
U: Encodable,
T: Encodable,
U: Encodable,
fn encode<__STU>(
&self,
__arg_0: &mut __STU
) -> Result<(), <__STU as Encoder>::Error> where
__STU: Encoder,
&self,
__arg_0: &mut __STU
) -> Result<(), <__STU as Encoder>::Error> where
__STU: Encoder,
impl<T, U> Eq for TypedPoint2D<T, U> where
T: Eq,
T: Eq,
impl<T, U> PartialEq<TypedPoint2D<T, U>> for TypedPoint2D<T, U> where
T: PartialEq<T>,
T: PartialEq<T>,
fn eq(&self, other: &TypedPoint2D<T, U>) -> bool
impl<T, U> Add<TypedPoint2D<T, U>> for TypedPoint2D<T, U> where
T: Copy + Add<T, Output = T>,
T: Copy + Add<T, Output = T>,
type Output = TypedPoint2D<T, U>
fn add(self, other: TypedPoint2D<T, U>) -> TypedPoint2D<T, U>
impl<T, U> Add<TypedSize2D<T, U>> for TypedPoint2D<T, U> where
T: Copy + Add<T, Output = T>,
T: Copy + Add<T, Output = T>,
type Output = TypedPoint2D<T, U>
fn add(self, other: TypedSize2D<T, U>) -> TypedPoint2D<T, U>
impl<T, U> Clone for TypedPoint2D<T, U> where
T: Clone,
T: Clone,
fn clone(&self) -> TypedPoint2D<T, U>
impl<T, U> Neg for TypedPoint2D<T, U> where
T: Copy + Neg<Output = T>,
T: Copy + Neg<Output = T>,
type Output = TypedPoint2D<T, U>
fn neg(self) -> TypedPoint2D<T, U>
impl<T, U> ApproxEq<TypedPoint2D<T, U>> for TypedPoint2D<T, U> where
T: ApproxEq<T> + Copy,
T: ApproxEq<T> + Copy,
fn approx_epsilon() -> TypedPoint2D<T, U>
fn approx_eq(&self, other: &TypedPoint2D<T, U>) -> bool
fn approx_eq_eps(
&self,
other: &TypedPoint2D<T, U>,
eps: &TypedPoint2D<T, U>
) -> bool
&self,
other: &TypedPoint2D<T, U>,
eps: &TypedPoint2D<T, U>
) -> bool
impl<T, U> Display for TypedPoint2D<T, U> where
T: Display,
T: Display,
impl<T, U> Div<T> for TypedPoint2D<T, U> where
T: Copy + Div<T, Output = T>,
T: Copy + Div<T, Output = T>,
type Output = TypedPoint2D<T, U>
fn div(self, scale: T) -> TypedPoint2D<T, U>
impl<T, U1, U2> Div<ScaleFactor<T, U1, U2>> for TypedPoint2D<T, U2> where
T: Copy + Div<T, Output = T>,
T: Copy + Div<T, Output = T>,
type Output = TypedPoint2D<T, U1>
fn div(self, scale: ScaleFactor<T, U1, U2>) -> TypedPoint2D<T, U1>
impl<T, U> Serialize for TypedPoint2D<T, U> where
T: Serialize,
T: Serialize,
fn serialize<S>(
&self,
serializer: &mut S
) -> Result<(), <S as Serializer>::Error> where
S: Serializer,
&self,
serializer: &mut S
) -> Result<(), <S as Serializer>::Error> where
S: Serializer,
impl VertexData for TypedPoint2D<f32, UnknownUnit>
fn interpolate(
a: &TypedPoint2D<f32, UnknownUnit>,
b: &TypedPoint2D<f32, UnknownUnit>,
c: &TypedPoint2D<f32, UnknownUnit>,
wa: f32,
wb: f32,
wc: f32
) -> TypedPoint2D<f32, UnknownUnit>
a: &TypedPoint2D<f32, UnknownUnit>,
b: &TypedPoint2D<f32, UnknownUnit>,
c: &TypedPoint2D<f32, UnknownUnit>,
wa: f32,
wb: f32,
wc: f32
) -> TypedPoint2D<f32, UnknownUnit>