Record TCL3VecQuantityHelper

Unit

Declaration

type TCL3VecQuantityHelper = record helper for TCL3VecQuantity

Description

Record helper for TCL3VecQuantity providing geometric operations specific to grade-1 elements of Cl(3,0) with physical dimensions.

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: TCL3VecQuantity;
Public function Cross(const AVector: TCL3VecQuantity): TCL3VecQuantity;
Public function Dot(const AVector: TCL3BivecQuantity): TCL3VecQuantity; overload;
Public function Dot(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Dot(const AVector: TCL3TrivecQuantity): TCL3BivecQuantity; overload;
Public function Dot(const AVector: TCL3VecQuantity): TQuantity; overload;
Public function Dual: TCL3BivecQuantity;
Public function ExtractVector(AComponents: TCL3MultivectorComponents): TCL3VecQuantity;
Public function Inverse: TCL3VecQuantity;
Public function Norm: TQuantity;
Public function Normalized: TCL3VecQuantity;
Public function Projection(const AVector: TCL3BivecQuantity): TCL3VecQuantity; overload;
Public function Projection(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Projection(const AVector: TCL3TrivecQuantity): TCL3VecQuantity; overload;
Public function Projection(const AVector: TCL3VecQuantity): TCL3VecQuantity; overload;
Public function Reciprocal: TCL3VecQuantity;
Public function Reflection(const AVector: TCL3BivecQuantity): TCL3VecQuantity; overload;
Public function Reflection(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Reflection(const AVector: TCL3TrivecQuantity): TCL3VecQuantity; overload;
Public function Reflection(const AVector: TCL3VecQuantity): TCL3VecQuantity; overload;
Public function Rejection(const AVector: TCL3BivecQuantity): TCL3VecQuantity; overload;
Public function Rejection(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Rejection(const AVector: TCL3TrivecQuantity): TQuantity; overload;
Public function Rejection(const AVector: TCL3VecQuantity): TCL3VecQuantity; overload;
Public function Reverse: TCL3VecQuantity;
Public function Rotation(const AVector1, AVector2: TCL3BivecQuantity): TCL3VecQuantity; overload;
Public function Rotation(const AVector1, AVector2: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Rotation(const AVector1, AVector2: TCL3TrivecQuantity): TCL3VecQuantity; overload;
Public function Rotation(const AVector1, AVector2: TCL3VecQuantity): TCL3VecQuantity; overload;
Public function SameValue(const AVector: TCL3MultivecQuantity): boolean;
Public function SameValue(const AVector: TCL3VecQuantity): boolean;
Public function SquaredNorm: TQuantity;
Public function ToMultivector: TCL3MultivecQuantity;
Public function Wedge(const AVector: TCL3BivecQuantity): TCL3TrivecQuantity; overload;
Public function Wedge(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Wedge(const AVector: TCL3TrivecQuantity): TQuantity; overload;
Public function Wedge(const AVector: TCL3VecQuantity): TCL3BivecQuantity; overload;

Description

Methods

Public function Conjugate: TCL3VecQuantity;

Returns the Clifford conjugate of the vector quantity. For a vector (k = 1): v† = -v. The physical dimension is preserved.

Public function Cross(const AVector: TCL3VecQuantity): TCL3VecQuantity;

Returns the cross product of two vector quantities. The cross product is the dual of the wedge product: u × v = (u ∧ v)* = -(u ∧ v) · e₁₂₃⁻¹. The result is a vector quantity perpendicular to both operands with magnitude |u||v|sin(θ), specific to ℝ³. The resulting dimension is the product of the two operand dimensions.

Parameters
AVector
The right operand.
Public function Dot(const AVector: TCL3BivecQuantity): TCL3VecQuantity; overload;

Returns the inner (dot) product of a vector quantity and a bivector quantity. Lowers the grade: grade(1) · grade(2) → grade(1) = vector quantity. 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 a vector quantity and a multivector quantity. 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): TCL3BivecQuantity; overload;

Returns the inner (dot) product of a vector quantity and a trivector quantity. Lowers the grade: grade(1) · grade(3) → grade(2) = bivector quantity. The resulting dimension is the product of the two operand dimensions.

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

Returns the inner (dot) product of two vector quantities. Lowers the grade: grade(1) · grade(1) → grade(0) = scalar quantity. Result: u · v = m1₁·m1₂ + m2₁·m2₂ + m3₁·m3₂ [dim₁·dim₂]. The resulting dimension is the product of the two operand dimensions.

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

Returns the dual of the vector quantity with respect to the pseudoscalar e₁₂₃. The dual maps grade-1 elements to grade-2 (bivector) elements: v* = v · e₁₂₃⁻¹. For example: e₁* = -e₂∧e₃, e₂* = e₁∧e₃, e₃* = -e₁∧e₂. The physical dimension is preserved.

Public function ExtractVector(AComponents: TCL3MultivectorComponents): TCL3VecQuantity;

Returns a new vector 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. Valid values are mcm1, mcm2, mcm3.
Public function Inverse: TCL3VecQuantity;

Returns the inverse of the vector quantity under the geometric product. For a non-zero vector v: v⁻¹ = v / |v|², since v² > 0. The resulting dimension is the inverse of the original dimension.

Public function Norm: TQuantity;

Returns the Euclidean norm of the vector quantity: |v| = √(m1² + m2² + m3²) [dim]. The resulting dimension equals the dimension of the original quantity.

Public function Normalized: TCL3VecQuantity;

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

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

Returns the projection of the vector quantity onto a bivector quantity subspace. Defined as: proj(v, B) = (v · B⁻¹) ∧ B. The result is the component of v lying in the plane of B. The resulting dimension is the dimension of the original quantity.

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

Returns the projection of the vector quantity onto a multivector quantity subspace. Defined as: proj(v, M) = (v · M⁻¹) ∧ M. The result is a full TCL3MultivecQuantity due to grade mixing. 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): TCL3VecQuantity; overload;

Returns the projection of the vector quantity onto a trivector quantity subspace. Defined as: proj(v, T) = (v · T⁻¹) ∧ T. Since the trivector spans all of ℝ³, the projection returns the vector 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): TCL3VecQuantity; overload;

Returns the projection of the vector quantity onto another vector quantity. Defined as: proj(u, v) = (u · v⁻¹) ∧ v = (u · v / |v|²) · v. The result is the component of u parallel to v. The resulting dimension is the dimension of the original quantity.

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

Returns the reciprocal of the vector quantity: ṽ / (v · ṽ). Equivalent to Inverse for non-zero vector quantities. The resulting dimension is the inverse of the original dimension.

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

Returns the reflection of the vector quantity through a bivector quantity. Defined as: reflect(v, B) = B · v · B⁻¹. Reflects v through the plane represented by B, reversing the normal component and preserving the in-plane component. The physical dimension is preserved.

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

Returns the reflection of the vector quantity through a multivector quantity. Defined as: reflect(v, M) = M · v · M⁻¹. The result is a full TCL3MultivecQuantity due to grade mixing. The physical dimension is preserved.

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

Returns the reflection of the vector quantity through a trivector quantity. Defined as: reflect(v, T) = T · v · T⁻¹. Since the pseudoscalar anticommutes with vectors in Cl(3,0), the result is -v. The physical dimension is preserved.

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

Returns the reflection of the vector quantity through another vector quantity. Defined as: reflect(u, v) = v · u · v⁻¹. Reflects u through the line defined by v, reversing the perpendicular component and preserving the parallel one. The physical dimension is preserved.

Parameters
AVector
The vector quantity defining the reflection axis.
Public function Rejection(const AVector: TCL3BivecQuantity): TCL3VecQuantity; overload;

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

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

Returns the rejection of the vector quantity from a multivector quantity subspace. Defined as: rej(v, M) = v - proj(v, M). The result is a full TCL3MultivecQuantity due to grade mixing. 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 vector quantity from a trivector quantity subspace. Defined as: rej(v, T) = v - proj(v, T). In ℝ³ the rejection of a vector from a trivector is always zero, returned as a scalar quantity equal to zero. 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): TCL3VecQuantity; overload;

Returns the rejection of the vector quantity from another vector quantity. Defined as: rej(u, v) = u - proj(u, v). The result is the component of u perpendicular to v. The resulting dimension is the dimension of the original quantity.

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

Returns the reverse of the vector quantity. For a vector (k = 1): ṽ = v (unchanged). The physical dimension is preserved.

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

Returns the vector quantity rotated by the rotor defined by two bivector quantities. The rotation is applied as: v' = R · v · 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 vector quantity rotated by the rotor defined by two multivector quantities. The rotation is applied as: v' = R · v · R⁻¹. The result is a full TCL3MultivecQuantity due to potential grade mixing. 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): TCL3VecQuantity; overload;

Returns the vector quantity rotated by the rotor defined by two trivector quantities. The rotation is applied as: v' = R · v · 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): TCL3VecQuantity; overload;

Returns the vector 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: v' = R · v · R⁻¹. The rotation is in the plane spanned by AVector1 and AVector2, by twice the angle between them. 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: TCL3MultivecQuantity): boolean;

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

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

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

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

Returns the squared Euclidean norm of the vector quantity: |v|² = m1² + m2² + m3² [dim²]. The resulting dimension is the square of the original dimension. Avoids the square root computation of Norm.

Public function ToMultivector: TCL3MultivecQuantity;

Converts the vector quantity to a full TCL3MultivecQuantity. All components are zero except m1, m2, m3. The dimension is preserved.

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

Returns the outer (wedge) product of a vector quantity and a bivector quantity. Raises the grade: grade(1) ∧ grade(2) → grade(3) = trivector quantity. The result represents the oriented volume spanned by the vector and the bivector. 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 a vector quantity and a multivector quantity. Only components of AVector up to grade 2 contribute to a non-zero result. 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): TQuantity; overload;

Returns the outer (wedge) product of a vector quantity and a trivector quantity. Always zero in ℝ³: grade(1) ∧ grade(3) → grade(4) = 0. The result is a scalar quantity equal to zero.

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

Returns the outer (wedge) product of two vector quantities. Raises the grade: grade(1) ∧ grade(1) → grade(2) = bivector quantity. The result represents the oriented plane spanned by the two vectors. The resulting dimension is the product of the two operand dimensions.

Parameters
AVector
The grade-1 right operand.

Generated by PasDoc 1.0.4.