QQuaternion Class

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 &eulerAngles)
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)

詳細説明

クォータニオンは、3D 空間での回転を表すために使用され、x、y、z 座標で指定される 3D 回転軸と、回転角度を表すスカラーで構成されます。

メンバ関数ドキュメント

[constexpr noexcept] QQuaternion::QQuaternion()

つまり、ベクトル(0, 0, 0)とスカラー1で、恒等四元数(1, 0, 0, 0)を構成する。

[explicit constexpr noexcept] QQuaternion::QQuaternion(const QVector4D &vector)

vector の成分からクォータニオンを構築する。

[constexpr noexcept] QQuaternion::QQuaternion(float scalar, const QVector3D &vector)

指定されたvectorscalar から四元数ベクトルを構築します。

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)

q1q2 のドット積を返す。

length()も参照のこと

[static] QQuaternion QQuaternion::fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis)

3つの軸 (xAxis,yAxis,zAxis) を使ってクォータニオンを構築する。

注意: 軸は正規直交であると仮定する。

getAxes() およびfromRotationMatrix()も参照のこと

[static] QQuaternion QQuaternion::fromAxisAndAngle(const QVector3D &axis, float angle)

指定された 3Daxis に対して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 度(この順)の回転に対応する四元数を作成する。

getEulerAngles()も参照してください

[static] QQuaternion QQuaternion::fromEulerAngles(const QVector3D &eulerAngles)

これはオーバーロードされた関数です。

eulerAngles: eulerAngles.z() z 軸まわりの度、 eulerAngles.x() x 軸まわりの度、 eulerAngles.y() y 軸まわりの度(この順)の回転に対応する四元数を作成します。

toEulerAngles()も参照

[static] QQuaternion QQuaternion::fromRotationMatrix(const QMatrix3x3 &rot3x3)

回転行列rot3x3 に対応する四元数を作成します.

注意: 与えられた回転行列が正規化されていない場合,生成されるクォータニオンにはスケーリング情報が含まれます.

toRotationMatrix() およびfromAxes()も参照して ください。

void QQuaternion::getAxes(QVector3D *xAxis, QVector3D *yAxis, QVector3D *zAxis) const

四元数を定義する 3 つの直交軸 (xAxis,yAxis,zAxis) を返します。

fromAxes() およびtoRotationMatrix()も参照

void QQuaternion::getAxisAndAngle(float *x, float *y, float *z, float *angle) const

この四元数に対応する 3D 軸 (x,y,z) と回転角度angle (度単位) を抽出します。

fromAxisAndAngle()も参照してください

void QQuaternion::getAxisAndAngle(QVector3D *axis, float *angle) const

これはオーバーロードされた関数です。

このクォータニオンに対応する 3D 軸axis と回転角度angle (度単位) を抽出します。

fromAxisAndAngle()も参照してください

void QQuaternion::getEulerAngles(float *pitch, float *yaw, float *roll) const

roll,pitch,yaw この四元数に対応するオイラー角(度)を計算する。

fromEulerAngles()も参照してください

[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

quaternion関数は、四元数の長さを返します。これは "ノルム "とも呼ばれる。

lengthSquared()、normalized() およびdotProduct()も参照

float QQuaternion::lengthSquared() const

四元数の長さの2乗を返す。

注意: 計算は安いが、これはオーバーフローやアンダーフローの影響を受けやすく、length() は多くの場合それを回避している。

length() およびdotProduct()も参照

[static] QQuaternion QQuaternion::nlerp(const QQuaternion &q1, const QQuaternion &q2, float t)

回転位置q1q2 の間の最短直線経路を補間する。値t は 0 から 1 の間で、q1q2 の間の移動距離を示す。結果は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)

回転位置q1q2 の間の最短球面経路を補間する。値t は 0 から 1 の間で、q1q2 の間を移動する球面距離を示す。

t が0以下の場合、q1 が返される。t が1以上の場合、q2 が返される。

nlerp()も参照のこと

QVector3D QQuaternion::toEulerAngles() const

これはオーバーロードされた関数です。

この四元数に対応するロール、ピッチ、ヨーのオイラー角(度)を計算します。

fromEulerAngles()も参照してください

QMatrix3x3 QQuaternion::toRotationMatrix() const

このクォータニオンに対応する回転行列を作成します。

注意: この四元数が正規化されていない場合,得られる回転行列にはスケーリング情報が含まれます.

fromRotationMatrix() およびgetAxes()も参照して ください。

[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()も参照

QVariant 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)

q1q2 が等しい場合はtrue を返し、浮動小数点数の比較に若干のファジー要素を許容する。

[constexpr noexcept] bool operator!=(const QQuaternion &q1, const QQuaternion &q2)

q1q2 と等しくない場合はtrue を返し、そうでない場合はfalse を返す。この演算子は正確な浮動小数点比較を使用する。

[constexpr noexcept] QQuaternion operator*(const QQuaternion &q1, const QQuaternion &q2)

四元数乗法を用いてq1q2 を乗算する。その結果は、q1q2 で指定された回転の両方を適用することに相当します。

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)

与えられた四元数、q1q2 の和であるQQuaternion オブジェクトを返します; 各成分は別々に加算されます。

QQuaternion::operator+=()も参照

[constexpr noexcept] QQuaternion operator-(const QQuaternion &quaternion)

これはオーバーロードされた関数である。

与えられたquaternion の3成分すべての符号を変更して形成されたQQuaternion オブジェクトを返します。

QQuaternion(0,0,0,0) - quaternion と同等です。

[constexpr noexcept] QQuaternion operator-(const QQuaternion &q1, const QQuaternion &q2)

q1 からq2 を減算したQQuaternion オブジェクトを返す。

QQuaternion::operator-=()も参照のこと

[constexpr] QQuaternion operator/(const QQuaternion &quaternion, float divisor)

与えられたquaternion の全成分を与えられたdivisor で割ったQQuaternion オブジェクトを返す。

QQuaternion::operator/=()も参照

QDataStream &operator<<(QDataStream &stream, const QQuaternion &quaternion)

与えられたstream に与えられたquaternion を書き込み、ストリームへの参照を返します。

Qt データ型のシリアライズも参照してください

[constexpr noexcept] bool operator==(const QQuaternion &q1, const QQuaternion &q2)

q1q2 と等しい場合はtrue を返し、そうでない場合はfalse を返す。この演算子は正確な浮動小数点比較を使用する。

QDataStream &operator>>(QDataStream &stream, QQuaternion &quaternion)

与えられたstream から与えられたquaternion にクォータニオンを読み込み、ストリームへの参照を返します。

Qt データ型のシリアライズも参照してください

© 2025 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.