QQuaternion 類錶示由嚮量和標量組成的四元數。 更多...
| 頭: |
#include <QQuaternion>
|
| CMake: |
find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
|
| qmake: |
QT += gui
|
| QQuaternion () | |
| QQuaternion (const QVector4D & vector ) | |
| QQuaternion (float scalar , const QVector3D & vector ) | |
| QQuaternion (float scalar , float xpos , float ypos , float zpos ) | |
| QQuaternion | conjugated () const |
| void | getAxes (QVector3D * xAxis , QVector3D * yAxis , QVector3D * zAxis ) const |
| void | getAxisAndAngle (float * x , float * y , float * z , float * angle ) const |
| void | getAxisAndAngle (QVector3D * axis , float * angle ) const |
| void | getEulerAngles (float * pitch , float * yaw , float * roll ) const |
| QQuaternion | inverted () const |
| bool | isIdentity () const |
| bool | isNull () const |
| float | length () const |
| float | lengthSquared () const |
| void | normalize () |
| QQuaternion | normalized () const |
| QVector3D | rotatedVector (const QVector3D & vector ) const |
| float | scalar () const |
| void | setScalar (float scalar ) |
| void | setVector (const QVector3D & vector ) |
| void | setVector (float x , float y , float z ) |
| void | setX (float x ) |
| void | setY (float y ) |
| void | setZ (float z ) |
| QVector3D | toEulerAngles () const |
| QMatrix3x3 | toRotationMatrix () const |
| QVector4D | toVector4D () const |
| QVector3D | vector () const |
| float | x () const |
| float | y () const |
| float | z () const |
| QVariant | operator QVariant () const |
| QQuaternion & | operator*= (const QQuaternion & quaternion ) |
| QQuaternion & | operator*= (float factor ) |
| QQuaternion & | operator+= (const QQuaternion & quaternion ) |
| QQuaternion & | operator-= (const QQuaternion & quaternion ) |
| QQuaternion & | operator/= (float divisor ) |
| float | dotProduct (const QQuaternion & q1 , const QQuaternion & q2 ) |
| QQuaternion | fromAxes (const QVector3D & xAxis , const QVector3D & yAxis , const QVector3D & zAxis ) |
| QQuaternion | fromAxisAndAngle (const QVector3D & axis , float angle ) |
| QQuaternion | fromAxisAndAngle (float x , float y , float z , float angle ) |
| QQuaternion | fromDirection (const QVector3D & direction , const QVector3D & up ) |
| QQuaternion | fromEulerAngles (float pitch , float yaw , float roll ) |
| QQuaternion | fromEulerAngles (const QVector3D & angles ) |
| QQuaternion | fromRotationMatrix (const QMatrix3x3 & rot3x3 ) |
| QQuaternion | nlerp (const QQuaternion & q1 , const QQuaternion & q2 , float t ) |
| QQuaternion | rotationTo (const QVector3D & from , const QVector3D & to ) |
| QQuaternion | slerp (const QQuaternion & q1 , const QQuaternion & q2 , float t ) |
| bool | qFuzzyCompare (const QQuaternion & q1 , const QQuaternion & q2 ) |
| bool | operator!= (const QQuaternion & q1 , const QQuaternion & q2 ) |
| QQuaternion | operator* (const QQuaternion & q1 , const QQuaternion & q2 ) |
| QVector3D | operator* (const QQuaternion & quaternion , const QVector3D & vec ) |
| QQuaternion | operator* (const QQuaternion & quaternion , float factor ) |
| QQuaternion | operator* (float factor , const QQuaternion & quaternion ) |
| QQuaternion | operator+ (const QQuaternion & q1 , const QQuaternion & q2 ) |
| QQuaternion | operator- (const QQuaternion & quaternion ) |
| QQuaternion | operator- (const QQuaternion & q1 , const QQuaternion & q2 ) |
| QQuaternion | operator/ (const QQuaternion & quaternion , float divisor ) |
| QDataStream & | operator<< (QDataStream & stream , const QQuaternion & quaternion ) |
| bool | operator== (const QQuaternion & q1 , const QQuaternion & q2 ) |
| QDataStream & | operator>> (QDataStream & stream , QQuaternion & quaternion ) |
Quaternions are used to represent rotations in 3D space, and consist of a 3D rotation axis specified by the x, y, and z coordinates, and a scalar representing the rotation angle.
[constexpr noexcept]
QQuaternion::
QQuaternion
()
Constructs an identity quaternion (1, 0, 0, 0), i.e. with the vector (0, 0, 0) and scalar 1.
[explicit constexpr noexcept]
QQuaternion::
QQuaternion
(const
QVector4D
&
vector
)
構造四元數從分量為 vector .
[constexpr noexcept]
QQuaternion::
QQuaternion
(
float
scalar
, const
QVector3D
&
vector
)
Constructs a quaternion vector from the specified vector and scalar .
[constexpr noexcept]
QQuaternion::
QQuaternion
(
float
scalar
,
float
xpos
,
float
ypos
,
float
zpos
)
Constructs a quaternion with the vector ( xpos , ypos , zpos ) 和 scalar .
[constexpr noexcept]
QQuaternion
QQuaternion::
conjugated
() const
Returns the conjugate of this quaternion, which is (-x, -y, -z, scalar).
[static constexpr noexcept]
float
QQuaternion::
dotProduct
(const
QQuaternion
&
q1
, const
QQuaternion
&
q2
)
返迴點積為 q1 and q2 .
另請參閱 length ().
[static]
QQuaternion
QQuaternion::
fromAxes
(const
QVector3D
&
xAxis
, const
QVector3D
&
yAxis
, const
QVector3D
&
zAxis
)
Constructs the quaternion using 3 axes ( xAxis , yAxis , zAxis ).
注意: The axes are assumed to be orthonormal.
另請參閱 getAxes () 和 fromRotationMatrix ().
[static]
QQuaternion
QQuaternion::
fromAxisAndAngle
(const
QVector3D
&
axis
,
float
angle
)
Creates a normalized quaternion that corresponds to rotating through angle degrees about the specified 3D axis .
另請參閱 getAxisAndAngle ().
[static]
QQuaternion
QQuaternion::
fromAxisAndAngle
(
float
x
,
float
y
,
float
z
,
float
angle
)
Creates a normalized quaternion that corresponds to rotating through angle degrees about the 3D axis ( x , y , z ).
另請參閱 getAxisAndAngle ().
[static]
QQuaternion
QQuaternion::
fromDirection
(const
QVector3D
&
direction
, const
QVector3D
&
up
)
Constructs the quaternion using specified forward direction direction and upward direction up . If the upward direction was not specified or the forward and upward vectors are collinear, a new orthonormal upward direction will be generated.
另請參閱 fromAxes () 和 rotationTo ().
[static]
QQuaternion
QQuaternion::
fromEulerAngles
(
float
pitch
,
float
yaw
,
float
roll
)
Creates a quaternion that corresponds to a rotation of roll degrees around the z axis, pitch degrees around the x axis, and yaw degrees around the y axis (in that order).
另請參閱 getEulerAngles ().
[static]
QQuaternion
QQuaternion::
fromEulerAngles
(const
QVector3D
&
angles
)
這是重載函數。
Creates a quaternion that corresponds to a rotation of angles : angles. z () degrees around the z axis, angles. x () degrees around the x axis, and angles. y () degrees around the y axis (in that order).
另請參閱 toEulerAngles ().
[static]
QQuaternion
QQuaternion::
fromRotationMatrix
(const
QMatrix3x3
&
rot3x3
)
Creates a quaternion that corresponds to the rotation matrix rot3x3 .
注意: If the given rotation matrix is not normalized, the resulting quaternion will contain scaling information.
另請參閱 toRotationMatrix () 和 fromAxes ().
Returns the 3 orthonormal axes ( xAxis , yAxis , zAxis ) defining the quaternion.
所有的
xAxis
,
yAxis
,和
zAxis
must be valid, non-
nullptr
pointers, otherwise the behavior is undefined.
另請參閱 fromAxes () 和 toRotationMatrix ().
Extracts a 3D axis ( x , y , z ) and a rotating angle angle (in degrees) that corresponds to this quaternion.
所有的
x
,
y
,
z
,和
angle
must be valid, non-
nullptr
pointers, otherwise the behavior is undefined.
另請參閱 fromAxisAndAngle ().
這是重載函數。
Extracts a 3D axis axis and a rotating angle angle (in degrees) that corresponds to this quaternion.
Both
axis
and
angle
must be valid, non-
nullptr
pointers, otherwise the behavior is undefined.
另請參閱 fromAxisAndAngle ().
計算 roll , pitch ,和 yaw Euler angles (in degrees) that corresponds to this quaternion.
所有的
pitch
,
yaw
,和
roll
must be valid, non-
nullptr
pointers, otherwise the behavior is undefined.
另請參閱 fromEulerAngles ().
[constexpr noexcept]
QQuaternion
QQuaternion::
inverted
() const
Returns the inverse of this quaternion. If this quaternion is null, then a null quaternion is returned.
[constexpr noexcept]
bool
QQuaternion::
isIdentity
() const
返迴
true
if the x, y, and z components of this quaternion are set to 0.0, and the scalar component is set to 1.0; otherwise returns
false
.
[constexpr noexcept]
bool
QQuaternion::
isNull
() const
返迴
true
if the x, y, z, and scalar components of this quaternion are set to 0.0; otherwise returns
false
.
Returns the length of the quaternion. This is also called the "norm".
另請參閱 lengthSquared (), normalized (),和 dotProduct ().
Returns the squared length of the quaternion.
注意: Though cheap to compute, this is susceptible to overflow and underflow that length () avoids in many cases.
另請參閱 length () 和 dotProduct ().
[static]
QQuaternion
QQuaternion::
nlerp
(const
QQuaternion
&
q1
, const
QQuaternion
&
q2
,
float
t
)
Interpolates along the shortest linear path between the rotational positions q1 and q2 。值 t should be between 0 and 1, indicating the distance to travel between q1 and q2 . The result will be normalized ().
若 t is less than or equal to 0, then q1 will be returned. If t is greater than or equal to 1, then q2 將被返迴。
The nlerp() function is typically faster than slerp () and will give approximate results to spherical interpolation that are good enough for some applications.
另請參閱 slerp ().
Normalizes the current quaternion in place. Nothing happens if this is a null quaternion or the length of the quaternion is very close to 1.
另請參閱 length () 和 normalized ().
Returns the normalized unit form of this quaternion.
If this quaternion is null, then a null quaternion is returned. If the length of the quaternion is very close to 1, then the quaternion will be returned as-is. Otherwise the normalized form of the quaternion of length 1 will be returned.
另請參閱 normalize (), length (),和 dotProduct ().
Rotates vector with this quaternion to produce a new vector in 3D space. The following code:
QVector3D result = q.rotatedVector(vector);
相當於以下:
QVector3D result = (q * QQuaternion(0, vector) * q.conjugated()).vector();
[static]
QQuaternion
QQuaternion::
rotationTo
(const
QVector3D
&
from
, const
QVector3D
&
to
)
Returns the shortest arc quaternion to rotate from the direction described by the vector from to the direction described by the vector to .
另請參閱 fromDirection ().
[constexpr noexcept]
float
QQuaternion::
scalar
() const
Returns the scalar component of this quaternion.
另請參閱 setScalar (), x (), y (),和 z ().
[constexpr noexcept]
void
QQuaternion::
setScalar
(
float
scalar
)
Sets the scalar component of this quaternion to scalar .
另請參閱 scalar (), setX (), setY (),和 setZ ().
[constexpr noexcept]
void
QQuaternion::
setVector
(const
QVector3D
&
vector
)
Sets the vector component of this quaternion to vector .
另請參閱 vector () 和 setScalar ().
[constexpr noexcept]
void
QQuaternion::
setVector
(
float
x
,
float
y
,
float
z
)
Sets the vector component of this quaternion to ( x , y , z ).
另請參閱 vector () 和 setScalar ().
[constexpr noexcept]
void
QQuaternion::
setX
(
float
x
)
Sets the x coordinate of this quaternion's vector to the given x 坐標。
另請參閱 x (), setY (), setZ (),和 setScalar ().
[constexpr noexcept]
void
QQuaternion::
setY
(
float
y
)
Sets the y coordinate of this quaternion's vector to the given y 坐標。
另請參閱 y (), setX (), setZ (),和 setScalar ().
[constexpr noexcept]
void
QQuaternion::
setZ
(
float
z
)
Sets the z coordinate of this quaternion's vector to the given z 坐標。
另請參閱 z (), setX (), setY (),和 setScalar ().
[static]
QQuaternion
QQuaternion::
slerp
(const
QQuaternion
&
q1
, const
QQuaternion
&
q2
,
float
t
)
Interpolates along the shortest spherical path between the rotational positions q1 and q2 。值 t should be between 0 and 1, indicating the spherical distance to travel between q1 and q2 .
若 t is less than or equal to 0, then q1 will be returned. If t is greater than or equal to 1, then q2 將被返迴。
另請參閱 nlerp ().
Calculates roll, pitch, and yaw Euler angles (in degrees) that correspond to this quaternion.
另請參閱 fromEulerAngles ().
Creates a rotation matrix that corresponds to this quaternion.
注意: If this quaternion is not normalized, the resulting rotation matrix will contain scaling information.
另請參閱 fromRotationMatrix () 和 getAxes ().
[constexpr noexcept]
QVector4D
QQuaternion::
toVector4D
() const
Returns this quaternion as a 4D vector.
[constexpr noexcept]
QVector3D
QQuaternion::
vector
() const
Returns the vector component of this quaternion.
另請參閱 setVector () 和 scalar ().
[constexpr noexcept]
float
QQuaternion::
x
() const
Returns the x coordinate of this quaternion's vector.
另請參閱 setX (), y (), z (),和 scalar ().
[constexpr noexcept]
float
QQuaternion::
y
() const
Returns the y coordinate of this quaternion's vector.
另請參閱 setY (), x (), z (),和 scalar ().
[constexpr noexcept]
float
QQuaternion::
z
() const
Returns the z coordinate of this quaternion's vector.
另請參閱 setZ (), x (), y (),和 scalar ().
Returns the quaternion as a QVariant .
[constexpr noexcept]
QQuaternion
&QQuaternion::
operator*=
(const
QQuaternion
&
quaternion
)
Multiplies this quaternion by quaternion and returns a reference to this quaternion.
[constexpr noexcept]
QQuaternion
&QQuaternion::
operator*=
(
float
factor
)
Multiplies this quaternion's components by the given factor , and returns a reference to this quaternion.
另請參閱 operator/= ().
[constexpr noexcept]
QQuaternion
&QQuaternion::
operator+=
(const
QQuaternion
&
quaternion
)
添加給定 quaternion to this quaternion and returns a reference to this quaternion.
另請參閱 operator-= ().
[constexpr noexcept]
QQuaternion
&QQuaternion::
operator-=
(const
QQuaternion
&
quaternion
)
減去給定 quaternion from this quaternion and returns a reference to this quaternion.
另請參閱 operator+= ().
[constexpr]
QQuaternion
&QQuaternion::
operator/=
(
float
divisor
)
Divides this quaternion's components by the given divisor , and returns a reference to this quaternion.
另請參閱 operator*= ().
[constexpr noexcept]
bool
qFuzzyCompare
(const
QQuaternion
&
q1
, const
QQuaternion
&
q2
)
返迴
true
if
q1
and
q2
are equal, allowing for a small fuzziness factor for floating-point comparisons; false otherwise.
[constexpr noexcept]
bool
operator!=
(const
QQuaternion
&
q1
, const
QQuaternion
&
q2
)
返迴
true
if
q1
不等於
q2
;否則返迴
false
。此運算符使用精確浮點比較。
[constexpr noexcept]
QQuaternion
operator*
(const
QQuaternion
&
q1
, const
QQuaternion
&
q2
)
Multiplies q1 and q2 using quaternion multiplication. The result corresponds to applying both of the rotations specified by q1 and q2 .
另請參閱 QQuaternion::operator*= ().
Rotates a vector vec with a quaternion quaternion to produce a new vector in 3D space.
[constexpr noexcept]
QQuaternion
operator*
(const
QQuaternion
&
quaternion
,
float
factor
)
返迴副本為給定 quaternion ,乘以給定 factor .
另請參閱 QQuaternion::operator*= ().
[constexpr noexcept]
QQuaternion
operator*
(
float
factor
, const
QQuaternion
&
quaternion
)
返迴副本為給定 quaternion ,乘以給定 factor .
另請參閱 QQuaternion::operator*= ().
[constexpr noexcept]
QQuaternion
operator+
(const
QQuaternion
&
q1
, const
QQuaternion
&
q2
)
返迴 QQuaternion object that is the sum of the given quaternions, q1 and q2 ;各分量分彆相加。
另請參閱 QQuaternion::operator+= ().
[constexpr noexcept]
QQuaternion
operator-
(const
QQuaternion
&
quaternion
)
這是重載函數。
返迴 QQuaternion object that is formed by changing the sign of all three components of the given quaternion .
相當於
QQuaternion(0,0,0,0) - quaternion
.
[constexpr noexcept]
QQuaternion
operator-
(const
QQuaternion
&
q1
, const
QQuaternion
&
q2
)
返迴 QQuaternion 對象的形成是通過減去 q2 from q1 ;分彆減去各分量。
另請參閱 QQuaternion::operator-= ().
[constexpr]
QQuaternion
operator/
(const
QQuaternion
&
quaternion
,
float
divisor
)
返迴 QQuaternion object formed by dividing all components of the given quaternion 通過給定 divisor .
另請參閱 QQuaternion::operator/= ().
寫入給定 quaternion 到給定 stream 並返迴流引用。
另請參閱 序列化 Qt 數據類型 .
[constexpr noexcept]
bool
operator==
(const
QQuaternion
&
q1
, const
QQuaternion
&
q2
)
返迴
true
if
q1
等於
q2
;否則返迴
false
。此運算符使用精確浮點比較。
讀取四元數從給定 stream 進給定 quaternion 並返迴流引用。
另請參閱 序列化 Qt 數據類型 .