Struct graphene::Euler

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

Describe a rotation using Euler angles.

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

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

Implementations§

source§

impl Euler

source

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

source

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

Borrows the underlying C value.

source

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

Borrows the underlying C value mutably.

source§

impl Euler

source

pub fn alpha(&self) -> f32

Retrieves the first component of the Euler angle vector, depending on the order of rotation.

See also: x()

§Returns

the first component of the Euler angle vector, in radians

source

pub fn beta(&self) -> f32

Retrieves the second component of the Euler angle vector, depending on the order of rotation.

See also: y()

§Returns

the second component of the Euler angle vector, in radians

source

pub fn gamma(&self) -> f32

Retrieves the third component of the Euler angle vector, depending on the order of rotation.

See also: z()

§Returns

the third component of the Euler angle vector, in radians

source

pub fn order(&self) -> EulerOrder

Retrieves the order used to apply the rotations described in the Euler structure, when converting to and from other structures, like Quaternion and Matrix.

This function does not return the EulerOrder::Default enumeration value; it will return the effective order of rotation instead.

§Returns

the order used to apply the rotations

source

pub fn x(&self) -> f32

Retrieves the rotation angle on the X axis, in degrees.

§Returns

the rotation angle

source

pub fn y(&self) -> f32

Retrieves the rotation angle on the Y axis, in degrees.

§Returns

the rotation angle

source

pub fn z(&self) -> f32

Retrieves the rotation angle on the Z axis, in degrees.

§Returns

the rotation angle

source

pub fn reorder(&self, order: EulerOrder) -> Euler

Reorders a Euler using order.

This function is equivalent to creating a Quaternion from the given Euler, and then converting the quaternion into another Euler.

§order

the new order

§Returns
§res

return location for the reordered Euler

source

pub fn to_matrix(&self) -> Matrix

Converts a Euler into a transformation matrix expressing the extrinsic composition of rotations described by the Euler angles.

The rotations are applied over the reference frame axes in the order associated with the Euler; for instance, if the order used to initialize self is EulerOrder::Xyz:

  • the first rotation moves the body around the X axis with an angle φ
  • the second rotation moves the body around the Y axis with an angle of ϑ
  • the third rotation moves the body around the Z axis with an angle of ψ

The rotation sign convention is right-handed, to preserve compatibility between Euler-based, quaternion-based, and angle-axis-based rotations.

§Returns
§res

return location for a Matrix

source

pub fn to_quaternion(&self) -> Quaternion

Converts a Euler into a Quaternion.

§Returns
§res

return location for a Quaternion

source

pub fn to_vec3(&self) -> Vec3

Retrieves the angles of a Euler and initializes a Vec3 with them.

§Returns
§res

return location for a Vec3

source§

impl Euler

source

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

Initializes a Euler using the given angles.

The order of the rotations is EulerOrder::Default.

§x

rotation angle on the X axis, in degrees

§y

rotation angle on the Y axis, in degrees

§z

rotation angle on the Z axis, in degrees

§Returns

the initialized Euler

source

pub fn from_matrix(m: Option<&Matrix>, order: EulerOrder) -> Self

Initializes a Euler using the given rotation matrix.

If the Matrix m is None, the Euler will be initialized with all angles set to 0.

§m

a rotation matrix

§order

the order used to apply the rotations

§Returns

the initialized Euler

source

pub fn from_quaternion(q: Option<&Quaternion>, order: EulerOrder) -> Self

Initializes a Euler using the given normalized quaternion.

If the Quaternion q is None, the Euler will be initialized with all angles set to 0.

§q

a normalized Quaternion

§order

the order used to apply the rotations

§Returns

the initialized Euler

source

pub fn from_radians(x: f32, y: f32, z: f32, order: EulerOrder) -> Self

Initializes a Euler using the given angles and order of rotation.

§x

rotation angle on the X axis, in radians

§y

rotation angle on the Y axis, in radians

§z

rotation angle on the Z axis, in radians

§order

order of rotations

§Returns

the initialized Euler

source

pub fn from_vec3(v: Option<&Vec3>, order: EulerOrder) -> Self

Initializes a Euler using the angles contained in a Vec3.

If the Vec3 v is None, the Euler will be initialized with all angles set to 0.

§v

a Vec3 containing the rotation angles in degrees

§order

the order used to apply the rotations

§Returns

the initialized Euler

source

pub fn with_order(x: f32, y: f32, z: f32, order: EulerOrder) -> Self

Initializes a Euler with the given angles and order.

§x

rotation angle on the X axis, in degrees

§y

rotation angle on the Y axis, in degrees

§z

rotation angle on the Z axis, in degrees

§order

the order used to apply the rotations

§Returns

the initialized Euler

Trait Implementations§

source§

impl Clone for Euler

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 Euler

source§

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

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

impl HasParamSpec for Euler

§

type ParamSpec = ParamSpecBoxed

§

type SetValue = Euler

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

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

source§

fn param_spec_builder() -> Self::BuilderFn

source§

impl PartialEq for Euler

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 Euler

source§

fn static_type() -> Type

Returns the type identifier of Self.
source§

impl Copy for Euler

source§

impl Eq for Euler

Auto Trait Implementations§

§

impl Freeze for Euler

§

impl RefUnwindSafe for Euler

§

impl Send for Euler

§

impl Sync for Euler

§

impl Unpin for Euler

§

impl UnwindSafe for Euler

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,