System.Math.Vectors.TVector3D
Delphi
TVector3D = record
C++
struct DECLSPEC_DRECORD TVector3D
{
public:
static TVector3D __fastcall Create(const float AX, const float AY, const float AZ, const float AW = 1.000000E+00f)/* overload */;
static TVector3D __fastcall Create(const TPoint3D &APoint, const float AW = 1.000000E+00f)/* overload */;
static TVector3D __fastcall _op_Addition(const TVector3D &AVector1, const TVector3D &AVector2);
static TVector3D __fastcall _op_Subtraction(const TVector3D &AVector1, const TVector3D &AVector2);
static bool __fastcall _op_Equality(const TVector3D &AVector1, const TVector3D &AVector2);
static bool __fastcall _op_Inequality(const TVector3D &AVector1, const TVector3D &AVector2);
static TVector3D __fastcall _op_UnaryNegation(const TVector3D &AVector);
static TVector3D __fastcall _op_Implicit(const TPoint3D &APoint);
__fastcall operator TPoint3D() _DEPRECATED_ATTRIBUTE1("Implicit conversion from TVector3D to TPoint3D requires homogenization") ;
static TVector3D __fastcall _op_Multiply(const TVector3D &AVector1, const TVector3D &AVector2);
static TVector3D __fastcall _op_Multiply(const TVector3D &AVector, const float AFactor);
static TVector3D __fastcall _op_Multiply(const float AFactor, const TVector3D &AVector);
static TVector3D __fastcall _op_Division(const TVector3D &AVector, const float AFactor);
static TVector3D __fastcall Zero();
void __fastcall Offset _DEPRECATED_ATTRIBUTE1("Use TPoint3D.Offset") (const TPoint3D &ADelta)/* overload */;
void __fastcall Offset _DEPRECATED_ATTRIBUTE1("Use TPoint3D.Offset") (const float ADeltaX, const float ADeltaY, const float ADeltaZ)/* overload */;
TVector3D __fastcall CrossProduct _DEPRECATED_ATTRIBUTE1("Use TPoint3D.CrossProduct") (const TVector3D &AVector);
float __fastcall DotProduct _DEPRECATED_ATTRIBUTE1("Use TPoint3D.DotProduct") (const TVector3D &AVector);
bool __fastcall EqualsTo(const TVector3D &AVector, const float Epsilon = 0.000000E+00f);
float __fastcall Length();
TVector3D __fastcall Normalize();
float __fastcall Distance(const TVector3D &AVector);
TVector3D __fastcall Rotate _DEPRECATED_ATTRIBUTE1("Use TPoint3D.Rotate") (const TPoint3D &AAxis, const float AAngle);
TVector3D __fastcall Reflect _DEPRECATED_ATTRIBUTE1("Use TPoint3D.Reflect") (const TVector3D &AVector);
TVector3D __fastcall MidVector(const TVector3D &AVector);
float __fastcall AngleCosine _DEPRECATED_ATTRIBUTE1("Use TPoint3D.AngleCosine") (const TVector3D &AVector);
TPoint3D __fastcall ToPoint3D _DEPRECATED_ATTRIBUTE1("Use explicit typecast instead.") (const bool ATransform = false);
friend TVector3D operator +(const TVector3D &AVector1, const TVector3D &AVector2) { return TVector3D::_op_Addition(AVector1, AVector2); }
friend TVector3D operator -(const TVector3D &AVector1, const TVector3D &AVector2) { return TVector3D::_op_Subtraction(AVector1, AVector2); }
friend bool operator ==(const TVector3D &AVector1, const TVector3D &AVector2) { return TVector3D::_op_Equality(AVector1, AVector2); }
friend bool operator !=(const TVector3D &AVector1, const TVector3D &AVector2) { return TVector3D::_op_Inequality(AVector1, AVector2); }
TVector3D operator -() { return TVector3D::_op_UnaryNegation(*this); }
TVector3D& operator =(const TPoint3D &APoint) { *this = TVector3D::_op_Implicit(APoint); return *this; }
friend TVector3D operator *(const TVector3D &AVector1, const TVector3D &AVector2) { return TVector3D::_op_Multiply(AVector1, AVector2); }
friend TVector3D operator *(const TVector3D &AVector, const float AFactor) { return TVector3D::_op_Multiply(AVector, AFactor); }
friend TVector3D operator *(const float AFactor, const TVector3D &AVector) { return TVector3D::_op_Multiply(AFactor, AVector); }
friend TVector3D operator /(const TVector3D &AVector, const float AFactor) { return TVector3D::_op_Division(AVector, AFactor); }
public:
union
{
struct
{
float X;
float Y;
float Z;
float W;
};
struct
{
TVector3DType V;
};
};
};
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
record struct |
public | System.Math.Vectors.pas System.Math.Vectors.hpp |
System.Math.Vectors | System.Math.Vectors |
説明
3D 空間におけるベクトルのクラスです。
TVector3D は 3D 空間におけるベクトルを表します。
その座標は、Single 型の 3 つの値 X
(幅)、Y
(高さ)、Z
(奥行き)で表されます。これらの座標と 4 番目の座標 W
は同次座標です。これらは、平行移動、回転、拡大/縮小、投影などの操作が行列操作として実装できるようになるため、コンピュータ グラフィックスで使用されます。
メモ: 現代の OpenGL および DirectX グラフィック カードでは、これを利用して頂点シェーダを効率的に実装しています。