QQuaternion Class
QQuaternion クラスは、ベクトルとスカラーから構成される四元数を表します。詳細...
| ヘッダー: | #include <QQuaternion> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- 非推奨のメンバ
- QQuaternionは、3Dレンダリングの一部です。
パブリック型
(since 6.11) struct | Axes |
(since 6.11) struct | Axis |
(since 6.11) struct | EulerAngles |
パブリック関数
| QQuaternion() | |
| QQuaternion(const QVector4D &vector) | |
| QQuaternion(float scalar, const QVector3D &vector) | |
| QQuaternion(float scalar, float xpos, float ypos, float zpos) | |
| QQuaternion | conjugated() const |
(since 6.11) QQuaternion::EulerAngles<float> | eulerAngles() const |
| void | getAxisAndAngle(float *x, float *y, float *z, float *angle) const |
| void | getAxisAndAngle(QVector3D *axis, float *angle) 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) |
(since 6.11) QQuaternion::Axes | toAxes() const |
| QVector3D | toEulerAngles() const |
| QMatrix3x3 | toRotationMatrix() const |
| QVector4D | toVector4D() const |
| QVector3D | vector() const |
| float | x() const |
| float | y() const |
| float | z() const |
| 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) |
(since 6.11) QQuaternion | fromAxes(QQuaternion::Axes axes) |
| 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) |
(since 6.11) QQuaternion | fromEulerAngles(QQuaternion::EulerAngles<float> angles) |
| 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 &q1, const QQuaternion &q2) |
| QQuaternion | operator-(const QQuaternion &quaternion) |
| 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) |
メンバ関数のドキュメント
[constexpr noexcept] QQuaternion::QQuaternion()
単位クォータニオン (1, 0, 0, 0)、すなわちベクトル (0, 0, 0) とスカラー 1 を持つクォータニオンを生成します。
[explicit constexpr noexcept] QQuaternion::QQuaternion(const QVector4D &vector)
vector の成分からクォータニオンを生成します。
[constexpr noexcept] QQuaternion::QQuaternion(float scalar, const QVector3D &vector)
指定された `vector ` および `scalar` からクォータニオンベクトルを生成します。
vector() およびscalar()も参照してください 。
[constexpr noexcept] QQuaternion::QQuaternion(float scalar, float xpos, float ypos, float zpos)
ベクトル (xpos,ypos,zpos) およびscalar を用いて、クォータニオンを生成します。
[constexpr noexcept] QQuaternion QQuaternion::conjugated() const
この四元数の共役を返します。共役は (-x, -y, -z, スカラー) となります。
[static constexpr noexcept] float QQuaternion::dotProduct(const QQuaternion &q1, const QQuaternion &q2)
q1 とq2 の内積を返します。
length()も参照してください 。
[since 6.11] QQuaternion::EulerAngles<float> QQuaternion::eulerAngles() const
このクォータニオンに対応するオイラー角(度単位)を返します。
この関数は Qt 6.11 で導入されました。
fromEulerAngles()も参照してください 。
[static, since 6.11] QQuaternion QQuaternion::fromAxes(QQuaternion::Axes axes)
axes に含まれる軸を用いて、クォータニオンを構築します。
注:軸は 直交正規化されているものとみなされます。
この関数は Qt 6.11 で導入されました。
toAxes() およびfromRotationMatrix()も参照してください 。
[static] QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)
これはオーバーロードされた関数です。
[static] QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D &axis, float angle)
指定された3D軸axis を中心にangle 度回転した状態に対応する、正規化されたクォータニオンを作成します。
getAxisAndAngle()も参照してください 。
[static] QQuaternion QQuaternion::fromAxisAndAngle(float x, float y, float z, float angle)
3D軸(x 、y 、z )を中心にangle 度回転した状態に対応する正規化されたクォータニオンを生成します。
getAxisAndAngle()も参照してください 。
[static] QQuaternion QQuaternion::fromDirection(const QVector3D &direction, const QVector3D &up)
指定された前方方向 `direction ` および上方方向 `up` を使用して、クォータニオンを構築します。上方方向が指定されていない場合、または前方ベクトルと上方ベクトルが共線である場合は、新しい直交正規化された上方方向が生成されます。
fromAxes() およびrotationTo()も参照してください 。
[static] QQuaternion QQuaternion::fromEulerAngles(float pitch, float yaw, float roll)
z軸を中心にroll 度、x軸を中心にpitch 度、y軸を中心にyaw 度(この順序で)回転させるクォータニオンを作成します。
eulerAngles()、toEulerAngles()、およびfromEulerAngles(QQuaternion::EulerAngles<float>)も参照してください 。
[static, since 6.11] QQuaternion QQuaternion::fromEulerAngles(QQuaternion::EulerAngles<float> angles)
以下と同等です
fromEulerAngles(angles.pitch, angles.yaw, angles.roll);これはオーバーロードされた関数です。
この関数は Qt 6.11 で導入されました。
eulerAngles()、toEulerAngles()、およびfromEulerAngles()も参照してください 。
[static] QQuaternion QQuaternion::fromEulerAngles(const QVector3D &angles)
angles: angles.z() 度の z 軸周りの回転、angles.x() 度の x 軸周りの回転、および angles.y() 度の y 軸周りの回転(この順序で)に対応するクォータニオンを作成します。
これはオーバーロードされた関数です。
toEulerAngles()も参照してください 。
[static] QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)
回転行列 `rot3x3` に対応するクォータニオンを作成します。
注: 指定された回転行列が正規化されていない場合 、結果として得られるクォータニオンにはスケーリング情報が含まれます。
関連項目: toRotationMatrix() およびfromAxes()。
void QQuaternion::getAxisAndAngle(float *x, float *y, float *z, float *angle) const
このクォータニオンに対応する3D軸(x 、y 、z )および回転角度angle (度単位)を取得します。
x 、y 、z 、およびangle はすべて、有効な、nullptr ではないポインタでなければなりません。そうでない場合、動作は未定義となります。
fromAxisAndAngle()も参照してください 。
void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const
このクォータニオンに対応する3D軸axis および回転角度angle (度単位)を取得します。
axis およびangle の両方が、有効かつ非nullptr のポインタでなければなりません。そうでない場合、動作は未定義となります。
これはオーバーロードされた関数です。
fromAxisAndAngle()も参照してください 。
[constexpr noexcept] QQuaternion QQuaternion::inverted() const
このクォータニオンの逆行列を返します。このクォータニオンがnullの場合、nullクォータニオンが返されます。
isNull() およびlength()も参照してください 。
[constexpr noexcept] bool QQuaternion::isIdentity() const
このクォータニオンの x、y、z 成分が 0.0 に設定され、スカラー成分が 1.0 に設定されている場合は、true を返します。それ以外の場合は、false を返します。
[constexpr noexcept] bool QQuaternion::isNull() const
このクォータニオンのx、y、z、およびスカラー成分がすべて0.0に設定されている場合はtrue を返し、それ以外の場合はfalse を返します。
float QQuaternion::length() const
クォータニオンの長さを返します。これは「ノルム」とも呼ばれます。
lengthSquared()、normalized()、およびdotProduct()も参照してください 。
float QQuaternion::lengthSquared() const
クォータニオンの長さの二乗を返します。
注: 計算コストは低いものの 、length() が多くの場合回避しているオーバーフローやアンダーフローが発生しやすい。
関連項目: length() およびdotProduct()。
[static] QQuaternion QQuaternion::nlerp(const QQuaternion &q1, const QQuaternion &q2, float t)
回転位置q1 とq2 の間の最短直線経路に沿って補間を行います。値t は 0 から 1 の間で、q1 とq2 の間の移動距離を表します。結果はnormalized() となります。
t が0以下であれば、q1 が返されます。t が1以上であれば、q2 が返されます。
nlerp() 関数は通常、slerp() よりも高速であり、一部の用途では十分な精度を持つ球面補間の近似結果を返します。
slerp()も参照してください 。
void QQuaternion::normalize()
現在のクォータニオンをその場で正規化します。クォータニオンがヌルである場合や、その長さが 1 に非常に近い場合は、何も起こりません。
length() およびnormalized()も参照してください 。
QQuaternion QQuaternion::normalized() const
この四元数の正規化された単位形式を返します。
この四元数が null の場合、null 四元数が返されます。四元数の長さが 1 に非常に近い場合は、その四元数がそのまま返されます。それ以外の場合は、長さが 1 の正規化された四元数が返されます。
normalize()、length()、およびdotProduct()も参照してください 。
QVector3D QQuaternion::rotatedVector(const QVector3D &vector) const
vector をこのクォータニオンで回転させ、3D空間内の新しいベクトルを生成します。以下のコード:
QVector3D result = q.rotatedVector(vector);は、以下と同等です:
QVector3D result = (q * QQuaternion(0, vector) * q.conjugated()).vector();[static] QQuaternion QQuaternion::rotationTo(const QVector3D &from, const QVector3D &to)
ベクトル `from ` で表される方向から、ベクトル `to` で表される方向へ回転させるための最短アーククォータニオンを返します。
fromDirection()も参照してください 。
[constexpr noexcept] float QQuaternion::scalar() const
この四元数のスカラー成分を返します。
setScalar()、x()、y()、およびz()も参照してください 。
[constexpr noexcept] void QQuaternion::setScalar(float scalar)
このクォータニオンのスカラー成分を `scalar` に設定します。
scalar()、setX()、setY()、およびsetZ()も参照してください 。
[constexpr noexcept] void QQuaternion::setVector(const QVector3D &vector)
この四元数のベクトル成分をvector に設定します。
vector() およびsetScalar()も参照してください 。
[constexpr noexcept] void QQuaternion::setVector(float x, float y, float z)
このクォータニオンのベクトル成分を (x,y,z) に設定します。
vector() およびsetScalar()も参照してください 。
[constexpr noexcept] void QQuaternion::setX(float x)
このクォータニオンのベクトルのx座標を、指定されたx 座標に設定します。
x()、setY()、setZ()、およびsetScalar()も参照してください 。
[constexpr noexcept] void QQuaternion::setY(float y)
このクォータニオンのベクトルの y 座標を、指定されたy 座標に設定します。
y()、setX()、setZ()、およびsetScalar()も参照してください 。
[constexpr noexcept] void QQuaternion::setZ(float z)
この四元数のベクトルの z 座標を、指定されたz 座標に設定します。
z()、setX()、setY()、およびsetScalar()も参照してください 。
[static] QQuaternion QQuaternion::slerp(const QQuaternion &q1, const QQuaternion &q2, float t)
回転位置q1 とq2 の間の最短球面経路に沿って補間を行います。値t は 0 から 1 の間でなければならず、q1 とq2 の間で移動する球面距離を示します。
t が0以下である場合、q1 が返されます。t が1以上である場合、q2 が返されます。
nlerp()も参照してください 。
[since 6.11] QQuaternion::Axes QQuaternion::toAxes() const
このクォータニオンを定義する3つの直交軸を返します。
この関数は Qt 6.11 で導入されました。
QQuaternion::Axes 、fromAxes (QQuaternion::Axes)、およびtoRotationMatrix()も参照してください 。
QVector3D QQuaternion::toEulerAngles() const
このクォータニオンに対応するロール、ピッチ、ヨーのオイラー角(度単位)を計算します。
fromEulerAngles()も参照してください 。
QMatrix3x3 QQuaternion::toRotationMatrix() const
このクォータニオンに対応する回転行列を作成します。
注: このクォータニオンが正規化されていない場合 、結果として得られる回転行列にはスケーリング情報が含まれます。
関連項目: fromRotationMatrix() およびtoAxes()。
[constexpr noexcept] QVector4D QQuaternion::toVector4D() const
このクォータニオンを4次元ベクトルとして返します。
[constexpr noexcept] QVector3D QQuaternion::vector() const
この四元数のベクトル成分を返します。
setVector() およびscalar()も参照してください 。
[constexpr noexcept] float QQuaternion::x() const
この四元数のベクトルの x 座標を返します。
setX()、y()、z()、およびscalar()も参照してください 。
[constexpr noexcept] float QQuaternion::y() const
このクォータニオンのベクトルの y 座標を返します。
setY()、x()、z()、およびscalar()も参照してください 。
[constexpr noexcept] float QQuaternion::z() const
この四元数のベクトルの z 座標を返します。
setZ()、x()、y()、およびscalar()も参照してください 。
QQuaternion::operator QVariant() const
クォータニオンをQVariant として返します。
[constexpr noexcept] QQuaternion &QQuaternion::operator*=(const QQuaternion &quaternion)
このクォータニオンにquaternion を乗算し、そのクォータニオンへの参照を返します。
[constexpr noexcept] QQuaternion &QQuaternion::operator*=(float factor)
このクォータニオンの各成分に、指定されたfactor を乗算し、このクォータニオンへの参照を返します。
operator/=()も参照してください 。
[constexpr noexcept] QQuaternion &QQuaternion::operator+=(const QQuaternion &quaternion)
指定されたquaternion をこのクォータニオンに加算し、このクォータニオンへの参照を返します。
operator-=()も参照してください 。
[constexpr noexcept] QQuaternion &QQuaternion::operator-=(const QQuaternion &quaternion)
指定されたquaternion をこの四元数から引き、この四元数への参照を返します。
operator+=()も参照してください 。
[constexpr] QQuaternion &QQuaternion::operator/=(float divisor)
このクォータニオンの成分を、指定されたdivisor で除算し、このクォータニオンへの参照を返します。
operator*=()も参照してください 。
関連する非メンバー関数
[constexpr noexcept] bool qFuzzyCompare(const QQuaternion &q1, const QQuaternion &q2)
q1 とq2 が等しい場合、浮動小数点数の比較におけるわずかな許容誤差を考慮した上で、true を返します。それ以外の場合は false を返します。
[constexpr noexcept] bool operator!=(const QQuaternion &q1, const QQuaternion &q2)
q1 がq2 と等しくない場合、true を返し、それ以外の場合はfalse を返します。この演算子は、浮動小数点数の厳密比較を使用します。
[constexpr noexcept] QQuaternion operator*(const QQuaternion &q1, const QQuaternion &q2)
クォータニオン乗算を用いて、q1 とq2 を乗算します。結果は、q1 およびq2 で指定された両方の回転を適用したものに対応します。
QQuaternion::operator*=()も参照してください 。
QVector3D operator*(const QQuaternion &quaternion, const QVector3D &vec)
ベクトル `vec ` をクォータニオン `quaternion ` を用いて回転させ、3D空間内の新しいベクトルを生成します。
[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)
指定された四元数 `q1 ` および `q2` の和となる `QQuaternion ` オブジェクトを返します。各成分は個別に加算されます。
QQuaternion::operator+=()も参照してください 。
[constexpr noexcept] QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2)
q2 をq1 から差し引いて形成された `QQuaternion ` オブジェクトを返します。各成分は個別に差し引かれます。
QQuaternion::operator-=()も参照してください 。
[constexpr noexcept] QQuaternion operator-(const QQuaternion &quaternion)
指定されたquaternion の3つの構成要素すべての符号を変更して作成されたQQuaternion オブジェクトを返します。
QQuaternion(0,0,0,0) - quaternion と同等です。
これはオーバーロードされた関数です。
[constexpr] QQuaternion operator/(const QQuaternion &quaternion, float divisor)
指定されたquaternion のすべての成分を、指定されたdivisor で割ることで形成されたQQuaternion オブジェクトを返します。
QQuaternion::operator/=()も参照してください 。
QDataStream &operator<<(QDataStream &stream, const QQuaternion &quaternion)
指定されたquaternion を、指定されたstream に書き込み、そのストリームへの参照を返します。
「Qtデータ型のシリアライズ」も参照してください 。
[constexpr noexcept] bool operator==(const QQuaternion &q1, const QQuaternion &q2)
q1 がq2 と等しい場合、true を返します。それ以外の場合は、false を返します。この演算子は、厳密な浮動小数点比較を使用します。
QDataStream &operator>>(QDataStream &stream, QQuaternion &quaternion)
指定されたstream からクォータニオンを読み取り、指定されたquaternion に格納し、そのストリームへの参照を返します。
「Qtデータ型のシリアライズ」も参照してください 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.