Record TCL3TrivectorHelper

Unit

Declaration

type TCL3TrivectorHelper = record helper for TCL3Trivector

Description

Record helper for TCL3Trivector providing geometric operations specific to grade-3 elements of Cl(3,0).

All operations follow the conventions of Clifford algebra over ℝ³:

Overview

Methods

Public function Conjugate: TCL3Trivector;
Public function Dot(const AVector: TCL3Bivector): TCL3Vector; overload;
Public function Dot(const AVector: TCL3Multivector): TCL3Multivector; overload;
Public function Dot(const AVector: TCL3Trivector): double; overload;
Public function Dot(const AVector: TCL3Vector): TCL3Bivector; overload;
Public function Dual: double;
Public function Inverse: TCL3Trivector;
Public function Norm: double;
Public function Normalized: TCL3Trivector;
Public function Projection(const AVector: TCL3Bivector): TCL3Trivector; overload;
Public function Projection(const AVector: TCL3Multivector): TCL3Trivector; overload;
Public function Projection(const AVector: TCL3Trivector): TCL3Trivector; overload;
Public function Projection(const AVector: TCL3Vector): TCL3Trivector; overload;
Public function Reciprocal: TCL3Trivector;
Public function Reflection(const AVector: TCL3Bivector): TCL3Trivector; overload;
Public function Reflection(const AVector: TCL3Multivector): TCL3Trivector; overload;
Public function Reflection(const AVector: TCL3Trivector): TCL3Trivector; overload;
Public function Reflection(const AVector: TCL3Vector): TCL3Trivector; overload;
Public function Rejection(const AVector: TCL3Bivector): double; overload;
Public function Rejection(const AVector: TCL3Multivector): TCL3Multivector; overload;
Public function Rejection(const AVector: TCL3Trivector): double; overload;
Public function Rejection(const AVector: TCL3Vector): double; overload;
Public function Reverse: TCL3Trivector;
Public function Rotation(const AVector1, AVector2: TCL3Bivector): TCL3Trivector; overload;
Public function Rotation(const AVector1, AVector2: TCL3Multivector): TCL3Trivector; overload;
Public function Rotation(const AVector1, AVector2: TCL3Trivector): TCL3Trivector; overload;
Public function Rotation(const AVector1, AVector2: TCL3Vector): TCL3Trivector; overload;
Public function SameValue(const AValue: TCL3Multivector): boolean;
Public function SameValue(const AValue: TCL3Trivector): boolean;
Public function SquaredNorm: double;
Public function ToMultivector: TCL3Multivector;
Public function ToString: string;
Public function ToString(APrecision, ADigits: longint): string;
Public function Wedge(const AVector: TCL3Bivector): double; overload;
Public function Wedge(const AVector: TCL3Multivector): TCL3Trivector; overload;
Public function Wedge(const AVector: TCL3Trivector): double; overload;
Public function Wedge(const AVector: TCL3Vector): double; overload;

Description

Methods

Public function Conjugate: TCL3Trivector;

Returns the Clifford conjugate of the trivector. The conjugate combines reversion and grade involution. For a trivector (k = 3): T† = -T.

Public function Dot(const AVector: TCL3Bivector): TCL3Vector; overload;

Returns the inner (dot) product of the trivector and a bivector. Lowers the grade: grade(3) · grade(2) → grade(1) = vector.

Parameters
AVector
The grade-2 right operand.
Public function Dot(const AVector: TCL3Multivector): TCL3Multivector; overload;

Returns the inner (dot) product of the trivector and a multivector. The result is a full TCL3Multivector due to grade mixing.

Parameters
AVector
The right operand.
Public function Dot(const AVector: TCL3Trivector): double; overload;

Returns the inner (dot) product of two trivectors. Lowers the grade: grade(3) · grade(3) → grade(0) = scalar. Result: T₁ · T₂ = -m123₁ · m123₂.

Parameters
AVector
The grade-3 right operand.
Public function Dot(const AVector: TCL3Vector): TCL3Bivector; overload;

Returns the inner (dot) product of the trivector and a vector. Lowers the grade: grade(3) · grade(1) → grade(2) = bivector.

