Dipole
Two points of the plane joined into a single oriented object — the 2D dipole.
The grade-2 blade gx·e23 + gy·e31 + gz·e12 + px·e41 + py·e42 + pz·e43, the wedge of two round points. The constructor unitizes by the round weight ‖(gx, gy)‖ — the distance between the endpoints — and rejects component sets violating the Plücker blade constraint. The endpoints are recovered as start and end, with the line through them, their midpoint and their half-distance as first-class views (carrier, center, radius); the wedge rebuilds the blade: start ∧ end == this. A negative radius2 makes the dipole imaginary — no real endpoints, first-class data, never an error (see isImaginary). Orientation is data: swapping the endpoints negates every component and equals distinguishes them (canonical for unoriented equivalence). A round weight that rounds to zero leaves the dipole at infinity, all six components raw (isAtInfinity). Components are stored raw at full Double precision; equals/hashCode compare rounded at the SCALE quantum.
Constructors
Properties
The midpoint of the endpoints, carrying the dipole's size — a RoundPoint.
The center's distance from the origin √(gz² + pz²) — raw.
The second endpoint — center + radius·attitude.
Whether this dipole lies at infinity — a purely directional object rather than two points in the plane.
Whether this dipole is imaginary — a negative squared radius, no real endpoints.
The first endpoint — center − radius·attitude.
Functions
Dipole contract RoundPoint => RoundPoint
Returns the center of the circle that swaps the dipole's endpoints through the point, carrying that circle's squared radius negated.
Dipole expand Circle => Circle
Returns the circle through the dipole's endpoints that crosses the circle at right angles.
Dipole expand Line => Circle
Returns the circle through the dipole's endpoints that crosses the line at right angles.
Dipole project Circle => Dipole
Returns the dipole where the circle meets the circle through this dipole's endpoints orthogonal to it.
Dipole project Line => Dipole
Returns the dipole where the line cuts the circle through this dipole's endpoints centered on it.
Returns the components rounded at the SCALE quantum — the debug-output convention of every primitive.