Struct cogl::Quaternion [−][src]
pub struct Quaternion(_);
Implementations
impl Quaternion
[src]
pub fn dot_product(&self, b: &Quaternion) -> f32
[src]
b
A Quaternion
pub fn get_rotation_angle(&self) -> f32
[src]
pub fn get_rotation_axis(&self) -> f32
[src]
vector3
an allocated 3-float array
pub fn init(&mut self, angle: f32, x: f32, y: f32, z: f32)
[src]
Initializes a quaternion that rotates angle
degrees around the
axis vector (x
, y
, z
). The axis vector does not need to be
normalized.
angle
The angle you want to rotate around the given axis
x
The x component of your axis vector about which you want to rotate.
y
The y component of your axis vector about which you want to rotate.
z
The z component of your axis vector about which you want to rotate.
pub fn init_from_angle_vector(&mut self, angle: f32, axis3f: &[f32; 3])
[src]
Initializes a quaternion that rotates angle
degrees around the
given axis
vector. The axis vector does not need to be
normalized.
angle
The angle to rotate around axis3f
axis3f
your 3 component axis vector about which you want to rotate.
pub fn init_from_array(&mut self, array: &[f32])
[src]
Initializes a [w (x, y,z)] quaternion directly from an array of 4 floats: [w,x,y,z].
array
An array of 4 floats w,(x,y,z)
pub fn init_from_euler(&mut self, euler: &Euler)
[src]
euler
A Euler
with which to initialize the quaternion
pub fn init_from_matrix(&mut self, matrix: &Matrix)
[src]
Initializes a quaternion from a rotation matrix.
matrix
A rotation matrix with which to initialize the quaternion
pub fn init_from_quaternion(&mut self, src: &mut Quaternion)
[src]
src
A Quaternion
with which to initialize self
pub fn init_from_x_rotation(&mut self, angle: f32)
[src]
pub fn init_from_y_rotation(&mut self, angle: f32)
[src]
angle
The angle to rotate around the y axis
pub fn init_from_z_rotation(&mut self, angle: f32)
[src]
angle
The angle to rotate around the z axis
pub fn init_identity(&mut self)
[src]
Initializes the quaternion with the canonical quaternion identity [1 (0, 0, 0)] which represents no rotation. Multiplying a quaternion with this identity leaves the quaternion unchanged.
You might also want to consider using
cogl_get_static_identity_quaternion
.
pub fn invert(&mut self)
[src]
pub fn multiply(&mut self, left: &Quaternion, right: &Quaternion)
[src]
This combines the rotations of two quaternions into self
. The
operation is not commutative so the order is important because AxB
!= BxA. Cogl follows the standard convention for quaternions here
so the rotations are applied right
to left
. This is similar to the
combining of matrices.
<note>
It is possible to multiply the a
quaternion in-place, so
self
can be equal to a
but can’t be equal to b
.</note>
left
The second Quaternion
rotation to apply
right
The first Quaternion
rotation to apply
pub fn nlerp(&mut self, a: &Quaternion, b: &Quaternion, t: f32)
[src]
Performs a normalized linear interpolation between two quaternions.
That is it does a linear interpolation of the quaternion components
and then normalizes the result. This will follow the shortest arc
between the two orientations (just like the slerp
function) but
will not progress at a constant speed. Unlike slerp
nlerp is
commutative which is useful if you are blending animations
together. (I.e. nlerp (tmp, a, b) followed by nlerp (result, tmp,
d) is the same as nlerp (tmp, a, d) followed by nlerp (result, tmp,
b)). Finally nlerp is cheaper than slerp so it can be a good choice
if you don’t need the constant speed property of the slerp
function.
Notable properties:
<itemizedlist>
<listitem>
commutative: Yes
</listitem>
<listitem>
constant velocity: No
</listitem>
<listitem>
torque minimal (travels along the surface of the 4-sphere): Yes
</listitem>
<listitem>
faster than Quaternion::slerp
</listitem>
</itemizedlist>
a
The first Quaternion
b
The second Quaternion
t
The factor in the range [0,1] used to interpolate between
quaterion a
and b
.
pub fn normalize(&mut self)
[src]
pub fn pow(&mut self, exponent: f32)
[src]
exponent
the exponent
pub fn slerp(&mut self, a: &Quaternion, b: &Quaternion, t: f32)
[src]
Performs a spherical linear interpolation between two quaternions.
Noteable properties:
<itemizedlist>
<listitem>
commutative: No
</listitem>
<listitem>
constant velocity: Yes
</listitem>
<listitem>
torque minimal (travels along the surface of the 4-sphere): Yes
</listitem>
<listitem>
more expensive than Quaternion::nlerp
</listitem>
</itemizedlist>
a
The first Quaternion
b
The second Quaternion
t
The factor in the range [0,1] used to interpolate between
quaternion a
and b
.
pub fn squad(
&mut self,
prev: &Quaternion,
a: &Quaternion,
b: &Quaternion,
next: &Quaternion,
t: f32
)
[src]
&mut self,
prev: &Quaternion,
a: &Quaternion,
b: &Quaternion,
next: &Quaternion,
t: f32
)
Trait Implementations
impl Clone for Quaternion
[src]
fn clone(&self) -> Quaternion
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for Quaternion
[src]
impl Eq for Quaternion
[src]
impl Ord for Quaternion
[src]
fn cmp(&self, other: &Quaternion) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl PartialEq<Quaternion> for Quaternion
[src]
impl PartialOrd<Quaternion> for Quaternion
[src]
fn partial_cmp(&self, other: &Quaternion) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl StaticType for Quaternion
[src]
fn static_type() -> Type
[src]
Auto Trait Implementations
impl RefUnwindSafe for Quaternion
impl !Send for Quaternion
impl !Sync for Quaternion
impl Unpin for Quaternion
impl UnwindSafe for Quaternion
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToSendValue for T where
T: SetValue + Send + ToValue + ?Sized,
[src]
T: SetValue + Send + ToValue + ?Sized,
pub fn to_send_value(&self) -> SendValue
[src]
impl<T> ToValue for T where
T: SetValue + ?Sized,
[src]
T: SetValue + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,