C4 Engine
C4 Engine API Documentation

class Bivector4D

Defined in:  TSBivector4D.h
The Bivector4D class encapsulates a 4D bivector.
Definition

class Bivector4D

Member Functions
Bivector4D::Set Sets all six components of a bivector.
Bivector4D::Unitize Unitizes the weight of a 4D bivector.
Constructor

Bivector4D();

Bivector4D(float vx, float vy, float vz, float mx, float my, float mz);

Bivector4D(const Vector3D& v, const Bivector3D& m);

Bivector4D(const Point3D& p, const Point3D& q);

Bivector4D(const Point3D& p, const Vector3D& v);

Bivector4D(const Trivector4D& f, const Trivector4D& g);

Parameters
vx,vy,vz The three components of the direction of the line.
mx,my,mz The three components of the moment of the line.
v A 3D vector corresponding to the direction of the line.
m A 3D bivector corresponding to the moment of the line.
p,q Two 3D points that lie on the line.
f,g Two planes that intersect at the line.
Description
The Bivector4D class is used to store a four-dimensional bivector having six floating-point components. The components of a 4D bivector are stored as a Vector3D member named direction and a Bivector3D member named moment.

The default constructor leaves the components of the bivector undefined.

If points p and q are specified, then the bivector is initialized to the wedge product between homogeneous extensions of p and q with w coordinates set to 1, giving a representation of the 3D line containing both points. The direction component of the bivector is assigned the value q − p, and the moment component is assigned the value p ∧ q.

If the point p and the direction v are specified, then the line contains the point p and runs parallel to the direction v. The bivector is initialized to the wedge product between the homogeneous extension of p with w coordinate set to 1 and the homogeneous extension of v with w coordinate set to 0. The direction component of the bivector is set equal to v, and the moment component is assigned the value p ∧ v.

If planes f and g are specified, then the bivector is initialized to the antiwedge product between the 4D trivectors f and g, giving a representation of the line where the planes intersect.
Overloaded Operators
Bivector4D& operator *=(float s); Multiplies by the scalar s.
Bivector4D& operator /=(float s); Multiplies by the inverse of the scalar s.
Nonmember Operations
bool operator ==(const Bivector4D& a, const Bivector4D& b); Returns a boolean value indicating whether the two bivectors a and b are equal.
bool operator !=(const Bivector4D& a, const Bivector4D& b); Returns a boolean value indicating whether the two bivectors a and b are not equal.
Bivector4D operator ~(const Bivector4D& L); Returns the antireverse of the bivector L.
Bivector4D operator -(const Bivector4D& L); Returns the negation of the bivector L.
Bivector4D operator *(const Bivector4D& L, float s); Returns the product of the bivector L and the scalar s.
Bivector4D operator *(float s, const Bivector4D& L); Returns the product of the bivector L and the scalar s.
Bivector4D operator /(const Bivector4D& L, float s); Returns the product of the bivector L and the inverse of the scalar s.
Bivector4D operator ^(const Point3D& p, const Point3D& q); Returns the wedge product of the points p and q. The w coordinates of p and q are assumed to be 1.
Bivector4D operator ^(const Trivector4D& f, const Trivector4D& g); Returns the antiwedge product of the trivectors f and g. The result represents the line where the two planes f and g intersect. The direction of the line is equal to the cross product between the normal component of f and the normal component of g.
Trivector4D operator ^(const Bivector4D& L, const Point3D& p); Returns the wedge product of the bivector L and the point p. The w coordinate of p is assumed to be 1. The result represents the plane containing the line L and the point p, wound from the direction component of L toward the direction to p perpendicular to the line L.
Trivector4D operator ^(const Point3D& p, const Bivector4D& L); Returns the wedge product of the point p and the bivector L, which is the same as L ∧ p. The w coordinate of p is assumed to be 1.
Trivector4D operator ^(const Bivector4D& L, const Vector3D& v); Returns the wedge product of the bivector L and the direction v. The w coordinate of v is assumed to be 0. The result represents the plane containing the line L and the direction v, wound from the direction component of L toward the direction v.
Trivector4D operator ^(const Vector3D& v, const Bivector4D& L); Returns the wedge product of the direction v and the bivector L, which is the same as L ∧ v. The w coordinate of v is assumed to be 0.
Vector4D operator ^(const Bivector4D& L, const Trivector4D& f); Returns the antiwedge product of the bivector L and the plane f. The result represents the homogeneous point where the line and plane intersect. The x, y, and z must be divided by the w coordinate to produce a 3D point.
Vector4D operator ^(const Trivector4D& f, const Bivector4D& L); Returns the antiwedge product of the plane f and the bivector L, which is the same as L ∨ f.
float operator ^(const Bivector4D& K, const Bivector4D& L); Returns the antiwedge product of the bivectors K and L. This gives the crossing relationship between the two lines, with positive values representing clockwise crossings and negative values representing counterclockwise crossings.
float BulkNorm(const Bivector4D& L); Returns the bulk norm of the bivector L.
float WeightNorm(const Bivector4D& L); Returns the weight norm of the bivector L.
Point3D Project(const Point3D& p, const Bivector4D& L); Returns the projection of the point p onto the line L under the assumption that the line is unitized.
Bivector4D Project(const Bivector4D& L, const Trivector4D& f); Returns the projection of the line L onto the plane f under the assumption that the plane is unitized.
Bivector4D Antiproject(const Bivector4D& L, const Point3D& p); Returns the antiprojection of the line L onto the point p (where p is always unitized because it has an implicit w coordinate of 1).
Trivector4D Antiproject(const Trivector4D& f, const Bivector4D& L); Returns the antiprojection of the plane f onto the line L under the assumption that the line is unitized.
See Also

Vector4D

Trivector4D

Motor4D