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.

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

# Documentation

data LineSegment u Source

Eq u => Eq (LineSegment u) | |

Ord u => Ord (LineSegment u) | |

Show u => Show (LineSegment u) |

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, FromPtSize 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, FromPtSize 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, FromPtSize u) => BezierCurve u -> (Point2 u, Point2 u) -> Maybe (Point2 u)Source

findIntersect :: (Floating u, Real u, Ord u, FromPtSize 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.

makePlane :: Floating u => Point2 u -> Radian -> (Point2 u, Point2 u)Source

`makePlane`

: ` point * ang -> Line `

Make an infinite line / plane passing through the supplied
with elevation `ang`

.

rectangleLineSegments :: Num u => u -> u -> Point2 u -> [LineSegment u]Source

`rectangleLineSegments`

: ` half_width * half_height -> [LineSegment] `

Compute the line segments of a rectangle.

polygonLineSegments :: [Point2 u] -> [LineSegment u]Source

`polygonLineSegments`

: ` [point] -> [LineSegment] `

Build the line segments of a polygon fome a list of its vertices.