Portability | GHC |
---|---|

Stability | highly unstable |

Maintainer | Stephen Tetley <stephen.tetley@gmail.com> |

Intersection of line to line and line to plane.

** - WARNING ** - this uses quite a high tolerance for floating point equality.

- interLineLine :: Fractional u => (Point2 u, Point2 u) -> (Point2 u, Point2 u) -> Maybe (Point2 u)
- interLinesegLineseg :: (Fractional u, Ord u, Tolerance u) => LineSegment u -> LineSegment u -> Maybe (Point2 u)
- interLinesegLine :: (Fractional u, Ord u, Tolerance u) => LineSegment u -> (Point2 u, Point2 u) -> Maybe (Point2 u)
- interCurveLine :: (Floating u, Ord u, Tolerance u) => BezierCurve u -> (Point2 u, Point2 u) -> Maybe (Point2 u)
- findIntersect :: (Floating u, Real u, Ord u, Tolerance u) => Point2 u -> Radian -> [LineSegment u] -> Maybe (Point2 u)
- makePlane :: Floating u => Point2 u -> Radian -> (Point2 u, Point2 u)

# Documentation

interLineLine :: Fractional u => (Point2 u, Point2 u) -> (Point2 u, Point2 u) -> Maybe (Point2 u)Source

`interLineLine`

: ` line1 * line2 -> Maybe Point `

Find the intersection of two lines, if there is one.

Lines are infinite they are represented by points on them, they are not line segments.

An answer of `Nothing`

may indicate wither the lines coincide
or the are parallel.

interLinesegLineseg :: (Fractional u, Ord u, Tolerance u) => LineSegment u -> LineSegment u -> Maybe (Point2 u)Source

`interLinesegLineseg`

: ` line_segment1 * line_segment2 -> Maybe Point `

Find the intersection of two line segments, if there is one.

An answer of `Nothing`

indicates that the line segments
coincide, or that there is no intersection.

interLinesegLine :: (Fractional u, Ord u, Tolerance u) => LineSegment u -> (Point2 u, Point2 u) -> Maybe (Point2 u)Source

`interLinesegLine`

: ` line_segment * line -> Maybe Point `

Find the intersection of a line and a line segment, if there is one.

An answer of `Nothing`

indicates that the the line and line
segment coincide, or that there is no intersection.

interCurveLine :: (Floating u, Ord u, Tolerance u) => BezierCurve u -> (Point2 u, Point2 u) -> Maybe (Point2 u)Source

findIntersect :: (Floating u, Real u, Ord u, Tolerance u) => Point2 u -> Radian -> [LineSegment u] -> Maybe (Point2 u)Source

`findIntersect`

:: ` radial_origin * theta * [line_segment] -> Maybe Point `

Find the first intersection of a line through `radial_origin`

at angle `theta`

and the supplied line segments, if there
is one.