Struct cogl::Quaternion [−][src]
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_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 Hash for Quaternion[src]
fn hash<__H: Hasher>(&self, state: &mut __H)[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
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>,