QQuaternion Class

QQuaternion クラスは、ベクトルとスカラーで構成される四元数を表します。詳細...

Header: #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: z 軸まわりの eulerAngles.z() 度、x 軸まわりの eulerAngles.x() 度、y 軸まわりの eulerAngles.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

四元数の長さを返します。これは「ノルム」とも呼ばれる。

lengthSquared()、normalized()、dotProduct()も参照

float QQuaternion::lengthSquared() const

quaternion関数は、クォータニオンの長さの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 を回転させ、3次元空間に新しいベクトルを生成します。次のコードは

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

quaternion関数は、この四元数を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 で回転し,3 次元空間に新しいベクトルを生成します.

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

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

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

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

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

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

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

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

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。