Record TCL3BivecQuantityHelper

Unit

Declaration

type TCL3BivecQuantityHelper = record helper for TCL3BivecQuantity

Description

Record helper for TCL3BivecQuantity providing geometric operations specific to grade-2 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: TCL3BivecQuantity;
Public function Dot(const AVector: TCL3BivecQuantity): TQuantity; overload;
Public function Dot(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Dot(const AVector: TCL3TrivecQuantity): TCL3VecQuantity; overload;
Public function Dot(const AVector: TCL3VecQuantity): TCL3VecQuantity; overload;
Public function Dual: TCL3VecQuantity;
Public function ExtractBivector(AComponents: TCL3MultivectorComponents): TCL3BivecQuantity;
Public function Inverse: TCL3BivecQuantity;
Public function Norm: TQuantity;
Public function Normalized: TCL3BivecQuantity;
Public function Projection(const AVector: TCL3BivecQuantity): TCL3BivecQuantity; overload;
Public function Projection(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Projection(const AVector: TCL3TrivecQuantity): TCL3BivecQuantity; overload;
Public function Projection(const AVector: TCL3VecQuantity): TCL3BivecQuantity; overload;
Public function Reciprocal: TCL3BivecQuantity;
Public function Reflection(const AVector: TCL3BivecQuantity): TCL3BivecQuantity; overload;
Public function Reflection(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Reflection(const AVector: TCL3TrivecQuantity): TCL3BivecQuantity; overload;
Public function Reflection(const AVector: TCL3VecQuantity): TCL3BivecQuantity; overload;
Public function Rejection(const AVector: TCL3BivecQuantity): TQuantity; overload;
Public function Rejection(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Rejection(const AVector: TCL3TrivecQuantity): TQuantity; overload;
Public function Rejection(const AVector: TCL3VecQuantity): TCL3BivecQuantity; overload;
Public function Reverse: TCL3BivecQuantity;
Public function Rotation(const AVector1, AVector2: TCL3BivecQuantity): TCL3BivecQuantity; overload;
Public function Rotation(const AVector1, AVector2: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Rotation(const AVector1, AVector2: TCL3TrivecQuantity): TCL3BivecQuantity; overload;
Public function Rotation(const AVector1, AVector2: TCL3VecQuantity): TCL3BivecQuantity; overload;
Public function SameValue(const AVector: TCL3BivecQuantity): boolean;
Public function SameValue(const AVector: TCL3MultivecQuantity): boolean;
Public function SquaredNorm: TQuantity;
Public function ToMultivector: TCL3MultivecQuantity;
Public function Wedge(const AVector: TCL3BivecQuantity): TQuantity; overload;
Public function Wedge(const AVector: TCL3MultivecQuantity): TCL3MultivecQuantity; overload;
Public function Wedge(const AVector: TCL3TrivecQuantity): TQuantity; overload;
Public function Wedge(const AVector: TCL3VecQuantity): TCL3TrivecQuantity; overload;

Description

Methods

Public function Conjugate: TCL3BivecQuantity;

Returns the Clifford conjugate of the bivector quantity. For a bivector (k = 2): B† = -B. The physical dimension is preserved.

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

Returns the inner (dot) product of two bivector quantities. Lowers the grade: grade(2) · grade(2) → grade(0) = scalar quantity. Result: B₁ · B₂ = -(m12₁·m12₂ + m13₁·m13₂ + m23₁·m23₂) [dim₁·dim₂]. 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 the bivector 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): TCL3VecQuantity; overload;

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

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

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

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

Public function ExtractBivector(AComponents: TCL3MultivectorComponents): TCL3BivecQuantity;

Returns a new bivector 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 mcm12, mcm13, mcm23.
Public function Inverse: TCL3BivecQuantity;

Returns the inverse of the bivector quantity under the geometric product. For a pure bivector B: B⁻¹ = -B / |B|², since B² ≤ 0. The resulting dimension is the inverse of the original dimension.

Public function Norm: TQuantity;

Returns the norm of the bivector quantity: |B| = √(m12² + m13² + m23²) [dim]. The resulting dimension equals the dimension of the original quantity.

Public function Normalized: TCL3BivecQuantity;

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

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

Returns the projection of the bivector quantity onto another bivector quantity subspace. Defined as: proj(B₁, B₂) = (B₁ · 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 bivector quantity onto a multivector quantity subspace. Defined as: proj(B, M) = (B · 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): TCL3BivecQuantity; overload;

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

Returns the projection of the bivector quantity onto a vector quantity subspace. Defined as: proj(B, v) = (B · v⁻¹) ∧ v. The result is the component of B lying in the plane containing 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: TCL3BivecQuantity;

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

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

Returns the reflection of the bivector quantity through another bivector quantity. Defined as: reflect(B₁, B₂) = -B₂ · B₁ · 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 bivector quantity through a multivector quantity. Defined as: reflect(B, M) = -M · B · 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): TCL3BivecQuantity; overload;

Returns the reflection of the bivector quantity through a trivector quantity. Defined as: reflect(B, T) = -T · B · T⁻¹. Since the pseudoscalar commutes with all even-grade elements, the reflection through a trivector returns the bivector quantity unchanged. The physical dimension is preserved.

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

Returns the reflection of the bivector quantity through a vector quantity. Defined as: reflect(B, v) = -v · B · v⁻¹. Reflects the oriented plane of B through the hyperplane orthogonal to v. The physical dimension is preserved.

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

Returns the rejection of the bivector quantity from another bivector quantity subspace. Defined as: rej(B₁, B₂) = B₁ - proj(B₁, B₂). In ℝ³ the rejection of a bivector from a bivector is a scalar quantity. The resulting dimension is the product of the two operand dimensions.

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

Returns the rejection of the bivector quantity from a multivector quantity subspace. Defined as: rej(B, M) = B - proj(B, 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 bivector quantity from a trivector quantity subspace. Defined as: rej(B, T) = B - proj(B, T). In ℝ³ the rejection of a bivector from a trivector is 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): TCL3BivecQuantity; overload;

Returns the rejection of the bivector quantity from a vector quantity subspace. Defined as: rej(B, v) = B - proj(B, v). The result is the component of B 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: TCL3BivecQuantity;

Returns the reverse of the bivector quantity. For a bivector (k = 2): B̃ = -B. The physical dimension is preserved.

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

Returns the bivector quantity rotated by the rotor defined by two bivector quantities. The rotation is applied as: B' = R · B · 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 bivector quantity rotated by the rotor defined by two multivector quantities. The rotation is applied as: B' = R · B · 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): TCL3BivecQuantity; overload;

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

Returns the bivector 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: B' = R · B · 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 two bivector quantities are numerically equal within the default floating point tolerance.

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

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

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

Returns the squared norm of the bivector quantity: |B|² = m12² + m13² + m23² [dim²]. The resulting dimension is the square of the original dimension. Avoids the square root computation of Norm.

Public function ToMultivector: TCL3MultivecQuantity;

Converts the bivector quantity to a full TCL3MultivecQuantity. All components are zero except m12, m13, m23. The dimension is preserved.

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

Returns the outer (wedge) product of two bivector quantities. Always zero in ℝ³: grade(2) ∧ grade(2) → grade(4) = 0. The result is a scalar quantity equal to zero.

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

Returns the outer (wedge) product of the bivector quantity and a multivector quantity. Only the scalar and vector parts of AVector 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 the bivector quantity and a trivector quantity. Always zero in ℝ³: grade(2) ∧ grade(3) → grade(5) = 0. The result is a scalar quantity equal to zero.

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

Returns the outer (wedge) product of the bivector quantity and a vector quantity. Raises the grade: grade(2) ∧ grade(1) → grade(3) = trivector quantity. The resulting dimension is the product of the two operand dimensions.

Parameters
AVector
The grade-1 right operand.

Generated by PasDoc 1.0.4.