CAST II Game Engine

   DESCRIPTION       FEATURES       SCREENSHOTS       FORUMS       DOCUMENTATION       DOWNLOADS       CONTACTS   
Units
Class Hierarchy
Classes, Interfaces and Objects
Types
Enumerations
Variables
Constants
Functions and Procedures
Identifiers

Unit Base3D

Description

Basic 3D Unit

(C) 2003-2007 George "Mirage" Bakhtadze. www.casteng.com
The source code may be used under either MPL 1.1 or LGPL 2.1 license. See included license.txt file
Unit contains basic 3D types and routines

Functions and Procedures

Overview

function AddVector3s(const V1, V2: TVector3s): TVector3s; overload;
procedure AddVector3s(out Result: TVector3s; const V1, V2: TVector3s); overload;
function AddVector4s(const V1, V2: TVector4s): TVector4s; overload;
procedure AddVector4s(out Result: TVector4s; const V1, V2: TVector4s); overload;
function ArcTan2(const Y, X: Extended): Extended;
function CartesianProductVector3s(const V1, V2: TVector3s): TVector3s;
procedure CrossProductVector3s(out Result: TVector3s; const V1, V2: TVector3s); overload;
function CrossProductVector3s(const V1, V2: TVector3s): TVector3s; overload;
function CutMatrix3s(const M: TMatrix4s): TMatrix3s; overload;
procedure CutMatrix3s(out Result: TMatrix3s; const M: TMatrix4s); overload;
function DotProductVector3s(const V1, V2: TVector3s): Single;
function EqualsMatrix3s(const M1, M2: TMatrix3s): Boolean;
function EqualsMatrix4s(const M1, M2: TMatrix4s): Boolean;
function EqualsQuaternions(Q1, Q2: TQuaternion): Boolean;
function EqualsVector3s(const V1, V2: TVector3s): Boolean;
function EqualsVector4s(const V1, V2: TVector4s): Boolean;
function ExpandMatrix3s(const M: TMatrix3s): TMatrix4s; overload;
procedure ExpandVector3s(out Result: TVector4s; const V: Tvector3s); overload;
function ExpandVector3s(const V: Tvector3s): TVector4s; overload;
procedure FastNormalizeVector3s(var Result: TVector3s; Length: Single = 1); overload;
procedure FastNormalizeVector4s(var Result: TVector4s; Length: Single = 1);
function GetMagnitudeApprox(const V: TVector3s): Single;
function GetPerpendicular3s(const V: TVector3s): TVector3s; overload;
procedure GetPerpendicular3s(out Result: TVector3s; const V: TVector3s); overload;
function GetPlane(A, B, C, D: Single): TPlane;
function GetPlaneFromPointNormal(const Point, Normal: TVector3s): TPlane;
procedure GetQuaternion(out Result: TQuaternion; const Angle: Single; const Axis: TVector3s); overload;
function GetQuaternion(const Angle: Single; const Axis: TVector3s): TQuaternion; overload;
procedure GetTransposedMatrix3s(out Result: TMatrix3s; const M: TMatrix3s); overload;
function GetTransposedMatrix3s(const M: TMatrix3s): TMatrix3s; overload;
procedure GetTransposedMatrix4s(out Result: TMatrix4s; const M: TMatrix4s); overload;
function GetTransposedMatrix4s(const M: TMatrix4s): TMatrix4s; overload;
function GetVector2s(const X, Y: Single): TVector2s; overload;
procedure GetVector2s(out Result: TVector2s; const X, Y: Single); overload;
function GetVector3s(const X, Y, Z: Single): TVector3s; overload;
procedure GetVector3s(out Result: TVector3s; const X, Y, Z: Single); overload;
function GetVector4s(const X, Y, Z, W: Single): TVector4s; overload;
procedure GetVector4s(out Result: TVector4s; const X, Y, Z, W: Single); overload;
procedure GetVectorRotateQuat(out Result: TQuaternion; const OldDir, NewDir: TVector3s);
function InvertAffineMatrix4s(const M: TMatrix4s): TMatrix4s;
function InvertMatrix3s(const M: TMatrix3s): TMatrix3s;
function InvertMatrix4s(M: TMatrix4s): TMatrix4s;
function InvertRotTransMatrix(const M: TMatrix4s): TMatrix4s; overload;
procedure InvertRotTransMatrix(out Result: TMatrix4s; const M: TMatrix4s); overload;
function IsMatrixAffine(const M: TMatrix4s): Boolean;
function IsPointsSameSide(const Origin, Dir, P1, P2: TVector3s): Boolean;
function MatDet(const M: TMatrix4s): Single;
function Matrix3sByQuat(const Quat: TQuaternion): TMatrix3s; overload;
procedure Matrix3sByQuat(var Result: TMatrix3s; const Quat: TQuaternion); overload;
procedure Matrix4sByQuat(var Result: TMatrix4s; const Quat: TQuaternion); overload;
function Matrix4sByQuat(const Quat: TQuaternion): TMatrix4s; overload;
function MulMatrix3s(const M1, M2: TMatrix3s): TMatrix3s; overload;
procedure MulMatrix3s(out Result: TMatrix3s; const M1, M2: TMatrix3s); overload;
procedure MulMatrix4s(out Result: TMatrix4s; const M1, M2: TMatrix4s); overload;
function MulMatrix4s(const M1, M2: TMatrix4s): TMatrix4s; overload;
procedure MulQuaternion(out Result: TQuaternion; const Quat1, Quat2: TQuaternion); overload;
function MulQuaternion(const Quat1, Quat2: TQuaternion): TQuaternion; overload;
procedure NormalizeAngle(var Angle: Single);
procedure NormalizePlane(var APlane: TPlane);
procedure NormalizeQuaternion(out Result: TQuaternion; const Quat: TQuaternion); overload;
function NormalizeQuaternion(const Quat: TQuaternion): TQuaternion; overload;
function NormalizeVector3s(const V: TVector3s; Length: Single = 1): TVector3s; overload;
procedure NormalizeVector3s(out Result: TVector3s; const V: TVector3s; Length: Single = 1); overload;
function NormalizeVector4s(const V: TVector4s; Length: Single = 1): TVector4s;
procedure PlaneFromPointNormal(out Result: TPlane; const Point, Normal: TVector3s);
procedure ReflectionMatrix4s(out Result: TMatrix4s; const PlanePoint, PlaneNormal: TVector3s); overload;
function ReflectionMatrix4s(const PlanePoint, PlaneNormal: TVector3s): TMatrix4s; overload;
function ReflectVector3s(const V, N: TVector3s): TVector3s; overload;
procedure ReflectVector3s(out Result: TVector3s; const V, N: TVector3s); overload;
procedure ScaleMatrix4s(out Result: TMatrix4s; const X, Y, Z: Single); overload;
function ScaleMatrix4s(const X, Y, Z: Single): TMatrix4s; overload;
procedure ScaleVector3s(out Result: TVector3s; const V: TVector3s; const Factor: Single); overload;
function ScaleVector3s(const V: TVector3s; const Factor: Single): TVector3s; overload;
function ScaleVector4s(const V: TVector4s; const Factor: Single): TVector4s; overload;
procedure ScaleVector4s(out Result: TVector4s; const V: TVector4s; const Factor: Single); overload;
function SqrMagnitude(const V: TVector3s): Single;
procedure SubVector3s(out Result: TVector3s; const V1, V2: TVector3s); overload;
function SubVector3s(const V1, V2: TVector3s): TVector3s; overload;
function SubVector4s(const V1, V2: TVector4s): TVector4s; overload;
procedure SubVector4s(out Result: TVector4s; const V1, V2: TVector4s); overload;
function Transform3Vector3s(const M: TMatrix3s; const V: TVector3s): TVector3s; overload;
procedure Transform3Vector3s(out Result: TVector3s; const M: TMatrix3s; const V: TVector3s); overload;
function Transform3Vector3sTransp(const M: TMatrix3s; const V: TVector3s): TVector3s; overload;
function Transform4Vector33s(const M: TMatrix4s; const V: TVector3s): TVector3s; overload;
procedure Transform4Vector33s(out Result: TVector3s; const M: TMatrix4s; const V: TVector3s); overload;
function Transform4Vector3s(const M: TMatrix4s; const V: TVector3s): TVector4s; overload;
procedure Transform4Vector3s(out Result: TVector4s; const M: TMatrix4s; const V: TVector3s); overload;
procedure Transform4Vector4s(out Result: TVector4s; const M: TMatrix4s; const V: TVector4s); overload;
function Transform4Vector4s(const M: TMatrix4s; const V: TVector4s): TVector4s; overload;
function TranslationMatrix4s(const X, Y, Z: Single): TMatrix4s; overload;
procedure TranslationMatrix4s(out Result: TMatrix4s; const X, Y, Z: Single); overload;
function TranspMulMatrix3s(const M1, M2: TMatrix3s): TMatrix3s; overload;
procedure TranspMulMatrix3s(out Result: TMatrix3s; const M1, M2: TMatrix3s); overload;
function TranspMulMatrix4s(const M1, M2: TMatrix4s): TMatrix4s; overload;
procedure TranspMulMatrix4s(out Result: TMatrix4s; const M1, M2: TMatrix4s); overload;
procedure TransposeMatrix3s(var M: TMatrix3s);
procedure TransposeMatrix4s(var M: TMatrix4s);
function Vec2s(const X, Y: Single): TVector2s;
function Vec3s(const X, Y, Z: Single): TVector3s;
function Vec4s(const X, Y, Z, W: Single): TVector4s; overload;
procedure XRotationMatrix3s(out Result: TMatrix3s; const Angle: Single); overload;
function XRotationMatrix3s(const Angle: Single): TMatrix3s; overload;
function XRotationMatrix4s(const Angle: Single): TMatrix4s; overload;
procedure XRotationMatrix4s(out Result: TMatrix4s; const Angle: Single); overload;
function YRotationMatrix3s(const Angle: Single): TMatrix3s; overload;
procedure YRotationMatrix3s(out Result: TMatrix3s; const Angle: Single); overload;
procedure YRotationMatrix4s(out Result: TMatrix4s; const Angle: Single); overload;
function YRotationMatrix4s(const Angle: Single): TMatrix4s; overload;
function ZRotationMatrix3s(const Angle: Single): TMatrix3s; overload;
procedure ZRotationMatrix3s(out Result: TMatrix3s; const Angle: Single); overload;
function ZRotationMatrix4s(const Angle: Single): TMatrix4s; overload;
procedure ZRotationMatrix4s(out Result: TMatrix4s; const Angle: Single); overload;

