Struct ux::prelude::dx::Quaternion [−][src]
pub struct Quaternion(_);
Implementations
impl Quaternion
[src]
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
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]
impl Clone for Quaternion
[src]pub fn clone(&self) -> Quaternion
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Eq for Quaternion
[src]
impl Eq for Quaternion
[src]impl Ord for Quaternion
[src]
impl Ord for Quaternion
[src]impl PartialEq<Quaternion> for Quaternion
[src]
impl PartialEq<Quaternion> for Quaternion
[src]impl PartialOrd<Quaternion> for Quaternion
[src]
impl PartialOrd<Quaternion> for Quaternion
[src]pub 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]
impl StaticType for Quaternion
[src]pub fn static_type() -> Type
[src]
Auto Trait Implementations
impl RefUnwindSafe for Quaternion
impl RefUnwindSafe for Quaternion
impl !Send for Quaternion
impl !Send for Quaternion
impl !Sync for Quaternion
impl !Sync for Quaternion
impl Unpin for Quaternion
impl Unpin for Quaternion
impl UnwindSafe for Quaternion
impl UnwindSafe for Quaternion
Blanket Implementations
impl<Fr, To> IntoColor<To> for Fr where
To: FromColor<Fr>,
[src]
impl<Fr, To> IntoColor<To> for Fr where
To: FromColor<Fr>,
[src]pub fn into_color(self) -> To
[src]
impl<T> ToSendValue for T where
T: SetValue + Send + ToValue + ?Sized,
[src]
impl<T> ToSendValue for T where
T: SetValue + Send + ToValue + ?Sized,
[src]pub fn to_send_value(&self) -> SendValue
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,