Struct graphene::Quaternion

source ·
#[repr(transparent)]
pub struct Quaternion { /* private fields */ }
Expand description

A quaternion.

The contents of the Quaternion structure are private and should never be accessed directly.

Implementations§

source§

impl Quaternion

source

pub fn as_ptr(&self) -> *mut graphene_quaternion_t

source§

impl Quaternion

source

pub fn add(&self, b: &Quaternion) -> Quaternion

Adds two Quaternion self and b.

b

a Quaternion

Returns
res

the result of the operation

source

pub fn dot(&self, b: &Quaternion) -> f32

Computes the dot product of two Quaternion.

b

a Quaternion

Returns

the value of the dot products

source

pub fn invert(&self) -> Quaternion

Inverts a Quaternion, and returns the conjugate quaternion of self.

Returns
res

return location for the inverted quaternion

source

pub fn multiply(&self, b: &Quaternion) -> Quaternion

Multiplies two Quaternion self and b.

b

a Quaternion

Returns
res

the result of the operation

source

pub fn normalize(&self) -> Quaternion

Normalizes a Quaternion.

Returns
res

return location for the normalized quaternion

source

pub fn scale(&self, factor: f32) -> Quaternion

Scales all the elements of a Quaternion self using the given scalar factor.

factor

a scaling factor

Returns
res

the result of the operation

source

pub fn slerp(&self, b: &Quaternion, factor: f32) -> Quaternion

Interpolates between the two given quaternions using a spherical linear interpolation, or SLERP, using the given interpolation factor.

b

a Quaternion

factor

the linear interpolation factor

Returns
res

return location for the interpolated quaternion

source

pub fn to_angle_vec3(&self) -> (f32, Vec3)

Converts a quaternion into an angle, axis pair.

Returns
angle

return location for the angle, in degrees

axis

return location for the rotation axis

source

pub fn to_angles(&self) -> (f32, f32, f32)

Converts a Quaternion to its corresponding rotations on the Euler angles on each axis.

Returns
deg_x

return location for the rotation angle on the X axis (yaw), in degrees

deg_y

return location for the rotation angle on the Y axis (pitch), in degrees

deg_z

return location for the rotation angle on the Z axis (roll), in degrees

source

pub fn to_matrix(&self) -> Matrix

Converts a quaternion into a transformation matrix expressing the rotation defined by the Quaternion.

Returns
m

a Matrix

source

pub fn to_radians(&self) -> (f32, f32, f32)

Converts a Quaternion to its corresponding rotations on the Euler angles on each axis.

Returns
rad_x

return location for the rotation angle on the X axis (yaw), in radians

rad_y

return location for the rotation angle on the Y axis (pitch), in radians

rad_z

return location for the rotation angle on the Z axis (roll), in radians

source

pub fn to_vec4(&self) -> Vec4

Copies the components of a Quaternion into a Vec4.

Returns
res

return location for a Vec4

source§

impl Quaternion

source

pub fn new(x: f32, y: f32, z: f32, w: f32) -> Self

Initializes a Quaternion using the given four values.

x

the first component of the quaternion

y

the second component of the quaternion

z

the third component of the quaternion

w

the fourth component of the quaternion

Returns

the initialized quaternion

source

pub fn from_angle_vec3(angle: f32, axis: &Vec3) -> Self

Initializes a Quaternion using an angle on a specific axis.

angle

the rotation on a given axis, in degrees

axis

the axis of rotation, expressed as a vector

Returns

the initialized quaternion

source

pub fn from_angles(deg_x: f32, deg_y: f32, deg_z: f32) -> Self

Initializes a Quaternion using the values of the Euler angles on each axis.

See also: from_euler()

deg_x

rotation angle on the X axis (yaw), in degrees

deg_y

rotation angle on the Y axis (pitch), in degrees

deg_z

rotation angle on the Z axis (roll), in degrees

Returns

the initialized quaternion

source

pub fn from_euler(e: &Euler) -> Self

Initializes a Quaternion using the given Euler.

e

a Euler

Returns

the initialized Quaternion

source

pub fn from_matrix(m: &Matrix) -> Self

Initializes a Quaternion using the rotation components of a transformation matrix.

m

a Matrix

Returns

the initialized quaternion

source

pub fn from_radians(rad_x: f32, rad_y: f32, rad_z: f32) -> Self

Initializes a Quaternion using the values of the Euler angles on each axis.

See also: from_euler()

rad_x

rotation angle on the X axis (yaw), in radians

rad_y

rotation angle on the Y axis (pitch), in radians

rad_z

rotation angle on the Z axis (roll), in radians

Returns

the initialized quaternion

source

pub fn from_vec4(src: &Vec4) -> Self

Initializes a Quaternion with the values from src.

src

a Vec4

Returns

the initialized quaternion

source

pub fn new_identity() -> Self

Initializes a Quaternion using the identity transformation.