Description

function AddVector3s(const V1, V2: TVector3s): TVector3s; overload;

 

procedure AddVector3s(out Result: TVector3s; const V1, V2: TVector3s); overload;

 

function AddVector4s(const V1, V2: TVector4s): TVector4s; overload;

 

procedure AddVector4s(out Result: TVector4s; const V1, V2: TVector4s); overload;

 

function ArcTan2(const Y, X: Extended): Extended;

function SphereOOBBColDet(M1, M2: TMatrix3s; P1, P2: TVector3s; const Sphere, OOBB: TBoundingVolume; CoordStep: Integer): Boolean; // Пересечение сферы и бокса function OOBBOOBBColDet(M1, M2: TMatrix3s; P1, P2: TVector3s; const OOBB1, OOBB2: TBoundingVolume): Boolean; // Пересечение äвух боксов function OOBBOOBBColDet2D(M1, M2: TMatrix3s; P1, P2: TVector3s; const OOBB1, OOBB2: TBoundingVolume): Boolean; // ToFix: Add scale support function VolumeColDet(const Volume1, Volume2: TBoundingVolumes): TCollisionResult; // Пересечение äвух наборов объемов function VolumeColTest(const Volume1, Volume2: TBoundingVolumes): Boolean; // function VolumeColDet2D(const Volume1, Volume2: TBoundingVolumes): TCollisionResult; // ToFix: Take location in account function VolumeColTest2D(const Volume1, Volume2: TBoundingVolumes): Boolean; // function NewBoundingVolume(AVolumeKind: Cardinal; AOffset, ADimensions: TVector3s; ANext: PBoundingVolume = nil): PBoundingVolume; procedure DisposeBoundingVolumes(var Volumes: TBoundingVolumes);