Parameters
AVector
The grade-1 right operand.
Public function Dual: double;

Returns the dual of the trivector with respect to the pseudoscalar e₁₂₃. For T = m123·e₁₂₃, the dual is the scalar: T* = T · e₁₂₃⁻¹ = -m123. The dual maps grade-3 elements to grade-0 (scalar) elements.

Public function Inverse: TCL3Trivector;

Returns the inverse of the trivector under the geometric product. For T = m123·e₁₂₃: T⁻¹ = -e₁₂₃ / m123, since e₁₂₃² = -1.

Public function Norm: double;

Returns the norm of the trivector: |T| = |m123|. Defined as the square root of T · T̃.

Public function Normalized: TCL3Trivector;

Returns the unit trivector in the same direction. The coefficient m123 is divided by Norm.

Public function Projection(const AVector: TCL3Bivector): TCL3Trivector; overload;

Returns the projection of the trivector onto a bivector subspace. Defined as: proj(T, B) = (T · B⁻¹) ∧ B.

Parameters
AVector
The bivector defining the subspace to project onto.
Public function Projection(const AVector: TCL3Multivector): TCL3Trivector; overload;

Returns the projection of the trivector onto a multivector subspace. Defined as: proj(T, M) = (T · M⁻¹) ∧ M.

Parameters
AVector
The multivector defining the subspace to project onto.
Public function Projection(const AVector: TCL3Trivector): TCL3Trivector; overload;

Returns the projection of the trivector onto a trivector subspace. Defined as: proj(T₁, T₂) = (T₁ · T₂⁻¹) ∧ T₂.

Parameters
AVector
The trivector defining the subspace to project onto.
Public function Projection(const AVector: TCL3Vector): TCL3Trivector; overload;

Returns the projection of the trivector onto a vector subspace. Defined as: proj(T, v) = (T · v⁻¹) ∧ v.

Parameters
AVector
The vector defining the subspace to project onto.
Public function Reciprocal: TCL3Trivector;

Returns the reciprocal of the trivector: T̃ / (T · T̃). Equivalent to Inverse for non-zero trivectors.

Public function Reflection(const AVector: TCL3Bivector): TCL3Trivector; overload;

Returns the reflection of the trivector through a bivector. Defined as: reflect(T, B) = -B · T · B⁻¹.

Parameters
AVector
The bivector defining the reflection element.
Public function Reflection(const AVector: TCL3Multivector): TCL3Trivector; overload;

Returns the reflection of the trivector through a multivector. Defined as: reflect(T, M) = -M · T · M⁻¹.

Parameters
AVector
The multivector defining the reflection element.
Public function Reflection(const AVector: TCL3Trivector): TCL3Trivector; overload;

Returns the reflection of the trivector through another trivector. Defined as: reflect(T₁, T₂) = -T₂ · T₁ · T₂⁻¹.

Parameters
AVector
The trivector defining the reflection element.
Public function Reflection(const AVector: TCL3Vector): TCL3Trivector; overload;

Returns the reflection of the trivector through a vector. Defined as: reflect(T, v) = -v · T · v⁻¹. Since the trivector is the pseudoscalar up to a scalar factor, the reflection preserves the grade-3 part.

Parameters
AVector
The vector defining the reflection hyperplane normal.
Public function Rejection(const AVector: TCL3Bivector): double; overload;

Returns the rejection of the trivector from a bivector subspace. Defined as: rej(T, B) = T - proj(T, B). In ℝ³ the rejection of a trivector from a bivector is a scalar.

Parameters
AVector
The bivector defining the subspace to reject from.
Public function Rejection(const AVector: TCL3Multivector): TCL3Multivector; overload;

Returns the rejection of the trivector from a multivector subspace. Defined as: rej(T, M) = T - proj(T, M). The result is a full TCL3Multivector due to grade mixing.

Parameters
AVector
The multivector defining the subspace to reject from.
Public function Rejection(const AVector: TCL3Trivector): double; overload;

Returns the rejection of the trivector from another trivector subspace. Defined as: rej(T₁, T₂) = T₁ - proj(T₁, T₂). In ℝ³ the rejection of a trivector from a trivector is a scalar.

