Skip to main content

Transform3D

Struct Transform3D 

Source
pub struct Transform3D { /* private fields */ }
Expand description

A full 3D transformation stored as a 4×4 matrix.

Backed by glam::Mat4 which provides SIMD-optimized operations. Needed for perspective transforms, 3D rotations, and compositing layers that exist in 3D space.

For pure 2D work, prefer AffineTransform — it uses fewer operations and less memory.

Implementations§

Source§

impl Transform3D

Source

pub const IDENTITY: Self

Source

pub fn translate(tx: f32, ty: f32, tz: f32) -> Self

Source

pub fn scale(sx: f32, sy: f32, sz: f32) -> Self

Source

pub fn rotate_x(angle: f32) -> Self

Source

pub fn rotate_y(angle: f32) -> Self

Source

pub fn rotate_z(angle: f32) -> Self

Rotation around the Z axis (equivalent to 2D rotation).

Source

pub fn perspective(depth: f32) -> Self

A perspective projection that makes distant objects appear smaller. depth is the distance from the viewer to the z=0 plane.

Source

pub fn is_identity(&self) -> bool

Source

pub fn is_2d(&self) -> bool

True when the transform operates only in the X/Y plane (no Z rotation, no perspective, no Z translation). Can be losslessly represented as an AffineTransform.

Source

pub fn to_affine(&self) -> AffineTransform

Extract a 2D affine transform, dropping the Z components. Only meaningful when is_2d returns true.

Source

pub fn from_affine(t: &AffineTransform) -> Self

Promote a 2D affine transform to a 3D matrix.

Source

pub fn then(&self, other: &Self) -> Self

Source

pub fn inverse(&self) -> Option<Self>

Compute the inverse. Returns None if the matrix is singular.

Source

pub fn determinant(&self) -> f32

Source

pub fn transform_point(&self, p: Point) -> Point

Transform a 2D point through this 3D matrix. The point is treated as (x, y, 0, 1) and projected back to 2D by dividing by the homogeneous w coordinate.

Source

pub fn is_back_face_visible(&self) -> bool

True when the back face of a transformed plane would be visible (the Z component of the transformed normal is negative).

Source

pub fn as_raw(&self) -> &Mat4

Access the underlying glam::Mat4 for interop with rendering libraries that accept glam types directly.

Trait Implementations§

Source§

impl Clone for Transform3D

Source§

fn clone(&self) -> Transform3D

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Transform3D

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Transform3D

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Mul for Transform3D

Source§

type Output = Transform3D

The resulting type after applying the * operator.
Source§

fn mul(self, rhs: Self) -> Self

Performs the * operation. Read more
Source§

impl PartialEq for Transform3D

Source§

fn eq(&self, other: &Transform3D) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Transform3D

Source§

impl StructuralPartialEq for Transform3D

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.