function CartesianProductVector3s(const V1, V2: TVector3s): TVector3s;

Vectors cartesian product

procedure CrossProductVector3s(out Result: TVector3s; const V1, V2: TVector3s); overload;

Vectors cross product

function CrossProductVector3s(const V1, V2: TVector3s): TVector3s; overload;

Vectors cross product

function CutMatrix3s(const M: TMatrix4s): TMatrix3s; overload;

Cuts 3x3 matrix from the specified 4x4 matrix

procedure CutMatrix3s(out Result: TMatrix3s; const M: TMatrix4s); overload;

Cuts 3x3 matrix from the specified 4x4 matrix

function DotProductVector3s(const V1, V2: TVector3s): Single;

Vectors dot product

function EqualsMatrix3s(const M1, M2: TMatrix3s): Boolean;

Returns True if M1 and M2 are equal

function EqualsMatrix4s(const M1, M2: TMatrix4s): Boolean;

Returns True if M1 and M2 are equal

function EqualsQuaternions(Q1, Q2: TQuaternion): Boolean;

Returns True if the given quaternions are equal

function EqualsVector3s(const V1, V2: TVector3s): Boolean;

Returns True if V1 and V2 are equal

function EqualsVector4s(const V1, V2: TVector4s): Boolean;

Returns True if V1 and V2 are equal

