System.Math.Vectors.TVector3D

提供: RAD Studio API Documentation
移動先: 案内検索

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 グラフィック カードでは、これを利用して頂点シェーダを効率的に実装しています。

関連項目