QQuaternion Class
QQuaternion クラスは、ベクトルとスカラーで構成される四元数を表します。詳細...
Header: | #include <QQuaternion> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 継承メンバを含む全メンバのリスト
- QQuaternionは、3Dレンダリングに含まれます。
パブリック関数
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) |
メンバ関数説明
[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)
指定された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()も参照してください 。
[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)
回転位置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 を回転させ、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 に設定します。
[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()も参照 。
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
この四元数のベクトル成分を返します。
[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)
q1 とq2 が等しい場合はtrue
を返し、浮動小数点比較のための小さなファジー要素を許容します。
[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 で回転し,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)
与えられたクォータニオンq1 とq2 の和である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)
q1 がq2 と等しい場合は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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。