function ExpandMatrix3s(const M: TMatrix3s): TMatrix4s; overload;

Expands a 3x3 matrix to 4x3 matrix by filling new components with 0 except _44 which filled with 1

procedure ExpandVector3s(out Result: TVector4s; const V: Tvector3s); overload;

Expands a 3-dimensional vector to 4-dimensional by filling w-component by 1

function ExpandVector3s(const V: Tvector3s): TVector4s; overload;

Expands a 3-dimensional vector to 4-dimensional by filling w-component with 1

procedure FastNormalizeVector3s(var Result: TVector3s; Length: Single = 1); overload;

Forces the vector V's length to the specified length using fast InvSqrt

procedure FastNormalizeVector4s(var Result: TVector4s; Length: Single = 1);

Forces the vector V's length to the specified length using fast InvSqrt

function GetMagnitudeApprox(const V: TVector3s): Single;

Returns approximated magnitude of V (need testing)

function GetPerpendicular3s(const V: TVector3s): TVector3s; overload;

Retuns a vector which is orthogonal to V

procedure GetPerpendicular3s(out Result: TVector3s; const V: TVector3s); overload;

Retuns a vector which is orthogonal to V

function GetPlane(A, B, C, D: Single): TPlane;

Returns a plane by the given equation coeficients (AX + BY + CZ + D = 0)

function GetPlaneFromPointNormal(const Point, Normal: TVector3s): TPlane;

Returns a plane by the specified point and normal

procedure GetQuaternion(out Result: TQuaternion; const Angle: Single; const Axis: TVector3s); overload;

Retuns a normalized quaternion by the specified axis and angle

function GetQuaternion(const Angle: Single; const Axis: TVector3s): TQuaternion; overload;

Retuns a normalized quaternion by the specified axis and angle

procedure GetTransposedMatrix3s(out Result: TMatrix3s; const M: TMatrix3s); overload;

