Record TGenericMatrix4
Unit
Declaration
type TGenericMatrix4 = record
Description
4x4 matrix of floating-point values.
See also
- TGenericMatrix3
- 3x3 matrix of floating-point values.
Source: src/base/castlevectors_generic_float_record.inc (line 638).
Overview
Nested Types
![]() |
TIndex = 0..3; |
![]() |
TIndexArray = array[TIndex] of TGenericScalar; |
Fields
![]() |
var Data: array [TIndex] of TIndexArray; |
Methods
![]() |
class operator + (const A, B: TGenericMatrix4): TGenericMatrix4; inline; |
![]() |
class operator - (const A, B: TGenericMatrix4): TGenericMatrix4; inline; |
![]() |
class operator - (const M: TGenericMatrix4): TGenericMatrix4; inline; |
![]() |
class operator * (const V: TGenericMatrix4; const Scalar: TGenericScalar): TGenericMatrix4; inline; |
![]() |
class operator * (const Scalar: TGenericScalar; const V: TGenericMatrix4): TGenericMatrix4; inline; |
![]() |
class operator * (const M: TGenericMatrix4; const V: TGenericVector4): TGenericVector4; inline; |
![]() |
class operator * (const M1, M2: TGenericMatrix4): TGenericMatrix4; inline; |
![]() |
function TransposeMultiply(const V: TGenericVector4): TGenericVector4; inline; |
![]() |
function ToString(const LineIndent: string = ''): string; |
![]() |
function ToRawString(const LineIndent: String = ''; const FloatFormat: String = '%g'): String; |
![]() |
function Determinant: TGenericScalar; |
![]() |
function Inverse(ADeterminant: TGenericScalar): TGenericMatrix4; |
![]() |
function TryInverse(out MInverse: TGenericMatrix4): boolean; |
![]() |
function Transpose: TGenericMatrix4; |
![]() |
function MultPoint(const Pt: TGenericVector3): TGenericVector3; overload; |
![]() |
function MultPoint(const Pt: TGenericVector2): TGenericVector2; overload; |
![]() |
function MultDirection(const Dir: TGenericVector3): TGenericVector3; overload; |
![]() |
function MultDirection(const Dir: TGenericVector2): TGenericVector2; overload; |
![]() |
class function Equals(const M1, M2: TGenericMatrix4): boolean; overload; static; |
![]() |
class function Equals(const M1, M2: TGenericMatrix4; const Epsilon: TGenericScalar): boolean; overload; static; |
![]() |
class function PerfectlyEquals(const M1, M2: TGenericMatrix4): boolean; static; |
![]() |
class function Lerp(const A: TGenericScalar; const M1, M2: TGenericMatrix4): TGenericMatrix4; static; |
![]() |
class function Zero: TGenericMatrix4; static; |
![]() |
class function Identity: TGenericMatrix4; static; |
Properties
![]() |
property Items [const AColumn,ARow: TIndex]: TGenericScalar read GetItems write SetItems; |
![]() |
property Rows [const ARow: TIndex]: TGenericVector4 read GetRows write SetRows; |
![]() |
property Columns [const AColumn: TIndex]: TGenericVector4 read GetColumns write SetColumns; |
Description
Nested Types
![]() |
TIndex = 0..3; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 638). | |
![]() |
TIndexArray = array[TIndex] of TGenericScalar; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 638). | |
Fields
![]() |
var Data: array [TIndex] of TIndexArray; |
|
Data: array [TIndex, TIndex] of TGenericScalar; Source: src/base/castlevectors_generic_float_record.inc (line 670). | |
Methods
![]() |
class operator + (const A, B: TGenericMatrix4): TGenericMatrix4; inline; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 672). | |
![]() |
class operator - (const A, B: TGenericMatrix4): TGenericMatrix4; inline; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 673). | |
![]() |
class operator - (const M: TGenericMatrix4): TGenericMatrix4; inline; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 674). | |
![]() |
class operator * (const V: TGenericMatrix4; const Scalar: TGenericScalar): TGenericMatrix4; inline; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 675). | |
![]() |
class operator * (const Scalar: TGenericScalar; const V: TGenericMatrix4): TGenericMatrix4; inline; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 676). | |
![]() |
class operator * (const M: TGenericMatrix4; const V: TGenericVector4): TGenericVector4; inline; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 677). | |
![]() |
class operator * (const M1, M2: TGenericMatrix4): TGenericMatrix4; inline; |
|
Matrix * matrix makes a normal matrix algebraic multiplication (not component-wise multiplication). Note that this is different from vectors, where vector * vector makes a component-wise multiplication. Source: src/base/castlevectors_generic_float_record.inc (line 682). | |
![]() |
function TransposeMultiply(const V: TGenericVector4): TGenericVector4; inline; |
|
Calculates "M.Transpose * V" in a faster way (without spending *any* time on calculating transposition). Source: src/base/castlevectors_generic_float_record.inc (line 686). | |
![]() |
function ToString(const LineIndent: string = ''): string; |
|
Convert to multi-line string. The output follows the natural mathematical look of the matrix, so the first line shows the firt row, and so on. This matches X3D matrix notation and contrasts with VRML 1.0 notation. Source: src/base/castlevectors_generic_float_record.inc (line 693). | |
![]() |
function ToRawString(const LineIndent: String = ''; const FloatFormat: String = '%g'): String; |
|
Convert to multi-line 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 706). | |
![]() |
function Determinant: TGenericScalar; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 711). | |
![]() |
function Inverse(ADeterminant: TGenericScalar): TGenericMatrix4; |
|
This does division by ADeterminant internally, so will raise exception from this float division if the matrix is not reversible. Check Math.IsZero(ADeterminant) first to avoid this, or use TryInverse. Source: src/base/castlevectors_generic_float_record.inc (line 718). | |
![]() |
function TryInverse(out MInverse: TGenericMatrix4): boolean; |
|
Inverse the matrix, or return Source: src/base/castlevectors_generic_float_record.inc (line 721). | |
![]() |
function Transpose: TGenericMatrix4; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 723). | |
![]() |
function MultPoint(const Pt: TGenericVector3): TGenericVector3; overload; |
|
Transform a 3D or 2D point with 4x4 matrix. This works by temporarily converting point to 4-component vector (4th component is 1). After multiplying matrix * vector we divide by 4th component. So this works Ok for all matrices, even with last row different than identity (0, 0, 0, 1). E.g. this works for projection matrices too.
Exceptions raised
Source: src/base/castlevectors_generic_float_record.inc (line 738). | |
![]() |
function MultPoint(const Pt: TGenericVector2): TGenericVector2; overload; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 739). | |
![]() |
function MultDirection(const Dir: TGenericVector3): TGenericVector3; overload; |
|
Transform a 3D or 2D direction with 4x4 matrix. This works by temporarily converting direction to 4-component vector (4th component is 0). After multiplying matrix * vector we check is the 4th component still 0 (eventually raising ETransformedResultInvalid).
Exceptions raised
Source: src/base/castlevectors_generic_float_record.inc (line 753). | |
![]() |
function MultDirection(const Dir: TGenericVector2): TGenericVector2; overload; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 754). | |
![]() |
class function Equals(const M1, M2: TGenericMatrix4): boolean; overload; static; |
|
Compare two vectors, with epsilon to tolerate slightly different floats. Source: src/base/castlevectors_generic_float_record.inc (line 758). | |
![]() |
class function Equals(const M1, M2: TGenericMatrix4; const Epsilon: TGenericScalar): boolean; overload; static; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 759). | |
![]() |
class function PerfectlyEquals(const M1, M2: TGenericMatrix4): boolean; static; |
|
Compare two vectors using exact comparison (like the "=" operator to compare floats). Source: src/base/castlevectors_generic_float_record.inc (line 762). | |
![]() |
class function Lerp(const A: TGenericScalar; const M1, M2: TGenericMatrix4): TGenericMatrix4; static; |
|
Linear interpolation between two matrix values. See also
Source: src/base/castlevectors_generic_float_record.inc (line 766). | |
![]() |
class function Zero: TGenericMatrix4; static; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 768). | |
![]() |
class function Identity: TGenericMatrix4; static; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 769). | |
Properties
![]() |
property Items [const AColumn,ARow: TIndex]: TGenericScalar read GetItems write SetItems; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 708). | |
![]() |
property Rows [const ARow: TIndex]: TGenericVector4 read GetRows write SetRows; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 709). | |
![]() |
property Columns [const AColumn: TIndex]: TGenericVector4 read GetColumns write SetColumns; |
|
This item has no description. Source: src/base/castlevectors_generic_float_record.inc (line 710). | |
Generated by PasDoc 0.17.0.snapshot.
