meet
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
The second line.
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
The circle.
Throws
When this is the all-zero line — the blade collapses.
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
The dipole whose carrier is crossed.
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
The segment.
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
The line.
Throws
When line is all-zero — the blade collapses.
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
The second circle.
Throws
When the circles coincide in either orientation.
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
The line.
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
The second segment.