project

infix fun FlatPoint.project(line: Line): FlatPoint

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

line

The line projected onto.


infix fun FlatPoint.project(circle: Circle): Dipole

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

circle

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.


infix fun FlatPoint.project(segment: Segment): FlatPoint

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

segment

The segment projected onto.


infix fun RoundPoint.project(line: Line): RoundPoint

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

line

The line projected onto.


infix fun RoundPoint.project(circle: Circle): RoundPoint

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

circle

The circle projected onto.


infix fun RoundPoint.project(dipole: Dipole): RoundPoint

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

dipole

The dipole projected onto.


infix fun Dipole.project(line: Line): Dipole

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

line

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.


infix fun Dipole.project(circle: Circle): Dipole

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

circle

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.