Packed Record TGenericVector4

Unit

Declaration

type TGenericVector4 = packed record

Description

Vector of 4 floating-point values.

See also
TGenericVector3
Vector of 3 floating-point values.

Source: src/base/castlevectors_generic_float_record.inc (line 340).

Overview

Nested Types

Public TIndex = 0..Count - 1;

Fields

Public nested const Count = 4;
Public X: TGenericScalar
Public Y: TGenericScalar
Public Z: TGenericScalar
Public W: TGenericScalar
Public Data: array [TIndex] of TGenericScalar
Public XY: TGenericVector2;
Public ZW: TGenericVector2
Public XYZ: TGenericVector3

Methods

Public class operator + (const A, B: TGenericVector4): TGenericVector4; inline;
Public class operator - (const A, B: TGenericVector4): TGenericVector4; inline;
Public class operator - (const V: TGenericVector4): TGenericVector4; inline;
Public class operator * (const V: TGenericVector4; const Scalar: TGenericScalar): TGenericVector4; inline;
Public class operator * (const Scalar: TGenericScalar; const V: TGenericVector4): TGenericVector4; inline;
Public class operator * (const V1, V2: TGenericVector4): TGenericVector4; inline;
Public class operator / (const V: TGenericVector4; const Scalar: TGenericScalar): TGenericVector4; inline;
Public procedure Init(const AX, AY, AZ, AW: TGenericScalar); inline; deprecated 'initialize instead like "V := Vector4(X, Y, Z, W)"; modifying a temporary record value is a trap, e.g. this is not reliable: "Scene.Rotation.Init(X, Y, Z, W)"';
Public function ToString: string;
Public function ToRawString(const FloatFormat: String = '%g'): string;
Public function Length: TGenericScalar; inline;
Public function LengthSqr: TGenericScalar; inline;
Public function AdjustToLength(const NewLength: TGenericScalar): TGenericVector4; inline;
Public class function DotProduct(const V1, V2: TGenericVector4): TGenericScalar; static; inline;
Public function Abs: TGenericVector4; inline;
Public function IsZero: boolean; overload; inline;
Public function IsZero(const Epsilon: TGenericScalar): boolean; overload; inline;
Public function IsPerfectlyZero: boolean; inline;
Public class function Equals(const V1, V2: TGenericVector4): boolean; overload; inline; static;
Public class function Equals(const V1, V2: TGenericVector4; const Epsilon: TGenericScalar): boolean; overload; inline; static;
Public class function PerfectlyEquals(const V1, V2: TGenericVector4): boolean; static; inline;
Public function ToPosition: TGenericVector3; inline;
Public class function Lerp(const A: TGenericScalar; const V1, V2: TGenericVector4): TGenericVector4; static; inline;
Public class function Zero: TGenericVector4; static; inline;

Properties

Public property AsArray [const Index: TIndex]: TGenericScalar read GetItems;
Public class property One [const Index: TIndex]: TGenericVector4 read GetOne;

Description

Nested Types

Public TIndex = 0..Count - 1;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 343).

Fields

Public nested const Count = 4;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 343).

Public X: TGenericScalar

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 445).

Public Y: TGenericScalar

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 445).

Public Z: TGenericScalar

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 445).

Public W: TGenericScalar

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 445).

Public Data: array [TIndex] of TGenericScalar

Access (get, set) vector components by index.

Source: src/base/castlevectors_generic_float_record.inc (line 446).

Public XY: TGenericVector2;

Get first 2 components as a 2D vector. This simply rejects the remaining vector components.

Source: src/base/castlevectors_generic_float_record.inc (line 449).

Public ZW: TGenericVector2

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 450).

Public XYZ: TGenericVector3

Get first 3 components as a 3D vector. This simply rejects the 4th component.

Source: src/base/castlevectors_generic_float_record.inc (line 453).

Methods

Public class operator + (const A, B: TGenericVector4): TGenericVector4; inline;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 370).

Public class operator - (const A, B: TGenericVector4): TGenericVector4; inline;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 371).

Public class operator - (const V: TGenericVector4): TGenericVector4; inline;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 372).

Public class operator * (const V: TGenericVector4; const Scalar: TGenericScalar): TGenericVector4; inline;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 373).

Public class operator * (const Scalar: TGenericScalar; const V: TGenericVector4): TGenericVector4; inline;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 374).

Public class operator * (const V1, V2: TGenericVector4): TGenericVector4; inline;

Vector * vector makes a component-wise multiplication. This is consistent with GLSL and other vector APIs.

Source: src/base/castlevectors_generic_float_record.inc (line 377).

