CAST II Game Engine |
||||||||
![]() |
MAIN | FEATURES | SCREENSHOTS | FORUMS | MANUAL | DOWNLOADS | CONTACTS | |
(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
function AddVector3s(const V1, V2: TVector3s): TVector3s; overload; |
procedure AddVector3s(out Result: TVector3s; const V1, V2: TVector3s); overload; |
procedure AddVector4s(out Result: TVector4s; const V1, V2: TVector4s); overload; |
function AddVector4s(const V1, V2: TVector4s): 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; |
procedure ExpandBBox(var BoundingBox: TBoundingBox; const X, Y, Z: Single); overload; |
procedure ExpandBBox(var BoundingBox: TBoundingBox; const Point: TVector3s); overload; |
function ExpandMatrix3s(const M: TMatrix3s): TMatrix4s; overload; |
function ExpandVector3s(const V: Tvector3s): TVector4s; overload; |
procedure ExpandVector3s(out Result: TVector4s; const V: Tvector3s); 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; |
procedure GetVector2s(out Result: TVector2s; const X, Y: Single); overload; |
function GetVector2s(const X, Y: Single): TVector2s; overload; |
function GetVector3s(const X, Y, Z: Single): TVector3s; overload; |
procedure GetVector3s(out Result: TVector3s; const X, Y, Z: Single); overload; |
procedure GetVector4s(out Result: TVector4s; const X, Y, Z, W: Single); overload; |
function GetVector4s(const X, Y, Z, W: Single): TVector4s; overload; |
procedure GetVectorRotateQuat(out Result: TQuaternion; const OldDir, NewDir: TVector3s); |
function InvertAffineMatrix4s(const M: TMatrix4s): TMatrix4s; |
function InvertMatrix3s(const M: TMatrix3s): TMatrix3s; |
function InvertMatrix4s(const M: TMatrix4s): TMatrix4s; |
procedure InvertRotTransMatrix(out Result: TMatrix4s; const M: TMatrix4s); overload; |
function InvertRotTransMatrix(const M: TMatrix4s): 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; |
procedure MulMatrix3s(out Result: TMatrix3s; const M1, M2: TMatrix3s); overload; |
function MulMatrix3s(const M1, M2: TMatrix3s): 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); |
function NormalizeQuaternion(const Quat: TQuaternion): TQuaternion; overload; |
procedure NormalizeQuaternion(out Result: TQuaternion; const Quat: 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; |
procedure ReflectVector3s(out Result: TVector3s; const V, N: TVector3s); overload; |
function ReflectVector3s(const V, N: TVector3s): 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; |
function SubVector3s(const V1, V2: TVector3s): TVector3s; overload; |
procedure SubVector3s(out Result: TVector3s; const V1, V2: TVector3s); overload; |
procedure SubVector4s(out Result: TVector4s; const V1, V2: TVector4s); overload; |
function SubVector4s(const V1, V2: TVector4s): TVector4s; overload; |
procedure Transform3Vector3s(out Result: TVector3s; const M: TMatrix3s; const V: TVector3s); overload; |
function Transform3Vector3s(const M: TMatrix3s; const V: TVector3s): TVector3s; overload; |
function Transform3Vector3sTransp(const M: TMatrix3s; const V: TVector3s): TVector3s; overload; |
procedure Transform4Vector33s(out Result: TVector3s; const M: TMatrix4s; const V: TVector3s); overload; |
function Transform4Vector33s(const M: TMatrix4s; const V: TVector3s): TVector3s; overload; |
procedure Transform4Vector3s(out Result: TVector4s; const M: TMatrix4s; const V: TVector3s); overload; |
function Transform4Vector3s(const M: TMatrix4s; const V: TVector3s): TVector4s; overload; |
function Transform4Vector4s(const M: TMatrix4s; const V: TVector4s): TVector4s; overload; |
procedure Transform4Vector4s(out Result: TVector4s; const M: TMatrix4s; const V: TVector4s); overload; |
procedure TranslationMatrix4s(out Result: TMatrix4s; const X, Y, Z: Single); overload; |
function TranslationMatrix4s(const X, Y, Z: Single): TMatrix4s; overload; |
procedure TranspMulMatrix3s(out Result: TMatrix3s; const M1, M2: TMatrix3s); overload; |
function TranspMulMatrix3s(const M1, M2: TMatrix3s): TMatrix3s; overload; |
procedure TranspMulMatrix4s(out Result: TMatrix4s; const M1, M2: TMatrix4s); overload; |
function TranspMulMatrix4s(const M1, M2: TMatrix4s): 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; |
procedure XRotationMatrix4s(out Result: TMatrix4s; const Angle: Single); overload; |
function XRotationMatrix4s(const Angle: Single): TMatrix4s; overload; |
procedure YRotationMatrix3s(out Result: TMatrix3s; const Angle: Single); overload; |
function YRotationMatrix3s(const Angle: Single): TMatrix3s; 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; |
function AddVector3s(const V1, V2: TVector3s): TVector3s; overload; |
procedure AddVector3s(out Result: TVector3s; const V1, V2: TVector3s); overload; |
procedure AddVector4s(out Result: TVector4s; const V1, V2: TVector4s); overload; |
function AddVector4s(const V1, V2: TVector4s): TVector4s; overload; |
function ArcTan2(const Y, X: Extended): Extended; |
Arctangent
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
procedure ExpandBBox(var BoundingBox: TBoundingBox; const X, Y, Z: Single); overload; |
Expands the bounding box to fit the given coordinates
procedure ExpandBBox(var BoundingBox: TBoundingBox; const Point: TVector3s); overload; |
Expands the bounding box to fit the given point
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
function ExpandVector3s(const V: Tvector3s): TVector4s; overload; |
Expands a 3-dimensional vector to 4-dimensional by filling w-component 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
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
procedure GetVector2s(out Result: TVector2s; const X, Y: Single); overload; |
Returns a 2-dimensional vector with the specified components
function GetVector2s(const X, Y: Single): TVector2s; 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
procedure GetVector4s(out Result: TVector4s; const X, Y, Z, W: Single); overload; |
Returns a 4-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 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(const M: TMatrix4s): TMatrix4s; |
Returns inversion of the specified matrix
procedure InvertRotTransMatrix(out Result: TMatrix4s; const M: TMatrix4s); overload; |
Returns inversion of a matrix which contains only rotations and translations. Faster then InvertAffineMatrix4s
function InvertRotTransMatrix(const M: TMatrix4s): 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
procedure MulMatrix3s(out Result: TMatrix3s; const M1, M2: TMatrix3s); overload; |
Matrix multiplication
function MulMatrix3s(const M1, M2: TMatrix3s): 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
function NormalizeQuaternion(const Quat: TQuaternion): TQuaternion; overload; |
Retuns the normalized version of Quat
procedure NormalizeQuaternion(out Result: TQuaternion; const Quat: 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
procedure ReflectVector3s(out Result: TVector3s; const V, N: TVector3s); overload; |
Returns V reflected from surface with the normal N
function ReflectVector3s(const V, N: TVector3s): 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
function SubVector3s(const V1, V2: TVector3s): TVector3s; overload; |
procedure SubVector3s(out Result: TVector3s; const V1, V2: TVector3s); overload; |
procedure SubVector4s(out Result: TVector4s; const V1, V2: TVector4s); overload; |
function SubVector4s(const V1, V2: TVector4s): TVector4s; overload; |
procedure Transform3Vector3s(out Result: TVector3s; const M: TMatrix3s; const V: TVector3s); overload; |
Returns 3-dimensional vector V transformed by matrix M
function Transform3Vector3s(const M: TMatrix3s; const V: TVector3s): 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
procedure Transform4Vector33s(out Result: TVector3s; const M: TMatrix4s; const V: TVector3s); overload; |
Returns 3-dimensional vector V transformed by matrix M
function Transform4Vector33s(const M: TMatrix4s; const V: TVector3s): TVector3s; overload; |
Returns 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
function Transform4Vector3s(const M: TMatrix4s; const V: TVector3s): TVector4s; overload; |
Returns expanded 3-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
procedure Transform4Vector4s(out Result: TVector4s; const M: TMatrix4s; const V: TVector4s); overload; |
Returns 4-dimensional vector V transformed by matrix M
procedure TranslationMatrix4s(out Result: TMatrix4s; const X, Y, Z: Single); overload; |
Returns translation matrix
function TranslationMatrix4s(const X, Y, Z: Single): TMatrix4s; overload; |
Returns translation matrix
procedure TranspMulMatrix3s(out Result: TMatrix3s; const M1, M2: TMatrix3s); overload; |
Matrix multiplication and transpose
function TranspMulMatrix3s(const M1, M2: TMatrix3s): TMatrix3s; overload; |
Matrix multiplication and transpose
procedure TranspMulMatrix4s(out Result: TMatrix4s; const M1, M2: TMatrix4s); overload; |
Matrix multiplication and transpose
function TranspMulMatrix4s(const M1, M2: TMatrix4s): 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
procedure XRotationMatrix4s(out Result: TMatrix4s; const Angle: Single); overload; |
Returns rotation over X-axis matrix
function XRotationMatrix4s(const Angle: Single): TMatrix4s; overload; |
Returns rotation over X-axis matrix
procedure YRotationMatrix3s(out Result: TMatrix3s; const Angle: Single); overload; |
Returns rotation over Y-axis matrix
function YRotationMatrix3s(const Angle: Single): TMatrix3s; 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
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); 4: (Rows: array[0..2] of TVector3s); 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; |
PPlane = ^TPlane; |
TBoundingBox = record P1, P2: TVector3s; end; |
Axis-aligned (in model space) bounding box given by
3x3 single-precision floating point matrix
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
CosTabOffs = SinTableSize div 4; |
EmptyBoundingBox : TBoundingBox = (P1: (X: 0; Y: 0; Z: 0); P2: (X: 0; Y: 0; Z: 0)); |
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); |
CosTabOffs = SinTableSize div 4; |
Offset in sine table to compute cosines
EmptyBoundingBox : TBoundingBox = (P1: (X: 0; Y: 0; Z: 0); P2: (X: 0; Y: 0; Z: 0)); |
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); |
SinTable: array[0..SinTableSize + CosTabOffs] of Single; |
SinTable: array[0..SinTableSize + CosTabOffs] of Single; |
Sinus table
|
Last modified: Jan 6, 2010 |