QVector3D Class
QVector3D クラスは、3D 空間におけるベクトルまたは頂点を表します。詳細...
| ヘッダー: | #include <QVector3D> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QVector3Dは、3Dレンダリングの一部です。
パブリック関数
| QVector3D() | |
| QVector3D(QPoint point) | |
| QVector3D(QPointF point) | |
| QVector3D(QVector2D vector) | |
| QVector3D(QVector4D vector) | |
| QVector3D(QVector2D vector, float zpos) | |
| QVector3D(float xpos, float ypos, float zpos) | |
| float | distanceToLine(QVector3D point, QVector3D direction) const |
| float | distanceToPlane(QVector3D plane, QVector3D normal) const |
| float | distanceToPlane(QVector3D plane1, QVector3D plane2, QVector3D plane3) const |
| float | distanceToPoint(QVector3D point) const |
| bool | isNull() const |
| float | length() const |
| float | lengthSquared() const |
| void | normalize() |
| QVector3D | normalized() const |
| QVector3D | project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const |
| void | setX(float x) |
| void | setY(float y) |
| void | setZ(float z) |
| QPoint | toPoint() const |
| QPointF | toPointF() const |
| QVector2D | toVector2D() const |
| QVector4D | toVector4D() const |
| QVector3D | unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const |
| float | x() const |
| float | y() const |
| float | z() const |
| operator QVariant() const | |
| QVector3D & | operator*=(float factor) |
| QVector3D & | operator*=(QVector3D vector) |
| QVector3D & | operator+=(QVector3D vector) |
| QVector3D & | operator-=(QVector3D vector) |
| QVector3D & | operator/=(QVector3D vector) |
| QVector3D & | operator/=(float divisor) |
| float & | operator[](int i) |
| float | operator[](int i) const |
静的パブリックメンバー
| QVector3D | crossProduct(QVector3D v1, QVector3D v2) |
| float | dotProduct(QVector3D v1, QVector3D v2) |
| QVector3D | normal(QVector3D v1, QVector3D v2) |
| QVector3D | normal(QVector3D v1, QVector3D v2, QVector3D v3) |
関連する非メンバー
| bool | qFuzzyCompare(QVector3D v1, QVector3D v2) |
(since 6.12) size_t | qHash(QVector3D key, size_t seed = 0) |
| bool | operator!=(QVector3D v1, QVector3D v2) |
| QVector3D | operator*(QVector3D v1, QVector3D v2) |
| QVector3D | operator*(QVector3D vector, float factor) |
| QVector3D | operator*(float factor, QVector3D vector) |
| QVector3D | operator+(QVector3D v1, QVector3D v2) |
| QVector3D | operator-(QVector3D v1, QVector3D v2) |
| QVector3D | operator-(QVector3D vector) |
| QVector3D | operator/(QVector3D vector, QVector3D divisor) |
| QVector3D | operator/(QVector3D vector, float divisor) |
| QDataStream & | operator<<(QDataStream &stream, QVector3D vector) |
| bool | operator==(QVector3D v1, QVector3D v2) |
| QDataStream & | operator>>(QDataStream &stream, QVector3D &vector) |
詳細な説明
ベクトルは、3D 表現および描画の主要な構成要素の一つです。これらは、従来 x、y、z と呼ばれる 3 つの有限浮動小数点座標で構成されます。
QVector3D クラスは、3D 空間内の頂点を表現するためにも使用できます。したがって、別途頂点クラスを用意する必要はありません。
QVector2D 、QVector4D 、およびQQuaternionも参照してください 。
メンバ関数のドキュメント
[constexpr noexcept] QVector3D::QVector3D()
零ベクトル、すなわち座標が (0, 0, 0) であるベクトルを作成します。
[explicit constexpr noexcept] QVector3D::QVector3D(QPoint point)
2次元のpoint からx座標とy座標を持つベクトルを生成し、z座標を0とします。
[explicit constexpr noexcept] QVector3D::QVector3D(QPointF point)
2次元point からx座標とy座標を持つベクトルを構築し、z座標を0とします。
[explicit constexpr noexcept] QVector3D::QVector3D(QVector2D vector)
指定された 2Dvector から 3D ベクトルを生成します。z 座標は 0 に設定されます。
toVector2D()も参照してください 。
[explicit constexpr noexcept] QVector3D::QVector3D(QVector4D vector)
指定された4次元vector から3次元ベクトルを生成します。w座標は除外されます。
toVector4D()も参照してください 。
[constexpr noexcept] QVector3D::QVector3D(QVector2D vector, float zpos)
指定された2次元vector から3次元ベクトルを構築します。z座標はzpos に設定されますが、この値は有限でなければなりません。
toVector2D()も参照してください 。
[constexpr noexcept] QVector3D::QVector3D(float xpos, float ypos, float zpos)
座標 (xpos,ypos,zpos) を持つベクトルを生成します。すべてのパラメータは有限値でなければなりません。
[static constexpr noexcept] QVector3D QVector3D::crossProduct(QVector3D v1, QVector3D v2)
ベクトル `v1 ` と `v2` の外積を返します。この外積は、`v1 ` と `v2` によって張られる平面に垂直なベクトルとなります。2つのベクトルが平行な場合は、0になります。
normal()も参照してください 。
[noexcept] float QVector3D::distanceToLine(QVector3D point, QVector3D direction) const
この頂点と、point で定義される直線および単位ベクトルdirection との距離を返します。
direction が零ベクトルの場合、直線は定義されません。その場合は、point からこの頂点までの距離が返されます。
distanceToPlane()も参照してください 。
[constexpr noexcept] float QVector3D::distanceToPlane(QVector3D plane, QVector3D normal) const
この頂点から、頂点plane および単位ベクトルnormal によって定義される平面までの距離を返します。normal パラメータは、単位ベクトルに正規化されているものとみなされます。
頂点が平面より下にある場合は負の値が、平面上にある場合は 0 が返されます。
normal() およびdistanceToLine()も参照してください 。
[noexcept] float QVector3D::distanceToPlane(QVector3D plane1, QVector3D plane2, QVector3D plane3) const
この頂点から、頂点plane1 、plane2 、plane3 によって定義される平面までの距離を返します。
頂点が平面の下にある場合は負の値が、平面上にある場合は 0 が返されます。
平面を定義する 2 つのベクトルは、plane2 -plane1 およびplane3 -plane1 です。
normal() およびdistanceToLine()も参照してください 。
[noexcept] float QVector3D::distanceToPoint(QVector3D point) const
この頂点から、頂点point で定義される点までの距離を返します。
distanceToPlane() およびdistanceToLine()も参照してください 。
[static constexpr noexcept] float QVector3D::dotProduct(QVector3D v1, QVector3D v2)
v1 とv2 の内積を返します。
[constexpr noexcept] bool QVector3D::isNull() const
x、y、zの座標がすべて0.0に設定されている場合はtrue を返し、それ以外の場合はfalse を返します。
[noexcept] float QVector3D::length() const
原点からのベクトルの長さを返します。
lengthSquared() およびnormalized()も参照してください 。
[constexpr noexcept] float QVector3D::lengthSquared() const
原点からのベクトルの長さの二乗を返します。これは、そのベクトルとそれ自身の内積に相当します。
length() およびdotProduct()も参照してください 。
[static noexcept] QVector3D QVector3D::normal(QVector3D v1, QVector3D v2)
ベクトルv1 とv2 によって張られる平面の単位法線ベクトルを返します。なお、これらのベクトルは互いに平行であってはなりません。
結果を単位ベクトルに正規化する必要がない場合は、crossProduct() を使用して、v1 とv2 の外積を計算してください。
crossProduct() およびdistanceToPlane()も参照してください 。
[static noexcept] QVector3D QVector3D::normal(QVector3D v1, QVector3D v2, QVector3D v3)
ベクトル `v2 ` - `v1 ` および `v3 ` - `v1` によって張られる平面の単位法線ベクトルを返します。これらのベクトルは互いに平行であってはなりません。
結果を単位ベクトルに正規化する必要がない場合は、crossProduct() を使用して、v2 -v1 とv3 -v1 の外積を計算してください。
crossProduct() およびdistanceToPlane()も参照してください 。
[noexcept] void QVector3D::normalize()
現在のベクトルをその場で正規化します。このベクトルが空ベクトルである場合、またはベクトルの長さが 1 に非常に近い場合は、何も起こりません。
length() およびnormalized()も参照してください 。
[noexcept] QVector3D QVector3D::normalized() const
このベクトルの正規化された単位ベクトル形式を返します。
このベクトルが null の場合、null ベクトルが返されます。ベクトルの長さが 1 に非常に近い場合は、ベクトルがそのまま返されます。それ以外の場合は、長さ 1 の正規化されたベクトルが返されます。
length() およびnormalize()も参照してください 。
QVector3D QVector3D::project(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const
このベクトルのウィンドウ座標を返します。このベクトルは、モデルビュー行列 `modelView`、投影行列 `projection `、およびビューポートの寸法 `viewport` を用いて、当初はオブジェクト/モデル座標で表されています。
クリップ空間から正規化空間へ変換する際、ベクトルの各成分に対して w 成分による除算が行われます。w が 0 の場合に 0 で除算されるのを防ぐため、w は 1 に設定されます。
注: 返される y 座標は OpenGL の座標系に基づいています。OpenGL では下側が 0 となるのに対し、Qt では上側が 0 となります。
unproject()も参照してください 。
[constexpr noexcept] void QVector3D::setX(float x)
この点のx座標を、指定された有限のx 座標に設定します。
x()、setY()、およびsetZ()も参照してください 。
[constexpr noexcept] void QVector3D::setY(float y)
この点の y 座標を、指定された有限なy 座標に設定します。
y()、setX()、およびsetZ()も参照してください 。
[constexpr noexcept] void QVector3D::setZ(float z)
この点の z 座標を、指定された有限のz 座標に設定します。
z()、setX()、およびsetY()も参照してください 。
[constexpr noexcept] QPoint QVector3D::toPoint() const
この3次元ベクトルのQPoint 形式を返します。z座標は切り捨てられます。x座標とy座標は、最も近い整数に丸められます。
toPointF() およびtoVector2D()も参照してください 。
[constexpr noexcept] QPointF QVector3D::toPointF() const
この3次元ベクトルのQPointF 形式を返します。z座標は除外されます。
toPoint() およびtoVector2D()も参照してください 。
[constexpr noexcept] QVector2D QVector3D::toVector2D() const
この3次元ベクトルのz座標を除いた2次元ベクトル形式を返します。
toVector4D() およびtoPoint()も参照してください 。
[constexpr noexcept] QVector4D QVector3D::toVector4D() const
この3次元ベクトルの4次元形式を返し、w座標を0に設定します。
toVector2D() およびtoPoint()も参照してください 。
QVector3D QVector3D::unproject(const QMatrix4x4 &modelView, const QMatrix4x4 &projection, const QRect &viewport) const
このベクトルのオブジェクト/モデル座標を、モデルビュー行列modelView 、投影行列projection 、およびビューポートの寸法viewport を用いて、最初はウィンドウ座標系で返します。
クリップ空間から正規化空間へ変換する際、ベクトル成分の w 成分による除算が行われます。w が 0 の場合に除算が 0 になるのを防ぐため、w は 1 に設定されます。
注: viewport 内のy 座標は、OpenGL の座標系を使用する必要があります。OpenGL では下側が 0 となるのに対し、Qt では上側が 0 となります。
project()も参照してください 。
[constexpr noexcept] float QVector3D::x() const
この点の x 座標を返します。
[constexpr noexcept] float QVector3D::y() const
この点の y 座標を返します。
[constexpr noexcept] float QVector3D::z() const
この点の z 座標を返します。
QVector3D::operator QVariant() const
3DベクトルをQVariant として返します。
[constexpr noexcept] QVector3D &QVector3D::operator*=(float factor)
このベクトルの座標に、指定された有限なfactor を乗算し、このベクトルへの参照を返します。
operator/=() およびoperator*()も参照してください 。
[constexpr noexcept] QVector3D &QVector3D::operator*=(QVector3D vector)
このベクトルの各成分に、vector 内の対応する成分を乗算し、このベクトルへの参照を返します。
注:これは、このベクトルのcrossProduct()やvector とは異なります。(その成分の和は、このベクトルとvector の内積に等しくなります。)
これはオーバーロードされた関数です。
crossProduct()、operator/=()、およびoperator*()も参照してください 。
[constexpr noexcept] QVector3D &QVector3D::operator+=(QVector3D vector)
指定されたvector をこのベクトルに追加し、このベクトルへの参照を返します。
operator-=()も参照してください 。
[constexpr noexcept] QVector3D &QVector3D::operator-=(QVector3D vector)
指定されたvector をこのベクトルから差し引き、このベクトルへの参照を返します。
operator+=()も参照してください 。
[constexpr] QVector3D &QVector3D::operator/=(QVector3D vector)
このベクトルの各成分を、vector の対応する成分で割り、このベクトルへの参照を返します。
vector には、0 または NaN の成分が含まれていてはなりません。
operator*=() およびoperator/()も参照してください 。
[constexpr] QVector3D &QVector3D::operator/=(float divisor)
このベクトルの座標を、指定されたdivisor で除算し、このベクトルへの参照を返します。divisor は、0でもNaNでもあってはなりません。
operator*=() およびoperator/()も参照してください 。
[constexpr] float &QVector3D::operator[](int i)
ベクトルのインデックス位置i にある成分を、変更可能な参照として返します。
i i は、ベクトル内の有効なインデックス位置でなければなりません(つまり、0 <= < 3)。
[constexpr] float QVector3D::operator[](int i) const
ベクトルのインデックス位置i にある成分を返します。
i i は、ベクトル内の有効なインデックス位置でなければなりません(つまり、0 <= < 3)。
関連する非メンバー関数
[noexcept] bool qFuzzyCompare(QVector3D v1, QVector3D v2)
v1 とv2 が等しい場合、浮動小数点数の比較におけるわずかな許容誤差を考慮した上で、true を返します。それ以外の場合は false を返します。
[constexpr noexcept, since 6.12] size_t qHash(QVector3D key, size_t seed = 0)
`key` のハッシュ値を返します。計算のシードには `seed ` を使用します。
この関数は Qt 6.12 で導入されました。
[constexpr noexcept] bool operator!=(QVector3D v1, QVector3D v2)
v1 がv2 と等しくない場合、true を返し、それ以外の場合はfalse を返します。この演算子は、浮動小数点数の厳密比較を使用します。
[constexpr noexcept] QVector3D operator*(QVector3D v1, QVector3D v2)
v1 の各構成要素に、v2 の対応する構成要素を乗算して形成された `QVector3D ` オブジェクトを返します。
注:これは 、v1 およびv2 の `crossProduct()` とは異なります。(その各成分の和は、v1 とv2 の内積となります。)
QVector3D::crossProduct()も参照してください 。
[constexpr noexcept] QVector3D operator*(QVector3D vector, float factor)
指定されたvector のコピーを、指定された有限factor を乗じたものを返します。
QVector3D::operator*=()も参照してください 。
[constexpr noexcept] QVector3D operator*(float factor, QVector3D vector)
指定されたvector のコピーを、指定された有限factor を乗じたものを返します。
QVector3D::operator*=()も参照してください 。
[constexpr noexcept] QVector3D operator+(QVector3D v1, QVector3D v2)
指定されたベクトル `v1 ` および `v2` の和となる `QVector3D ` オブジェクトを返します。各成分は個別に加算されます。
QVector3D::operator+=()も参照してください 。
[constexpr noexcept] QVector3D operator-(QVector3D v1, QVector3D v2)
v2 をv1 から差し引いて形成された `QVector3D ` オブジェクトを返します。各成分は個別に差し引かれます。
QVector3D::operator-=()も参照してください 。
[constexpr noexcept] QVector3D operator-(QVector3D vector)
指定されたvector の各成分の符号を変更して作成されたQVector3D オブジェクトを返します。
QVector3D(0,0,0) - vector と同等です。
これはオーバーロードされた関数です。
[constexpr] QVector3D operator/(QVector3D vector, QVector3D divisor)
指定されたvector の各成分を、指定されたdivisor の対応する成分で割って形成されたQVector3D オブジェクトを返します。
divisor には、0 または NaN の成分が含まれていてはなりません。
QVector3D::operator/=()も参照してください 。
[constexpr] QVector3D operator/(QVector3D vector, float divisor)
指定されたvector の各成分を、指定されたdivisor で割って形成されたQVector3D オブジェクトを返します。
divisor は、0またはNaNであってはなりません。
QVector3D::operator/=()も参照してください 。
QDataStream &operator<<(QDataStream &stream, QVector3D vector)
指定されたvector を指定されたstream に書き込み、そのストリームへの参照を返します。
「Qt データ型のシリアライズ」も参照してください 。
[constexpr noexcept] bool operator==(QVector3D v1, QVector3D v2)
v1 がv2 と等しい場合、true を返し、そうでない場合はfalse を返します。この演算子は、厳密な浮動小数点比較を使用します。
QDataStream &operator>>(QDataStream &stream, QVector3D &vector)
指定されたstream から3Dベクトルを読み取り、指定されたvector に格納し、そのストリームへの参照を返します。
「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.