Struct graphene::Quaternion

source ·
pub struct Quaternion { /* private fields */ }
Expand description

A quaternion.

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

GLib type: Inline allocated boxed type with stack copy semantics.

Implementations§

source§

impl Quaternion

source

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

source

pub unsafe fn from_glib_ptr_borrow<'a>( ptr: *const graphene_quaternion_t, ) -> &'a Self

Borrows the underlying C value.

source

pub unsafe fn from_glib_ptr_borrow_mut<'a>( ptr: *mut graphene_quaternion_t, ) -> &'a mut Self

Borrows the underlying C value mutably.

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

Copies the inline boxed type by value with the type-specific copy function.

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 HasParamSpec for Quaternion

§

type ParamSpec = ParamSpecBoxed

§

type SetValue = Quaternion

Preferred value to be used as setter for the associated ParamSpec.
§

type BuilderFn = fn(_: &str) -> ParamSpecBoxedBuilder<'_, Quaternion>

source§

fn param_spec_builder() -> Self::BuilderFn

source§

impl PartialEq 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 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§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

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

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

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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 T

source§

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

source§

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

source§

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

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

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

source§

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

source§

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

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

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

source§

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

source§

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

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

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

source§

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

source§

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

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

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

source§

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

source§

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

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

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

source§

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

source§

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

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *const GList) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(_: *const GList) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(_: *const GList) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

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

source§

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

source§

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

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *const GSList) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(_: *const GSList) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(_: *const GSList) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

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

source§

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

source§

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

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

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

source§

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

source§

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

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

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

source§

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

source§

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

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> IntoClosureReturnValue for T
where T: Into<Value>,

source§

impl<T> Property for T
where T: HasParamSpec,

§

type Value = T

source§

impl<T> PropertyGet for T
where T: HasParamSpec,

§

type Value = T

source§

fn get<R, F>(&self, f: F) -> R
where F: Fn(&<T as PropertyGet>::Value) -> R,

source§

impl<T> StaticTypeExt for T
where T: StaticType,

source§

fn ensure_type()

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

impl<T> ToOwned for T
where 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 T
where T: Send + ToValue + ?Sized,

source§

fn to_send_value(&self) -> SendValue

Returns a SendValue clone of self.
source§

impl<T, U> TryFrom<U> for T
where 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 T
where T: for<'a> FromValue<'a> + StaticType + 'static,

source§

impl<T, U> TryInto<U> for T
where 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 T
where T: FromValue<'a, Checker = C>, C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError<E>>, E: Error + Send + 'static,