project
FlatPoint project Line => FlatPoint
Returns the point's perpendicular foot on the line.
The projection line ∨ (p ∧ line^☆), normalized by the line's self-pairing line ∘ line — a point on the line projects to itself, and the weight carries through untouched. A point at infinity projects to its component along the line: the classic vector projection of a free vector onto the line's direction. A line at infinity is not rejected: its self-pairing vanishes and the division floods the components.
Receiver
The point dropped onto the line.
Return
The raw FlatPoint at the perpendicular foot.
Parameters
The line projected onto.
FlatPoint project Circle => Dipole
Returns the dipole where the circle crosses the radial line through the point.
The projection circle ∨ (p ∧ circle^☆), normalized by the circle's self-pairing circle ∘ circle — its raw signed radius2, so an imaginary circle negates every component. The radial line always passes through the circle's center, so against a classic circle the crossing is real: the endpoints are the near and far circle points on the point's bearing. A circle of exactly zero radius has a zero self-pairing: the division floods the blade and the constructor rejects it.
Receiver
The point whose bearing cuts the circle.
Return
The raw Dipole where the circle crosses the radial line.
Parameters
The circle projected onto.
Throws
When the point sits at the circle's center at the SCALE quantum — every bearing is radial and the blade collapses.
When the circle's self-pairing is zero — the flooded blade fails the constructor's check.
FlatPoint project Segment => FlatPoint
Returns the point of the segment nearest to this point: the perpendicular foot when it falls within the segment, else the nearer endpoint.
The bent form of FlatPoint project Line: the foot on Segment.carrier, kept when it lies on the segment itself — the endpoints included — and replaced by the endpoint nearer to this point when it falls beyond either end. The bounds decision rounds at the SCALE quantum while the returned point stays raw, so a foot within the quantum past an endpoint comes back as the raw foot. A point already on the segment projects to itself. A point at infinity — zero weight — is a free vector rather than a position, and its answer is no nearest point; gate with FlatPoint.isAtInfinity. A segment at infinity is not rejected: its carrier's self-pairing vanishes and the division floods the components.
Receiver
The point dropped onto the segment.
Return
The raw FlatPoint on the segment nearest to this point.
Parameters
The segment projected onto.
RoundPoint project Line => RoundPoint
Returns the point's perpendicular foot on the line, sized by the squared distance to it.
The projection line ∨ (a ∧ line^☆), normalized by the line's self-pairing line ∘ line. The result is a genuine round point, not a null lift: its position is the foot of the perpendicular and its raw radius2 is +d² for a finite null-lift operand d away — a point on the line projects to itself. A point at infinity projects to a point at infinity, kept raw. A line at infinity is not rejected: its self-pairing vanishes and the division floods the components.
Receiver
The point dropped onto the line.
Return
The raw RoundPoint at the perpendicular foot, sized by the squared distance.
Parameters
The line projected onto.
RoundPoint project Circle => RoundPoint
Returns the round point that pairs the point into the circle: on the radial line through the point, incident with the circle.
The projection circle ∨ (a ∧ circle^☆), normalized by the circle's self-pairing circle ∘ circle — its raw signed radius2, so an imaginary circle negates every component. The result is a genuine round point, not a null lift: it sits on the radial line through the point, its raw pairing with the circle (cx·ax + cy·ay + cz·az + cw·aw) vanishes, and a point on the circle projects to itself. A zero-radius circle is not rejected: its self-pairing vanishes and the division floods the components.
Receiver
The point dropped onto the circle.
Return
The raw RoundPoint encoding the radial crossing pair.
Parameters
The circle projected onto.
RoundPoint project Dipole => RoundPoint
Returns the point of the dipole's carrier dividing the endpoints in the ratio of their squared distances from the given point.
The projection dipole ∨ (a ∧ dipole^☆), normalized by the dipole's self-pairing dipole ∘ dipole — its raw signed Dipole.radius2, so an imaginary dipole negates every component. The result is a genuine round point, not a null lift: the raw conformal component sizes it by the pairing. A dipole with coincident endpoints is not rejected: its self-pairing vanishes and the division floods the components.
Receiver
The point dropped onto the dipole.
Return
The raw RoundPoint on the carrier between the endpoints.
Parameters
The dipole projected onto.
Dipole project Line => Dipole
Returns the dipole where the line cuts the circle through this dipole's endpoints centered on it.
The projection line ∨ (d ∧ line^☆), normalized by the line's self-pairing line ∘ line. The result lies on the line — its carrier is the line itself, scaled by the carriers' alignment — and preserves the conformal size: its radius2 is the endpoint circle's, not the bare foot separation. A dipole already on the line projects to itself. A line at infinity has a zero self-pairing: the division floods the blade and the constructor rejects it.
Receiver
The dipole dropped onto the line.
Return
The raw Dipole cut from the endpoint circle by the line.
Parameters
The line projected onto.
Throws
When the dipole's carrier is perpendicular to the line at the SCALE quantum — both endpoints share one foot, carried as the payload.
When the line's self-pairing is zero — the flooded blade fails the constructor's check.
Dipole project Circle => Dipole
Returns the dipole where the circle meets the circle through this dipole's endpoints orthogonal to it.
The projection circle ∨ (d ∧ circle^☆), normalized by the circle's self-pairing circle ∘ circle — its raw signed radius2, so an imaginary circle negates every component. A dipole whose endpoints already lie on the circle projects to itself. A circle of exactly zero radius has a zero self-pairing: the division floods the blade and the constructor rejects it.
Receiver
The dipole dropped onto the circle.
Return
The raw Dipole where the circle meets the endpoint circle.
Parameters
The circle projected onto.
Throws
When the whole blade collapses at the SCALE quantum; carries the flat payload.
When the circle's self-pairing is zero — the flooded blade fails the constructor's check.