Public class operator / (const V: TGenericVector4; const Scalar: TGenericScalar): TGenericVector4; inline;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 378).

Public procedure Init(const AX, AY, AZ, AW: TGenericScalar); inline; deprecated 'initialize instead like "V := Vector4(X, Y, Z, W)"; modifying a temporary record value is a trap, e.g. this is not reliable: "Scene.Rotation.Init(X, Y, Z, W)"';

Warning: this symbol is deprecated: initialize instead like "V := Vector4(X, Y, Z, W)"; modifying a temporary record value is a trap, e.g. this is not reliable: "Scene.Rotation.Init(X, Y, Z, W)"

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 380).

Public function ToString: string;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 383).

Public function ToRawString(const FloatFormat: String = '%g'): string;

Convert to string using the most precise (not always easily readable by humans) float format. This may use the exponential (scientific) notation to represent the floating-point value, if needed.

You can pass, as parameter, the format to use. By default it is '%g', "general number format" with maximum precision documented on https://www.freepascal.org/docs-html/rtl/sysutils/format.html .

This is suitable for storing the value in a file, with a best precision possible.

Source: src/base/castlevectors_generic_float_record.inc (line 396).

Public function Length: TGenericScalar; inline;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 398).

Public function LengthSqr: TGenericScalar; inline;

Vector length squared. This is slightly faster than Length as it avoids calculating a square root along the way. (But, please remember to not optimize your code without a need. Optimize only parts that are proven bottlenecks, otherwise don't make the code less readable for the sake of speed.)

Source: src/base/castlevectors_generic_float_record.inc (line 405).

Public function AdjustToLength(const NewLength: TGenericScalar): TGenericVector4; inline;

Calculate a new vector scaled so that it has length equal to NewLength. NewLength may be negative, in which case we'll negate the vector and then adjust it's length to Abs(NewLength).

Source: src/base/castlevectors_generic_float_record.inc (line 410).

Public class function DotProduct(const V1, V2: TGenericVector4): TGenericScalar; static; inline;

Dot product of two vectors. See https://en.wikipedia.org/wiki/Dot_product .

Source: src/base/castlevectors_generic_float_record.inc (line 414).

Public function Abs: TGenericVector4; inline;

Absolute value on all components.

Source: src/base/castlevectors_generic_float_record.inc (line 417).

Public function IsZero: boolean; overload; inline;

Are all components equal to zero (within some epsilon margin).

Source: src/base/castlevectors_generic_float_record.inc (line 420).

Public function IsZero(const Epsilon: TGenericScalar): boolean; overload; inline;

Are all components equal to zero (within Epsilon margin).

Source: src/base/castlevectors_generic_float_record.inc (line 423).

Public function IsPerfectlyZero: boolean; inline;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 425).

Public class function Equals(const V1, V2: TGenericVector4): boolean; overload; inline; static;

Compare two vectors, with epsilon to tolerate slightly different floats.

Source: src/base/castlevectors_generic_float_record.inc (line 428).

Public class function Equals(const V1, V2: TGenericVector4; const Epsilon: TGenericScalar): boolean; overload; inline; static;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 429).

Public class function PerfectlyEquals(const V1, V2: TGenericVector4): boolean; static; inline;

Compare two vectors using exact comparison (like the "=" operator to compare floats).

Source: src/base/castlevectors_generic_float_record.inc (line 432).

Public function ToPosition: TGenericVector3; inline;

Convert a 4D homogeneous coordinate to 3D position.

Source: src/base/castlevectors_generic_float_record.inc (line 435).

Public class function Lerp(const A: TGenericScalar; const V1, V2: TGenericVector4): TGenericVector4; static; inline;

Linear interpolation between two vector values. Works analogous to TVector3.Lerp

Source: src/base/castlevectors_generic_float_record.inc (line 439).

Public class function Zero: TGenericVector4; static; inline;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 441).

Properties

Public property AsArray [const Index: TIndex]: TGenericScalar read GetItems;

Get vector components by index. This is a default property, so you can write MyVector[0] instead of MyVector.Data[0] or MyVector.AsArray[0].

But note that this is not writeable (because exposing writeable properties on vectors would cause some subtle traps, see https://castle-engine.io/coding_traps ). Use MyVector.Data[0] := 123.456 if you want to set by index, or MyVector.X := 123.456.

Source: src/base/castlevectors_generic_float_record.inc (line 359).

Public class property One [const Index: TIndex]: TGenericVector4 read GetOne;

This item has no description.

Source: src/base/castlevectors_generic_float_record.inc (line 442).


Generated by PasDoc 0.17.0.snapshot.