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

source

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.

source

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.

source

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.

source

pub fn from_translation(translation: Vec3) -> Conformal3

A pure translation without any rotation or scale.

source

pub fn to_scale_rotation_translation(&self) -> (f32, Quat, Vec3)

Returns this transform decomposed into scale, rotation, translation

source

pub fn from_quat(rotation: Quat) -> Conformal3

A pure rotation without any translation or scale.

source

pub fn from_scale(scale: f32) -> Conformal3

A pure scale without any translation or rotation.

source

pub fn inverse(&self) -> Conformal3

Returns the inverse of this transform. my_transform * my_transform.inverse() = Conformal3::IDENITTY

source

pub fn normalize(&self) -> Conformal3

Returns self normalized. You generally don’t need to call this unless you’ve multiplied A LOT of Conformal3.

source

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.

source

pub fn to_affine3a(&self) -> Affine3A

Returns this transform as an Affine3A

source

pub fn to_mat4(self) -> Mat4

Returns this transform as a Mat4

source

pub fn transform_point3(&self, value: Vec3) -> Vec3

Transform a Vec3 using translation, rotation, scale.

source

pub fn transform_vector3(&self, value: Vec3) -> Vec3

Transform a Vec3 using only rotation and scale.

source

pub fn rotation(&self) -> Quat

Returns the rotation

source

pub fn set_rotation(&mut self, rotation: Quat)

Sets the rotation

source

pub fn translation(&self) -> Vec3

Returns the translation

source

pub fn translation_and_scale(&self) -> Vec4

Returns the translation and scale as a Vec4

source

pub fn set_translation(&mut self, translation: Vec3)

Sets the translation

source

pub fn scale(&self) -> f32

Returns the scale

source

pub fn inv_scale(&self) -> f32

Returns the scale inverse

source

pub fn set_scale(&mut self, scale: f32)

Sets the scale

source

pub fn from_iso_transform(t: IsoTransform) -> Conformal3

Builds a Conformal3 from an IsoTransform (rotation, translation).

source

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.

source

pub fn is_finite(&self) -> bool

Returns true if, and only if, all components are finite.

If any component is either NaN, positive or negative infinity, this will return false.

Trait Implementations§

source§

impl Clone for Conformal3

source§

fn clone(&self) -> Conformal3

Returns a copy 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 Conformal3

source§

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

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

impl Default for Conformal3

Identity transform

source§

fn default() -> Conformal3

Identity transform

source§

impl<'de> Deserialize<'de> for Conformal3

source§

fn deserialize<__D>( __deserializer: __D ) -> Result<Conformal3, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl From<Conformal3> for Affine3A

source§

fn from(c: Conformal3) -> Affine3A

Converts to this type from the input type.
source§

impl From<Conformal3> for Mat4

source§

fn from(c: Conformal3) -> Mat4

Converts to this type from the input type.
source§

impl From<IsoTransform> for Conformal3

source§

fn from(c: IsoTransform) -> Conformal3

Converts to this type from the input type.
source§

impl Mul<&Conformal3> for &Conformal3

§

type Output = Conformal3

The resulting type after applying the * operator.
source§

fn mul(self, rhs: &Conformal3) -> Conformal3

Performs the * operation. Read more
source§

impl Mul<Conformal3> for &Conformal3

§

type Output = Conformal3

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl Mul<Conformal3> for Conformal3

§

type Output = Conformal3

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl Mul<Conformal3> for IsoTransform

§

type Output = Conformal3

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl Mul<IsoTransform> for Conformal3

§

type Output = Conformal3

The resulting type after applying the * operator.
source§

fn mul(self, rhs: IsoTransform) -> Conformal3

Performs the * operation. Read more
source§

impl Mul<Ray3> for Conformal3

§

type Output = Ray3

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl PartialEq<Conformal3> for Conformal3

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a_, C_> Readable<'a_, C_> for Conformal3where C_: Context,

source§

fn read_from<R_>( _reader_: &mut R_ ) -> Result<Conformal3, <C_ as Context>::Error>where R_: Reader<'a_, C_>,

source§

fn minimum_bytes_needed() -> usize

source§

fn read_from_buffer_with_ctx( context: C, buffer: &'a [u8] ) -> Result<Self, <C as Context>::Error>

source§

fn read_with_length_from_buffer_with_ctx( context: C, buffer: &'a [u8] ) -> (Result<Self, <C as Context>::Error>, usize)

source§

fn read_from_buffer_copying_data_with_ctx( context: C, buffer: &[u8] ) -> Result<Self, <C as Context>::Error>

source§

fn read_with_length_from_buffer_copying_data_with_ctx( context: C, buffer: &[u8] ) -> (Result<Self, <C as Context>::Error>, usize)

source§

fn read_with_length_from_buffer_copying_data_with_ctx_mut( context: &mut C, buffer: &[u8] ) -> (Result<Self, <C as Context>::Error>, usize)

source§

fn read_from_stream_unbuffered_with_ctx<S>( context: C, stream: S ) -> Result<Self, <C as Context>::Error>where S: Read,

source§

fn read_from_stream_buffered_with_ctx<S>( context: C, stream: S ) -> Result<Self, <C as Context>::Error>where S: Read,

source§

fn read_from_file_with_ctx( context: C, path: impl AsRef<Path> ) -> Result<Self, <C as Context>::Error>

source§

impl Serialize for Conformal3

source§

fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<C_> Writable<C_> for Conformal3where C_: Context,

source§

fn write_to<T_>(&self, _writer_: &mut T_) -> Result<(), <C_ as Context>::Error>where T_: Writer<C_> + ?Sized,

source§

fn write_to_buffer_with_ctx( &self, context: C, buffer: &mut [u8] ) -> Result<(), <C as Context>::Error>

source§

fn write_to_buffer_with_ctx_mut( &self, context: &mut C, buffer: &mut [u8] ) -> Result<(), <C as Context>::Error>

source§

fn write_to_vec_with_ctx( &self, context: C ) -> Result<Vec<u8, Global>, <C as Context>::Error>

source§

fn write_to_vec_with_ctx_mut( &self, context: &mut C ) -> Result<Vec<u8, Global>, <C as Context>::Error>

source§

fn write_to_stream_with_ctx<S>( &self, context: C, stream: S ) -> Result<(), <C as Context>::Error>where S: Write,

source§

fn write_to_file_with_ctx( &self, context: C, path: impl AsRef<Path> ) -> Result<(), <C as Context>::Error>

source§

fn bytes_needed(&self) -> Result<usize, <C as Context>::Error>

source§

impl Copy for Conformal3

source§

impl StructuralPartialEq for Conformal3

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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 Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

impl<T> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,