Struct ark_api::Conformal3
source · pub struct Conformal3 { /* private fields */ }Expand description
Represents a transform with translation + rotation + uniform scale. Preserves local angles. Scale and rotation will be applied first, then translation.
Implementations§
source§impl Conformal3
impl Conformal3
sourcepub const IDENTITY: Conformal3 = Self{ translation_and_scale: Vec4::W, rotation: Quat::IDENTITY,}
pub const IDENTITY: Conformal3 = Self{ translation_and_scale: Vec4::W, rotation: Quat::IDENTITY,}
The identity transform: doesn’t transform at all. Like multiplying with 1.
sourcepub fn from_scale_rotation_translation(
scale: f32,
rotation: Quat,
translation: Vec3
) -> Conformal3
pub fn from_scale_rotation_translation( scale: f32, rotation: Quat, translation: Vec3 ) -> Conformal3
A transform that first rotates and scales around the origin and then moves all points by a set amount.
Equivalent to Conformal3::from_translation(translation) * (Conformal3::from_scale(rotation) * Conformal3::from_quat(scale)).
The given rotation should be normalized.
sourcepub fn from_rotation_translation(rotation: Quat, translation: Vec3) -> Conformal3
pub fn from_rotation_translation(rotation: Quat, translation: Vec3) -> Conformal3
A transform that first rotates around the origin and then moves all points by a set amount.
Equivalent to Conformal3::from_translation(translation) * Conformal3::from_quat(rotation).
The given rotation should be normalized.
sourcepub fn from_translation(translation: Vec3) -> Conformal3
pub fn from_translation(translation: Vec3) -> Conformal3
A pure translation without any rotation or scale.
sourcepub fn to_scale_rotation_translation(&self) -> (f32, Quat, Vec3)
pub fn to_scale_rotation_translation(&self) -> (f32, Quat, Vec3)
Returns this transform decomposed into scale, rotation, translation
sourcepub fn from_quat(rotation: Quat) -> Conformal3
pub fn from_quat(rotation: Quat) -> Conformal3
A pure rotation without any translation or scale.
sourcepub fn from_scale(scale: f32) -> Conformal3
pub fn from_scale(scale: f32) -> Conformal3
A pure scale without any translation or rotation.
sourcepub fn inverse(&self) -> Conformal3
pub fn inverse(&self) -> Conformal3
Returns the inverse of this transform. my_transform * my_transform.inverse() = Conformal3::IDENITTY
sourcepub fn normalize(&self) -> Conformal3
pub fn normalize(&self) -> Conformal3
Returns self normalized.
You generally don’t need to call this unless you’ve multiplied A LOT of Conformal3.
sourcepub fn from_affine3a_lossy(transform: &Affine3A) -> Conformal3
pub fn from_affine3a_lossy(transform: &Affine3A) -> Conformal3
Will attempt to create a Conformal3 from an Affine3A. Assumes no shearing and uniform scaling.
If the affine transform contains shearing or non-uniform scaling it will be lost.
sourcepub fn to_affine3a(&self) -> Affine3A
pub fn to_affine3a(&self) -> Affine3A
Returns this transform as an Affine3A
sourcepub fn transform_point3(&self, value: Vec3) -> Vec3
pub fn transform_point3(&self, value: Vec3) -> Vec3
Transform a Vec3 using translation, rotation, scale.
sourcepub fn transform_vector3(&self, value: Vec3) -> Vec3
pub fn transform_vector3(&self, value: Vec3) -> Vec3
Transform a Vec3 using only rotation and scale.
sourcepub fn set_rotation(&mut self, rotation: Quat)
pub fn set_rotation(&mut self, rotation: Quat)
Sets the rotation
sourcepub fn translation(&self) -> Vec3
pub fn translation(&self) -> Vec3
Returns the translation
sourcepub fn translation_and_scale(&self) -> Vec4
pub fn translation_and_scale(&self) -> Vec4
Returns the translation and scale as a Vec4
sourcepub fn set_translation(&mut self, translation: Vec3)
pub fn set_translation(&mut self, translation: Vec3)
Sets the translation
sourcepub fn from_iso_transform(t: IsoTransform) -> Conformal3
pub fn from_iso_transform(t: IsoTransform) -> Conformal3
Builds a Conformal3 from an IsoTransform (rotation, translation).
sourcepub fn look_at_rh(eye: Vec3, target: Vec3, up: Vec3) -> Option<Conformal3>
pub fn look_at_rh(eye: Vec3, target: Vec3, up: Vec3) -> Option<Conformal3>
Creates a right-handed view transform using a camera position, a point to look at, and an up direction.
The result transforms from world coordinates to view coordinates.
For a view coordinate system with +X=right, +Y=up and +Z=back.
Will return None if any argument is zero, non-finite, or if forward and up are colinear.
Trait Implementations§
source§impl Clone for Conformal3
impl Clone for Conformal3
source§fn clone(&self) -> Conformal3
fn clone(&self) -> Conformal3
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for Conformal3
impl Debug for Conformal3
source§impl Default for Conformal3
impl Default for Conformal3
Identity transform
source§fn default() -> Conformal3
fn default() -> Conformal3
Identity transform
source§impl<'de> Deserialize<'de> for Conformal3
impl<'de> Deserialize<'de> for Conformal3
source§fn deserialize<__D>(
__deserializer: __D
) -> Result<Conformal3, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>( __deserializer: __D ) -> Result<Conformal3, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,
source§impl From<Conformal3> for Affine3A
impl From<Conformal3> for Affine3A
source§fn from(c: Conformal3) -> Affine3A
fn from(c: Conformal3) -> Affine3A
source§impl From<Conformal3> for Mat4
impl From<Conformal3> for Mat4
source§fn from(c: Conformal3) -> Mat4
fn from(c: Conformal3) -> Mat4
source§impl From<IsoTransform> for Conformal3
impl From<IsoTransform> for Conformal3
source§fn from(c: IsoTransform) -> Conformal3
fn from(c: IsoTransform) -> Conformal3
source§impl Mul<&Conformal3> for &Conformal3
impl Mul<&Conformal3> for &Conformal3
§type Output = Conformal3
type Output = Conformal3
* operator.source§fn mul(self, rhs: &Conformal3) -> Conformal3
fn mul(self, rhs: &Conformal3) -> Conformal3
* operation. Read moresource§impl Mul<Conformal3> for &Conformal3
impl Mul<Conformal3> for &Conformal3
§type Output = Conformal3
type Output = Conformal3
* operator.source§fn mul(self, rhs: Conformal3) -> Conformal3
fn mul(self, rhs: Conformal3) -> Conformal3
* operation. Read moresource§impl Mul<Conformal3> for Conformal3
impl Mul<Conformal3> for Conformal3
§type Output = Conformal3
type Output = Conformal3
* operator.source§fn mul(self, rhs: Conformal3) -> Conformal3
fn mul(self, rhs: Conformal3) -> Conformal3
* operation. Read moresource§impl Mul<Conformal3> for IsoTransform
impl Mul<Conformal3> for IsoTransform
§type Output = Conformal3
type Output = Conformal3
* operator.source§fn mul(self, rhs: Conformal3) -> Conformal3
fn mul(self, rhs: Conformal3) -> Conformal3
* operation. Read moresource§impl Mul<IsoTransform> for Conformal3
impl Mul<IsoTransform> for Conformal3
§type Output = Conformal3
type Output = Conformal3
* operator.source§fn mul(self, rhs: IsoTransform) -> Conformal3
fn mul(self, rhs: IsoTransform) -> Conformal3
* operation. Read moresource§impl Mul<Ray3> for Conformal3
impl Mul<Ray3> for Conformal3
source§impl PartialEq<Conformal3> for Conformal3
impl PartialEq<Conformal3> for Conformal3
source§fn eq(&self, other: &Conformal3) -> bool
fn eq(&self, other: &Conformal3) -> bool
self and other values to be equal, and is used
by ==.