System.Math.Vectors.TVector3D

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

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;
        };
    };
};

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
record
struct
public
System.Math.Vectors.pas
System.Math.Vectors.hpp
System.Math.Vectors System.Math.Vectors

Beschreibung

Klasse für Vektoren im 3D-Raum. TVector3D beschreibt einen Vektor im 3D-Raum.

Seine Koordinaten werden durch drei Werte vom Typ Single dargestellt, X für die Breite, Y für die Höhe und Z für die Tiefe. Diese Koordinaten und die vierte Koordinate, W, sind homogene Koordinaten. Diese Koordinaten werden in Computer-Grafiken verwendet, weil sie ermöglichen, dass Operationen, wie Verschieben, Drehen, Skalieren und Projizieren, als Matrixoperationen implementiert werden können.

Hinweis: Moderne OpenGL- und DirectX-Grafikkarten nutzen dies zur effizienten Implementierung von Eckpunkt-Schattierern.

Siehe auch