Returns transposed matrix

function GetTransposedMatrix3s(const M: TMatrix3s): TMatrix3s; overload;

Returns transposed matrix

procedure GetTransposedMatrix4s(out Result: TMatrix4s; const M: TMatrix4s); overload;

Returns transposed matrix

function GetTransposedMatrix4s(const M: TMatrix4s): TMatrix4s; overload;

Returns transposed matrix

function GetVector2s(const X, Y: Single): TVector2s; overload;

Returns a 2-dimensional vector with the specified components

procedure GetVector2s(out Result: TVector2s; const X, Y: Single); overload;

Returns a 2-dimensional vector with the specified components

function GetVector3s(const X, Y, Z: Single): TVector3s; overload;

Returns a 3-dimensional vector with the specified components

procedure GetVector3s(out Result: TVector3s; const X, Y, Z: Single); overload;

Returns a 3-dimensional vector with the specified components

function GetVector4s(const X, Y, Z, W: Single): TVector4s; overload;

Returns a 4-dimensional vector with the specified components

procedure GetVector4s(out Result: TVector4s; const X, Y, Z, W: Single); overload;

Returns a 4-dimensional vector with the specified components

procedure GetVectorRotateQuat(out Result: TQuaternion; const OldDir, NewDir: TVector3s);

Returns a quaternion which specifies a rotation from OldDir to NewDir.
OldDir to NewDir should be normalized (needs testing)

function InvertAffineMatrix4s(const M: TMatrix4s): TMatrix4s;

Returns inversion of a matrix which contains affine transfomations (rotations, translations and scaling). Faster then InvertMatrix4s

function InvertMatrix3s(const M: TMatrix3s): TMatrix3s;

3x3 matrix inversion (current dummy implementation: transpose)

function InvertMatrix4s(M: TMatrix4s): TMatrix4s;

Returns inversion of the specified matrix

function InvertRotTransMatrix(const M: TMatrix4s): TMatrix4s; overload;

Returns inversion of a matrix which contains only rotations and translations. Faster then InvertAffineMatrix4s

procedure InvertRotTransMatrix(out Result: TMatrix4s; const M: TMatrix4s); overload;

Returns inversion of a matrix which contains only rotations and translations. Faster then InvertAffineMatrix4s

function IsMatrixAffine(const M: TMatrix4s): Boolean;

Returns True if the specified matrix is affine (last column is 0, 0, 0, 1)

function IsPointsSameSide(const Origin, Dir, P1, P2: TVector3s): Boolean;

Returns True if both P1 and P2 points are at the same side of the ray

function MatDet(const M: TMatrix4s): Single;

Returns determinant of the specified matrix

function Matrix3sByQuat(const Quat: TQuaternion): TMatrix3s; overload;

Returns a 3x3 rotation matrix which specifies the same rotation as Quat

procedure Matrix3sByQuat(var Result: TMatrix3s; const Quat: TQuaternion); overload;

Fills Result with a 3x3 rotation matrix which specifies the same rotation as Quat.

procedure Matrix4sByQuat(var Result: TMatrix4s; const Quat: TQuaternion); overload;

Fills Result with a 4x4 rotation matrix which specifies the same rotation as Quat.

function Matrix4sByQuat(const Quat: TQuaternion): TMatrix4s; overload;

Returns a 4x4 rotation matrix which specifies the same rotation as Quat

function MulMatrix3s(const M1, M2: TMatrix3s): TMatrix3s; overload;

Matrix multiplication

procedure MulMatrix3s(out Result: TMatrix3s; const M1, M2: TMatrix3s); overload;

Matrix multiplication

procedure MulMatrix4s(out Result: TMatrix4s; const M1, M2: TMatrix4s); overload;

Matrix multiplication

function MulMatrix4s(const M1, M2: TMatrix4s): TMatrix4s; overload;

Matrix multiplication