Returns

the initialized quaternion

source

pub fn x(&self) -> f32

source

pub fn y(&self) -> f32

source

pub fn z(&self) -> f32

source

pub fn w(&self) -> f32

Trait Implementations§

source§

impl Clone for Quaternion

source§

fn clone(&self) -> Self

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 Quaternion

source§

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

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

impl PartialEq<Quaternion> for Quaternion

source§

fn eq(&self, other: &Self) -> 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 StaticType for Quaternion

source§

fn static_type() -> Type

Returns the type identifier of Self.
source§

impl Copy for Quaternion

source§

impl Eq for Quaternion

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,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

unsafe fn from_glib_none_num_as_vec( ptr: *const GPtrArray, num: usize ) -> Vec<T, Global>

source§

unsafe fn from_glib_container_num_as_vec( _: *const GPtrArray, _: usize ) -> Vec<T, Global>

source§

unsafe fn from_glib_full_num_as_vec( _: *const GPtrArray, _: usize ) -> Vec<T, Global>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

unsafe fn from_glib_none_num_as_vec( ptr: *const GSList, num: usize ) -> Vec<T, Global>

source§

unsafe fn from_glib_container_num_as_vec( _: *const GSList, _: usize ) -> Vec<T, Global>

source§

unsafe fn from_glib_full_num_as_vec( _: *const GSList, _: usize ) -> Vec<T, Global>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

unsafe fn from_glib_none_num_as_vec( ptr: *mut GList, num: usize ) -> Vec<T, Global>

source§

unsafe fn from_glib_container_num_as_vec( ptr: *mut GList, num: usize ) -> Vec<T, Global>

source§

unsafe fn from_glib_full_num_as_vec( ptr: *mut GList, num: usize ) -> Vec<T, Global>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

unsafe fn from_glib_none_num_as_vec( ptr: *mut GPtrArray, num: usize ) -> Vec<T, Global>

source§

unsafe fn from_glib_container_num_as_vec( ptr: *mut GPtrArray, num: usize ) -> Vec<T, Global>

source§

unsafe fn from_glib_full_num_as_vec( ptr: *mut GPtrArray, num: usize ) -> Vec<T, Global>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

unsafe fn from_glib_none_num_as_vec( ptr: *mut GSList, num: usize ) -> Vec<T, Global>

source§

unsafe fn from_glib_container_num_as_vec( ptr: *mut GSList, num: usize ) -> Vec<T, Global>

source§

unsafe fn from_glib_full_num_as_vec( ptr: *mut GSList, num: usize ) -> Vec<T, Global>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

unsafe fn from_glib_none_as_vec(ptr: *const GPtrArray) -> Vec<T, Global>

source§

unsafe fn from_glib_container_as_vec(_: *const GPtrArray) -> Vec<T, Global>

source§

unsafe fn from_glib_full_as_vec(_: *const GPtrArray) -> Vec<T, Global>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

unsafe fn from_glib_none_as_vec(ptr: *mut GList) -> Vec<T, Global>

source§

unsafe fn from_glib_container_as_vec(ptr: *mut GList) -> Vec<T, Global>

source§

unsafe fn from_glib_full_as_vec(ptr: *mut GList) -> Vec<T, Global>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

unsafe fn from_glib_none_as_vec(ptr: *mut GPtrArray) -> Vec<T, Global>

source§

unsafe fn from_glib_container_as_vec(ptr: *mut GPtrArray) -> Vec<T, Global>

source§

unsafe fn from_glib_full_as_vec(ptr: *mut GPtrArray) -> Vec<T, Global>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for Twhere T: GlibPtrDefault + FromGlibPtrNone<<T as GlibPtrDefault>::GlibType> + FromGlibPtrFull<<T as GlibPtrDefault>::GlibType>,

source§

unsafe fn from_glib_none_as_vec(ptr: *mut GSList) -> Vec<T, Global>

source§

unsafe fn from_glib_container_as_vec(ptr: *mut GSList) -> Vec<T, Global>

source§

unsafe fn from_glib_full_as_vec(ptr: *mut GSList) -> Vec<T, Global>

source§

impl<T, U> Into<U> for Twhere 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> StaticTypeExt for Twhere T: StaticType,

source§

fn ensure_type()

Ensures that the type has been registered with the type system.
source§

impl<T> ToClosureReturnValue for Twhere T: ToValue,

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> ToSendValue for Twhere T: Send + ToValue + ?Sized,

source§

fn to_send_value(&self) -> SendValue

Returns a SendValue clone of self.
source§

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

§

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> TryFromClosureReturnValue for Twhere T: for<'a> FromValue<'a> + StaticType + 'static,

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.
source§

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

Performs the conversion.
source§

impl<'a, T, C, E> FromValueOptional<'a> for Twhere T: FromValue<'a, Checker = C>, C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError<E>>, E: Error + Send + 'static,