pub struct Matrix { /* private fields */ }Expand description
3x3 变换矩阵
用于 2D 仿射变换,矩阵布局:
| a c e |
| b d f |
| 0 0 1 |Implementations§
Source§impl Matrix
impl Matrix
Sourcepub fn from_values(values: [f32; 6]) -> Self
pub fn from_values(values: [f32; 6]) -> Self
从数组创建矩阵
Sourcepub fn translate_x(&self) -> f32
pub fn translate_x(&self) -> f32
获取矩阵的 e 元素(x 平移)
Sourcepub fn translate_y(&self) -> f32
pub fn translate_y(&self) -> f32
获取矩阵的 f 元素(y 平移)
Sourcepub fn pre_translate(&self, dx: f32, dy: f32) -> Self
pub fn pre_translate(&self, dx: f32, dy: f32) -> Self
应用平移变换
Sourcepub fn pre_rotate(&self, degrees: f32) -> Self
pub fn pre_rotate(&self, degrees: f32) -> Self
应用旋转变换
Sourcepub fn post_translate(&self, dx: f32, dy: f32) -> Self
pub fn post_translate(&self, dx: f32, dy: f32) -> Self
后置平移变换
Sourcepub fn post_scale(&self, sx: f32, sy: f32) -> Self
pub fn post_scale(&self, sx: f32, sy: f32) -> Self
后置缩放变换
Sourcepub fn post_rotate(&self, degrees: f32) -> Self
pub fn post_rotate(&self, degrees: f32) -> Self
后置旋转变换
Sourcepub fn map_pointf(&self, point: PointF) -> PointF
pub fn map_pointf(&self, point: PointF) -> PointF
变换 PointF 对象
Sourcepub fn map_points(&self, points: &[PointF]) -> Vec<PointF>
pub fn map_points(&self, points: &[PointF]) -> Vec<PointF>
变换多个点
Sourcepub fn post_concat(&self, other: &Matrix) -> Self
pub fn post_concat(&self, other: &Matrix) -> Self
后置连接矩阵(this * other)
Sourcepub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
判断是否为单位矩阵
Sourcepub fn is_translate(&self) -> bool
pub fn is_translate(&self) -> bool
判断是否仅包含平移
Sourcepub fn is_scale_translate(&self) -> bool
pub fn is_scale_translate(&self) -> bool
判断是否仅包含缩放和平移
Sourcepub fn set_translate(&mut self, dx: f32, dy: f32)
pub fn set_translate(&mut self, dx: f32, dy: f32)
设置为平移矩阵
Sourcepub fn set_rotate(&mut self, degrees: f32)
pub fn set_rotate(&mut self, degrees: f32)
设置为旋转矩阵
Trait Implementations§
impl Copy for Matrix
impl StructuralPartialEq for Matrix
Auto Trait Implementations§
impl Freeze for Matrix
impl RefUnwindSafe for Matrix
impl Send for Matrix
impl Sync for Matrix
impl Unpin for Matrix
impl UnwindSafe for Matrix
Blanket Implementations§
Source§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
Source§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
Convert the given value into an approximately equivalent representation.
Source§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
Source§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
The error type produced by a failed conversion.
Source§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Convert the subject into an approximately equivalent representation.
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
Source§impl<T> ConvUtil for T
impl<T> ConvUtil for T
Source§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
Approximate the subject to a given type with the default scheme.
Source§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>
Approximate the subject to a given type with a specific scheme.
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>
Converts
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>
Converts
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> Pointable for T
impl<T> Pointable for T
Source§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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.