procedure MulQuaternion(out Result: TQuaternion; const Quat1, Quat2: TQuaternion); overload;

Returns product of Quat1 and Quat2

function MulQuaternion(const Quat1, Quat2: TQuaternion): TQuaternion; overload;

Returns product of Quat1 and Quat2

procedure NormalizeAngle(var Angle: Single);

Forces Angle to [0..2*pi] range

procedure NormalizePlane(var APlane: TPlane);

Normalizes the plane equation coefficients

procedure NormalizeQuaternion(out Result: TQuaternion; const Quat: TQuaternion); overload;

Retuns the normalized version of Quat

function NormalizeQuaternion(const Quat: TQuaternion): TQuaternion; overload;

Retuns the normalized version of Quat

function NormalizeVector3s(const V: TVector3s; Length: Single = 1): TVector3s; overload;

Forces the vector V's length to the specified length

procedure NormalizeVector3s(out Result: TVector3s; const V: TVector3s; Length: Single = 1); overload;

Forces then vector V's length to the specified length

function NormalizeVector4s(const V: TVector4s; Length: Single = 1): TVector4s;

Forces the vector V's length to the specified length

procedure PlaneFromPointNormal(out Result: TPlane; const Point, Normal: TVector3s);

Returns a plane by the specified point and normal

procedure ReflectionMatrix4s(out Result: TMatrix4s; const PlanePoint, PlaneNormal: TVector3s); overload;

Returns matrix containing reflection by the specified plane transformation

function ReflectionMatrix4s(const PlanePoint, PlaneNormal: TVector3s): TMatrix4s; overload;

Returns matrix containing reflection by the specified plane transformation

function ReflectVector3s(const V, N: TVector3s): TVector3s; overload;

Returns V reflected from surface with the normal N

procedure ReflectVector3s(out Result: TVector3s; const V, N: TVector3s); overload;

Returns V reflected from surface with the normal N

procedure ScaleMatrix4s(out Result: TMatrix4s; const X, Y, Z: Single); overload;

Returns scaling matrix

function ScaleMatrix4s(const X, Y, Z: Single): TMatrix4s; overload;

Returns scaling matrix

procedure ScaleVector3s(out Result: TVector3s; const V: TVector3s; const Factor: Single); overload;

Scales the vector V by the specified factor and returns it in Result

function ScaleVector3s(const V: TVector3s; const Factor: Single): TVector3s; overload;

Scales the vector V by the specified factor

function ScaleVector4s(const V: TVector4s; const Factor: Single): TVector4s; overload;

Scales the vector V by the specified factor

procedure ScaleVector4s(out Result: TVector4s; const V: TVector4s; const Factor: Single); overload;

Scales the vector V by the specified factor and returns it in Result

function SqrMagnitude(const V: TVector3s): Single;

Returns the squared magnitude of V

procedure SubVector3s(out Result: TVector3s; const V1, V2: TVector3s); overload;

 

function SubVector3s(const V1, V2: TVector3s): TVector3s; overload;

 

function SubVector4s(const V1, V2: TVector4s): TVector4s; overload;

 

procedure SubVector4s(out Result: TVector4s; const V1, V2: TVector4s); overload;

 

function Transform3Vector3s(const M: TMatrix3s; const V: TVector3s): TVector3s; overload;

Returns 3-dimensional vector V transformed by matrix M

procedure Transform3Vector3s(out Result: TVector3s; const M: TMatrix3s; const V: TVector3s); overload;

Returns 3-dimensional vector V transformed by matrix M

function Transform3Vector3sTransp(const M: TMatrix3s; const V: TVector3s): TVector3s; overload;

Returns 3-dimensional vector V transformed by transposed matrix M

function Transform4Vector33s(const M: TMatrix4s; const V: TVector3s): TVector3s; overload;

Returns 3-dimensional vector V transformed by matrix M

procedure Transform4Vector33s(out Result: TVector3s; const M: TMatrix4s; const V: TVector3s); overload;

