meet

infix fun Line.meet(other: Line): FlatPoint

Line meet Line => FlatPoint
Returns the point where the two lines cross — at infinity along the shared direction when they are parallel.

The antiwedge ∨. A finite crossing re-unitizes in the FlatPoint constructor, so both operand orders build the identical point. A parallel pair meets at infinity along the lines, weighted by their separation for finite lines — there the raw blade survives, and swapping the operands flips its direction. Coincident lines collapse to the all-zero flat point.

Receiver

The first line.

Return

The raw FlatPoint at the crossing; at infinity when the lines are parallel.

Parameters

other

The second line.


infix fun Line.meet(circle: Circle): Dipole

Line meet Circle => Dipole
Returns the dipole of the two points where the line crosses the circle — imaginary when the line misses it.

The antiwedge ∨. The crossing points are the dipole's endpoints and the line is its carrier, scaled by the circle's Circle.cw. A tangent line yields a zero-radius dipole whose center is the tangent point — the continuous limit of intersection, first-class, never an error — and a line that misses the circle yields an imaginary dipole, first-class data. A line at infinity meets in an at-infinity dipole, kept raw — gate with Dipole.isAtInfinity. Circle meet Line with the operands swapped negates every component: the same crossing points, opposite orientation.

Receiver

The line.

Return

The raw Dipole with the crossing points as endpoints; zero-radius at tangency, imaginary on a miss.

Parameters

circle

The circle.

Throws

When this is the all-zero line — the blade collapses.


infix fun Line.meet(dipole: Dipole): RoundPoint

Line meet Dipole => RoundPoint
Returns the point where the line crosses the dipole's carrier.

The antiwedge ∨. The result is a genuine round point, not a null lift: its RoundPoint.radius2 is r² − d² — r the dipole's radius, d the distance from the dipole's center to the crossing. Against a real dipole it is real exactly when the crossing lies between the dipole's endpoints, zero-radius at an endpoint, and imaginary beyond them; against an imaginary dipole (r² < 0) it is imaginary everywhere. Parallel carriers collapse the weight: a RoundPoint at infinity.

Receiver

The line.

Return

The raw RoundPoint at the crossing; at infinity when the line parallels the carrier.

Parameters

dipole

The dipole whose carrier is crossed.


infix fun Line.meet(segment: Segment): RoundPoint?

Line meet Segment => RoundPoint?
Returns the point where the line crosses the segment, or null when it misses.

The bent form of Line meet Dipole: the same crossing, gated to the segment itself. The crossing's own realness is the bounds gate — its radius² is non-negative exactly when it lies within the segment, the segment's endpoints included — and the gate rounds at the SCALE quantum while the returned point stays raw. Null when the line parallels the carrier, crosses it beyond the segment, or is collinear with it. Calling with Segment.toDipole selects the ungated Line meet Dipole form instead.

Receiver

The line.

Return

The raw RoundPoint at the crossing, or null when there is no crossing within the segment.

Parameters

segment

The segment.


infix fun Circle.meet(line: Line): Dipole

Circle meet Line => Dipole
Returns the dipole of the two points where the circle crosses the line — imaginary when they miss.

Line meet Circle with the operands swapped — but the antiwedge of two grade-3 blades is antisymmetric, so this form negates every component: the same crossing points, opposite orientation. Everything else matches the swapped form: zero-radius at tangency, imaginary on a miss, a line at infinity meets in an at-infinity dipole.

Receiver

The circle.

Return

The raw Dipole with the crossing points as endpoints — the negation of the swapped call's result.

Parameters

line

The line.

Throws

When line is all-zero — the blade collapses.


infix fun Circle.meet(other: Circle): Dipole

Circle meet Circle => Dipole
Returns the dipole of the two points where the circles cross — imaginary when they don't touch.

The antiwedge ∨. The dipole's carrier is the circles' radical line. Crossing circles give a real dipole with the crossing points as endpoints; tangent circles a zero-radius dipole centered at the tangent point; separate or nested circles an imaginary dipole — first-class data encoding the separation. Concentric circles meet at infinity: an at-infinity dipole, kept raw — gate with Dipole.isAtInfinity. Swapping the operands negates every component — the same crossing points, opposite orientation. Coincident circles, in either orientation, collapse the blade and the unitizing Dipole constructor throws.

Receiver

The first circle.

Return

The raw Dipole with the crossing points as endpoints; zero-radius at tangency, imaginary when the circles don't touch.

Parameters

other

The second circle.

Throws

When the circles coincide in either orientation.


infix fun Segment.meet(line: Line): RoundPoint?

Segment meet Line => RoundPoint?
Returns the point where the line crosses the segment, or null when it misses.

Line meet Segment with the operands swapped. The swap is exact: the antigrade parity is even, so both orders return the identical result — crossing point and null alike.

Receiver

The segment.

Return

The raw RoundPoint at the crossing or null.

Parameters

line

The line.


infix fun Segment.meet(other: Segment): RoundPoint?

Segment meet Segment => RoundPoint?
Returns the point where the two segments cross, or null when they don't.

Both segments gate the crossing, their endpoints included, and the gates round at the SCALE quantum while the returned point stays raw. Null when the carriers are parallel, when the crossing lies beyond either segment, or when the segments are collinear — a collinear overlap is not a point.

Receiver

The first segment.

Return

The raw RoundPoint at the crossing, or null when the segments don't cross.

Parameters

other

The second segment.