Record TCL3MultivecQuantityHelper

Unit

Declaration

type TCL3MultivecQuantityHelper = record helper for TCL3MultivecQuantity

Description

Record helper for TCL3MultivecQuantity providing the full set of geometric algebra operations on multivector quantities of Cl(3,0).

All operations follow the conventions of Clifford algebra over ℝ³ with dimensional analysis. Incompatible dimensions raise an exception at runtime. Only available when ADIMOFF is not defined.

Overview

Methods

Public function Conjugate: TCL3MultivecQuantity;
Public function Dot(const AVector: TCL3BivecQuantity): TCL3MultivecQuantity; overload;
Public function Dot(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Dot(const AVector: TCL3TrivecQuantity): TCL3MultivecQuantity; overload;
Public function Dot(const AVector: TCL3VecQuantity): TCL3MultivecQuantity; overload;
Public function Dual: TCL3MultivecQuantity;
Public function ExtractBivector: TCL3BivecQuantity;
Public function ExtractBivector(AComponents: TCL3MultivectorComponents): TCL3BivecQuantity;
Public function ExtractMultivector(AComponents: TCL3MultivectorComponents): TCL3MultivecQuantity;
Public function ExtractScalar: TQuantity;
Public function ExtractTrivector: TCL3TrivecQuantity;
Public function ExtractVector: TCL3VecQuantity;
Public function ExtractVector(AComponents: TCL3MultivectorComponents): TCL3VecQuantity;
Public function Inverse: TCL3MultivecQuantity;
Public function IsA: string;
Public function IsBiVector: boolean;
Public function IsNull: boolean;
Public function IsScalar: boolean;
Public function IsTrivector: boolean;
Public function IsVector: boolean;
Public function LeftReciprocal: TCL3MultivecQuantity;
Public function Norm: TQuantity;
Public function Normalized: TCL3MultivecQuantity;
Public function Projection(const AVector: TCL3BivecQuantity): TCL3MultivecQuantity; overload;
Public function Projection(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Projection(const AVector: TCL3TrivecQuantity): TCL3MultivecQuantity; overload;
Public function Projection(const AVector: TCL3VecQuantity): TCL3MultivecQuantity; overload;
Public function Reciprocal: TCL3MultivecQuantity;
Public function Reflection(const AVector: TCL3BivecQuantity): TCL3MultivecQuantity; overload;
Public function Reflection(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Reflection(const AVector: TCL3TrivecQuantity): TCL3MultivecQuantity; overload;
Public function Reflection(const AVector: TCL3VecQuantity): TCL3MultivecQuantity; overload;
Public function Rejection(const AVector: TCL3BivecQuantity): TCL3MultivecQuantity; overload;
Public function Rejection(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Rejection(const AVector: TCL3TrivecQuantity): TQuantity; overload;
Public function Rejection(const AVector: TCL3VecQuantity): TCL3MultivecQuantity; overload;
Public function Reverse: TCL3MultivecQuantity;
Public function Rotation(const AVector1, AVector2: TCL3BivecQuantity): TCL3MultivecQuantity; overload;
Public function Rotation(const AVector1, AVector2: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Rotation(const AVector1, AVector2: TCL3TrivecQuantity): TCL3MultivecQuantity; overload;
Public function Rotation(const AVector1, AVector2: TCL3VecQuantity): TCL3MultivecQuantity; overload;
Public function SameValue(const AVector: TCL3BivecQuantity): boolean;
Public function SameValue(const AVector: TCL3MultivecQuantity): boolean;
Public function SameValue(const AVector: TCL3TrivecQuantity): boolean;
Public function SameValue(const AVector: TCL3VecQuantity): boolean;
Public function SameValue(const AVector: TQuantity): boolean;
Public function SquaredNorm: TQuantity;
Public function Wedge(const AVector: TCL3BivecQuantity): TCL3MultivecQuantity; overload;
Public function Wedge(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Wedge(const AVector: TCL3TrivecQuantity): TCL3TrivecQuantity; overload;
Public function Wedge(const AVector: TCL3VecQuantity): TCL3MultivecQuantity; overload;

Description

Methods

Public function Conjugate: TCL3MultivecQuantity;

Returns the Clifford conjugate of the multivector quantity. Combines reversion and grade involution: M† = m0 - m₁·e₁ - m₂·e₂ - m₃·e₃ - m₁₂·e₁₂ - m₁₃·e₁₃ - m₂₃·e₂₃ + m₁₂₃·e₁₂₃. The physical dimension is preserved.

Public function Dot(const AVector: TCL3BivecQuantity): TCL3MultivecQuantity; overload;

Returns the inner (dot) product of the multivector quantity and a bivector quantity. Lowers the grade of each component by 2. The resulting dimension is the product of the two operand dimensions.

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

Returns the inner (dot) product of two multivector quantities. The result is a full TCL3MultivecQuantity due to grade mixing. The resulting dimension is the product of the two operand dimensions.

Parameters
AVector
The right operand.
Public function Dot(const AVector: TCL3TrivecQuantity): TCL3MultivecQuantity; overload;

Returns the inner (dot) product of the multivector quantity and a trivector quantity. Lowers the grade of each component by 3. The resulting dimension is the product of the two operand dimensions.

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

Returns the inner (dot) product of the multivector quantity and a vector quantity. Lowers the grade of each component by 1. The resulting dimension is the product of the two operand dimensions.

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

Returns the dual of the multivector quantity with respect to the pseudoscalar e₁₂₃. Defined as M* = M · e₁₂₃⁻¹. Maps grade-k components to grade-3-k components. The physical dimension is preserved.

Public function ExtractBivector: TCL3BivecQuantity;

Returns all grade-2 components of the multivector quantity as a TCL3BivecQuantity. All other grade components are discarded.

Public function ExtractBivector(AComponents: TCL3MultivectorComponents): TCL3BivecQuantity;

Returns the grade-2 components of the multivector quantity specified by AComponents as a TCL3BivecQuantity. Components not present in AComponents are set to zero.

Parameters
AComponents
A set of TCL3MultivectorComponent values. Valid values are mcm12, mcm13, mcm23.
Public function ExtractMultivector(AComponents: TCL3MultivectorComponents): TCL3MultivecQuantity;

Returns a new multivector quantity containing only the components specified by AComponents. Components not present in AComponents are set to zero.

Parameters
AComponents
A set of TCL3MultivectorComponent values identifying the components to retain.
Public function ExtractScalar: TQuantity;

Returns the grade-0 (scalar) component of the multivector quantity as a TQuantity. All other grade components are discarded.

Public function ExtractTrivector: TCL3TrivecQuantity;

Returns all grade-3 components of the multivector quantity as a TCL3TrivecQuantity. All other grade components are discarded.

Public function ExtractVector: TCL3VecQuantity;

Returns all grade-1 components of the multivector quantity as a TCL3VecQuantity. All other grade components are discarded.

Public function ExtractVector(AComponents: TCL3MultivectorComponents): TCL3VecQuantity;

Returns the grade-1 components of the multivector quantity specified by AComponents as a TCL3VecQuantity. Components not present in AComponents are set to zero.

Parameters
AComponents
A set of TCL3MultivectorComponent values. Valid values are mcm1, mcm2, mcm3.
Public function Inverse: TCL3MultivecQuantity;

Returns the inverse of the multivector quantity under the geometric product. Defined as M⁻¹ such that M · M⁻¹ = 1. The resulting dimension is the inverse of the original dimension. Not all multivectors are invertible; behaviour is undefined if M has no inverse.

Public function IsA: string;

Returns a string identifying the dominant grade of the multivector quantity. Useful for diagnostics and debugging. Possible return values include 'scalar', 'vector', 'bivector', 'trivector', and 'multivector' for mixed-grade elements.

Public function IsBiVector: boolean;

Returns True if the multivector quantity is a pure bivector (grade-2), i.e. only m12, m13, m23 are non-negligible.

Public function IsNull: boolean;

Returns True if all components of the multivector quantity are zero within the default floating point tolerance.

Public function IsScalar: boolean;

Returns True if the multivector quantity is a pure scalar, i.e. all components except m0 are negligible.

Public function IsTrivector: boolean;

Returns True if the multivector quantity is a pure trivector (grade-3), i.e. only m123 is non-negligible.

Public function IsVector: boolean;

Returns True if the multivector quantity is a pure vector (grade-1), i.e. only m1, m2, m3 are non-negligible.

Public function LeftReciprocal: TCL3MultivecQuantity;

Returns the left reciprocal of the multivector quantity: M̃ / (M̃ · M). Satisfies LeftReciprocal(M) · M = 1. For non-degenerate multivectors, left and right reciprocals coincide. The resulting dimension is the inverse of the original dimension.

Public function Norm: TQuantity;

Returns the norm of the multivector quantity: |M| = √(M · M̃). The resulting dimension equals the dimension of the original quantity.

Public function Normalized: TCL3MultivecQuantity;

Returns the unit multivector in the same direction. Each component is divided by Norm. The physical dimension is preserved.

Public function Projection(const AVector: TCL3BivecQuantity): TCL3MultivecQuantity; overload;

Returns the projection of the multivector quantity onto a bivector quantity subspace. Defined as: proj(M, B) = (M · B⁻¹) ∧ B. The resulting dimension is the dimension of the original quantity.

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

Returns the projection of the multivector quantity onto a multivector quantity subspace. Defined as: proj(M₁, M₂) = (M₁ · M₂⁻¹) ∧ M₂. The resulting dimension is the dimension of the original quantity.

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

Returns the projection of the multivector quantity onto a trivector quantity subspace. Defined as: proj(M, T) = (M · T⁻¹) ∧ T. Since the trivector spans all of ℝ³, the projection returns the multivector quantity unchanged. The resulting dimension is the dimension of the original quantity.

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

Returns the projection of the multivector quantity onto a vector quantity subspace. Defined as: proj(M, v) = (M · v⁻¹) ∧ v. The resulting dimension is the dimension of the original quantity.

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

Returns the right reciprocal of the multivector quantity: M̃ / (M · M̃). Satisfies M · Reciprocal(M) = 1. The resulting dimension is the inverse of the original dimension.

Public function Reflection(const AVector: TCL3BivecQuantity): TCL3MultivecQuantity; overload;

Returns the reflection of the multivector quantity through a bivector quantity. Defined as: reflect(M, B) = -B · M · B⁻¹. The physical dimension is preserved.

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

Returns the reflection of the multivector quantity through a multivector quantity. Defined as: reflect(M₁, M₂) = -M₂ · M₁ · M₂⁻¹. The physical dimension is preserved.

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

Returns the reflection of the multivector quantity through a trivector quantity. Defined as: reflect(M, T) = -T · M · T⁻¹. The physical dimension is preserved.

Parameters
AVector
The trivector quantity defining the reflection element.
Public function Reflection(const AVector: TCL3VecQuantity): TCL3MultivecQuantity; overload;

Returns the reflection of the multivector quantity through a vector quantity. Defined as: reflect(M, v) = -v · M · v⁻¹. The physical dimension is preserved.

Parameters
AVector
The vector quantity defining the reflection hyperplane normal.
Public function Rejection(const AVector: TCL3BivecQuantity): TCL3MultivecQuantity; overload;

Returns the rejection of the multivector quantity from a bivector quantity subspace. Defined as: rej(M, B) = M - proj(M, B). The result is the component of M orthogonal to B. The resulting dimension is the dimension of the original quantity.

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

Returns the rejection of the multivector quantity from a multivector quantity subspace. Defined as: rej(M₁, M₂) = M₁ - proj(M₁, M₂). The resulting dimension is the dimension of the original quantity.

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

Returns the rejection of the multivector quantity from a trivector quantity subspace. Defined as: rej(M, T) = M - proj(M, T). In ℝ³ the rejection of a general multivector from a trivector reduces to a scalar quantity. The resulting dimension is the product of the two operand dimensions.

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

Returns the rejection of the multivector quantity from a vector quantity subspace. Defined as: rej(M, v) = M - proj(M, v). The result is the component of M orthogonal to v. The resulting dimension is the dimension of the original quantity.

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

Returns the reverse of the multivector quantity. The reverse of a grade-k blade changes sign by (-1)ˆ(k·(k-1)/2). For a general multivector: M̃ = m0 + m₁·e₁ + m₂·e₂ + m₃·e₃ - m₁₂·e₁₂ - m₁₃·e₁₃ - m₂₃·e₂₃ - m₁₂₃·e₁₂₃. The physical dimension is preserved.

Public function Rotation(const AVector1, AVector2: TCL3BivecQuantity): TCL3MultivecQuantity; overload;

Returns the multivector quantity rotated by the rotor defined by two bivector quantities. The rotation is applied as: M' = R · M · R⁻¹. The physical dimension is preserved.

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

Returns the multivector quantity rotated by the rotor defined by two multivector quantities. The rotation is applied as: M' = R · M · R⁻¹. The physical dimension is preserved.

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

Returns the multivector quantity rotated by the rotor defined by two trivector quantities. The rotation is applied as: M' = R · M · R⁻¹. The physical dimension is preserved.

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

Returns the multivector quantity rotated by the rotor defined by two vector quantities. The rotor is constructed as R = AVector2 · AVector1 (normalised to a unit rotor). The rotation is applied as: M' = R · M · R⁻¹. The physical dimension is preserved.

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

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

Parameters
AVector
The bivector quantity to compare against.
Public function SameValue(const AVector: TCL3MultivecQuantity): boolean;

Returns True if the multivector quantity is numerically equal to the given multivector quantity within the default floating point tolerance.

Parameters
AVector
The multivector quantity to compare against.
Public function SameValue(const AVector: TCL3TrivecQuantity): boolean;

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

Parameters
AVector
The trivector quantity to compare against.
Public function SameValue(const AVector: TCL3VecQuantity): boolean;

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

Parameters
AVector
The vector quantity to compare against.
Public function SameValue(const AVector: TQuantity): boolean;

Returns True if the multivector quantity is numerically equal to the given real quantity within the default floating point tolerance. All non-scalar components must be negligible.

Parameters
AVector
The real quantity to compare against.
Public function SquaredNorm: TQuantity;

Returns the squared norm of the multivector quantity: |M|² = M · M̃. The resulting dimension is the square of the original dimension. Avoids the square root computation of Norm.

Public function Wedge(const AVector: TCL3BivecQuantity): TCL3MultivecQuantity; overload;

Returns the outer (wedge) product of the multivector quantity and a bivector quantity. Raises the grade of each component by 2. Components of grade ≥ 2 contribute zero. The resulting dimension is the product of the two operand dimensions.

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

Returns the outer (wedge) product of two multivector quantities. The result is a full TCL3MultivecQuantity due to grade mixing. The resulting dimension is the product of the two operand dimensions.

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

Returns the outer (wedge) product of the multivector quantity and a trivector quantity. Only the scalar part of the multivector contributes to a non-zero result. The result is a pure TCL3TrivecQuantity. The resulting dimension is the product of the two operand dimensions.

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

Returns the outer (wedge) product of the multivector quantity and a vector quantity. Raises the grade of each component by 1. The resulting dimension is the product of the two operand dimensions.

Parameters
AVector
The grade-1 right operand.

Generated by PasDoc 1.0.4.