Returns 3-dimensional vector V transformed by matrix M

function Transform4Vector3s(const M: TMatrix4s; const V: TVector3s): TVector4s; overload;

Returns expanded 3-dimensional vector V transformed by matrix M

procedure Transform4Vector3s(out Result: TVector4s; const M: TMatrix4s; const V: TVector3s); overload;

Returns expanded 3-dimensional vector V transformed by matrix M

procedure Transform4Vector4s(out Result: TVector4s; const M: TMatrix4s; const V: TVector4s); overload;

Returns 4-dimensional vector V transformed by matrix M

function Transform4Vector4s(const M: TMatrix4s; const V: TVector4s): TVector4s; overload;

Returns 4-dimensional vector V transformed by matrix M

function TranslationMatrix4s(const X, Y, Z: Single): TMatrix4s; overload;

Returns translation matrix

procedure TranslationMatrix4s(out Result: TMatrix4s; const X, Y, Z: Single); overload;

Returns translation matrix

function TranspMulMatrix3s(const M1, M2: TMatrix3s): TMatrix3s; overload;

Matrix multiplication and transpose

procedure TranspMulMatrix3s(out Result: TMatrix3s; const M1, M2: TMatrix3s); overload;

Matrix multiplication and transpose

function TranspMulMatrix4s(const M1, M2: TMatrix4s): TMatrix4s; overload;

Matrix multiplication and transpose

procedure TranspMulMatrix4s(out Result: TMatrix4s; const M1, M2: TMatrix4s); overload;

Matrix multiplication and transpose

procedure TransposeMatrix3s(var M: TMatrix3s);

Returns transposed matrix

procedure TransposeMatrix4s(var M: TMatrix4s);

Returns transposed matrix

function Vec2s(const X, Y: Single): TVector2s;

Returns a 2-dimensional vector with the specified components

function Vec3s(const X, Y, Z: Single): TVector3s;

Returns a 3-dimensional vector with the specified components

function Vec4s(const X, Y, Z, W: Single): TVector4s; overload;

Returns a 4-dimensional vector with the specified components

procedure XRotationMatrix3s(out Result: TMatrix3s; const Angle: Single); overload;

Returns rotation over X-axis matrix

function XRotationMatrix3s(const Angle: Single): TMatrix3s; overload;

Returns rotation over X-axis matrix

function XRotationMatrix4s(const Angle: Single): TMatrix4s; overload;

Returns rotation over X-axis matrix

procedure XRotationMatrix4s(out Result: TMatrix4s; const Angle: Single); overload;

Returns rotation over X-axis matrix

function YRotationMatrix3s(const Angle: Single): TMatrix3s; overload;

Returns rotation over Y-axis matrix

procedure YRotationMatrix3s(out Result: TMatrix3s; const Angle: Single); overload;

Returns rotation over Y-axis matrix

procedure YRotationMatrix4s(out Result: TMatrix4s; const Angle: Single); overload;

Returns rotation over Y-axis matrix

function YRotationMatrix4s(const Angle: Single): TMatrix4s; overload;

Returns rotation over Y-axis matrix

function ZRotationMatrix3s(const Angle: Single): TMatrix3s; overload;

Returns rotation over Z-axis matrix

procedure ZRotationMatrix3s(out Result: TMatrix3s; const Angle: Single); overload;

Returns rotation over Z-axis matrix

function ZRotationMatrix4s(const Angle: Single): TMatrix4s; overload;

Returns rotation over Z-axis matrix

procedure ZRotationMatrix4s(out Result: TMatrix4s; const Angle: Single); overload;

Returns rotation over Z-axis matrix

Types

Overview