Parameters
AVector
The trivector defining the subspace to reject from.
Public function Rejection(const AVector: TCL3Vector): double; overload;

Returns the rejection of the trivector from a vector subspace. Defined as: rej(T, v) = T - proj(T, v). In ℝ³ the rejection of a trivector from a vector is a scalar.

Parameters
AVector
The vector defining the subspace to reject from.
Public function Reverse: TCL3Trivector;

Returns the reverse of the trivector. The reverse of a grade-k blade changes sign by (-1)ˆ(k·(k-1)/2). For a trivector (k = 3): T̃ = -T.

Public function Rotation(const AVector1, AVector2: TCL3Bivector): TCL3Trivector; overload;

Returns the trivector rotated by the rotor defined by two bivectors. The rotation is applied as: T' = R · T · R⁻¹.

Parameters
AVector1
The first bivector defining the rotor.
AVector2
The second bivector defining the rotor.
Public function Rotation(const AVector1, AVector2: TCL3Multivector): TCL3Trivector; overload;

Returns the trivector rotated by the rotor defined by two multivectors. The rotation is applied as: T' = R · T · R⁻¹.

Parameters
AVector1
The first multivector defining the rotor.
AVector2
The second multivector defining the rotor.
Public function Rotation(const AVector1, AVector2: TCL3Trivector): TCL3Trivector; overload;

Returns the trivector rotated by the rotor defined by two trivectors. The rotation is applied as: T' = R · T · R⁻¹.

Parameters
AVector1
The first trivector defining the rotor.
AVector2
The second trivector defining the rotor.
Public function Rotation(const AVector1, AVector2: TCL3Vector): TCL3Trivector; overload;

Returns the trivector rotated by the rotor defined by two vectors. The rotor is constructed as R = AVector2 · AVector1 (normalised to a unit rotor). The rotation is applied as: T' = R · T · R⁻¹.

Parameters
AVector1
The first vector defining the rotation plane.
AVector2
The second vector defining the rotation plane.
Public function SameValue(const AValue: TCL3Multivector): boolean;

Returns True if the trivector is numerically equal to the given multivector within the default floating point tolerance. All non-trivector components of AValue must be negligible.

Parameters
AValue
The multivector to compare against.
Public function SameValue(const AValue: TCL3Trivector): boolean;

Returns True if the two trivectors are numerically equal within the default floating point tolerance.

Parameters
AValue
The trivector to compare against.
Public function SquaredNorm: double;

Returns the squared norm of the trivector: |T|² = m123². Avoids the square root computation of Norm.

Public function ToMultivector: TCL3Multivector;

Converts the trivector to a full TCL3Multivector. All components are zero except m123.

Public function ToString: string;

Converts the trivector to its default string representation. The format is m123·e₁₂₃.

Public function ToString(APrecision, ADigits: longint): string;

Converts the trivector to a formatted string with controlled precision. The format is m123·e₁₂₃.

Parameters
APrecision
Number of significant digits.
ADigits
Minimum number of digits in the output.
Public function Wedge(const AVector: TCL3Bivector): double; overload;

Returns the outer (wedge) product of the trivector and a bivector. Always zero in ℝ³: grade(3) ∧ grade(2) → grade(5) = 0.

Parameters
AVector
The grade-2 right operand.
Public function Wedge(const AVector: TCL3Multivector): TCL3Trivector; overload;

Returns the outer (wedge) product of the trivector and a multivector. Only the scalar part of AVector contributes to a non-zero result, since any higher-grade wedge product vanishes in ℝ³.

Parameters
AVector
The right operand.
Public function Wedge(const AVector: TCL3Trivector): double; overload;

Returns the outer (wedge) product of two trivectors. Always zero in ℝ³: grade(3) ∧ grade(3) → grade(6) = 0.

Parameters
AVector
The grade-3 right operand.
Public function Wedge(const AVector: TCL3Vector): double; overload;

Returns the outer (wedge) product of the trivector and a vector. Always zero in ℝ³: grade(3) ∧ grade(1) → grade(4) = 0.

Parameters
AVector
The grade-1 right operand.

Generated by PasDoc 1.0.4.