PPlane = ^TPlane;
TBoundingBox = record P1, P2: TVector3s; end;
TMatrix3s = packed record case Integer of 0: (_11, _12, _13: Single; _21, _22, _23: Single; _31, _32, _33: Single); 1: (M: array [0..2, 0..2] of Single); 2: (ViewRight, ViewUp, ViewForward: TVector3s); 3: (A: array[0..8] of Single); end;
TMatrix4s = packed record case Integer of 0: (_11, _12, _13, _14: Single; _21, _22, _23, _24: Single; _31, _32, _33, _34: Single; _41, _42, _43, _44: Single); 1: (M: array [0..3, 0..3] of Single); 2: (ViewRight: TVector3s; _dummy1: Single; ViewUp: TVector3s; _dummy2: Single; ViewForward: TVector3s; _dummy3: Single; ViewTranslate: TVector3s); 3: (ViewRight4s, ViewUp4s, ViewForward4s, ViewTranslate4s: TVector4s); 4: (A: array[0..15] of Single); 5: (Rows: array[0..3] of TVector4s); end;
TPlane = packed record case Integer of 0: (A, B, C, D: Single); 1: (Normal: TVector3s; Distance: Single); 2: (V: TVector4s); end;
TQuaternion = array[0..3] of Single;

Description

PPlane = ^TPlane;

 

TBoundingBox = record P1, P2: TVector3s; end;

Axis-aligned (in model space) bounding box given by

TMatrix3s = packed record case Integer of 0: (_11, _12, _13: Single; _21, _22, _23: Single; _31, _32, _33: Single); 1: (M: array [0..2, 0..2] of Single); 2: (ViewRight, ViewUp, ViewForward: TVector3s); 3: (A: array[0..8] of Single); end;

3x3 single-precision floating point matrix

TMatrix4s = packed record case Integer of 0: (_11, _12, _13, _14: Single; _21, _22, _23, _24: Single; _31, _32, _33, _34: Single; _41, _42, _43, _44: Single); 1: (M: array [0..3, 0..3] of Single); 2: (ViewRight: TVector3s; _dummy1: Single; ViewUp: TVector3s; _dummy2: Single; ViewForward: TVector3s; _dummy3: Single; ViewTranslate: TVector3s); 3: (ViewRight4s, ViewUp4s, ViewForward4s, ViewTranslate4s: TVector4s); 4: (A: array[0..15] of Single); 5: (Rows: array[0..3] of TVector4s); end;

4x4 single-precision floating point matrix

TPlane = packed record case Integer of 0: (A, B, C, D: Single); 1: (Normal: TVector3s; Distance: Single); 2: (V: TVector4s); end;

Plane given by equation AX+BY+CZ+D = 0 or by normal and distance

TQuaternion = array[0..3] of Single;

Quaternion type. Used for specifying rotations

Constants

Overview

CosTabOffs = SinTableSize div 4;
IdentityMatrix3s : TMatrix3s = (m: ((1, 0, 0), (0, 1, 0), (0, 0, 1)) );
IdentityMatrix4s : TMatrix4s = (m: ((1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1)));
SinTableSize = 512;
ZeroVector3s : TVector3s = (X: 0; Y: 0; Z: 0);
ZeroVector4s : TVector4s = (X: 0; Y: 0; Z: 0; W: 0);

Description

CosTabOffs = SinTableSize div 4;

Offset in sine table to compute cosines

IdentityMatrix3s : TMatrix3s = (m: ((1, 0, 0), (0, 1, 0), (0, 0, 1)) );

 

IdentityMatrix4s : TMatrix4s = (m: ((1, 0, 0, 0), (0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1)));

 

SinTableSize = 512;

Size of sine table. Must be power of 2

ZeroVector3s : TVector3s = (X: 0; Y: 0; Z: 0);

 

ZeroVector4s : TVector4s = (X: 0; Y: 0; Z: 0; W: 0);

 

Variables

Overview

SinTable: array[0..SinTableSize + CosTabOffs] of Single;

Description

SinTable: array[0..SinTableSize + CosTabOffs] of Single;

Sinus table

Last modified: 4 Jul, 2008
Copyright (C) 2006-2008, casteng.com