seg_seg v0.0.1 SegSeg
Summary
Functions
Calculates the type of relationship between two line segments AB and CD and the location of intersection (if applicable)
Functions
Calculates the type of relationship between two line segments AB and CD and the location of intersection (if applicable).

The function SegSeg.intersection calculates the
intersection between two line segments and returns a tuple with three elements:
- Boolean
trueif the two segments intersect at all,falseif they are disjoint - An atom representing the classification of the intersection:
:interior- the segments intersect at a point that is interior to both:vertex- the segments intersect at an endpoint of one or both segments:edge- the segments are parallel, collinear, and overlap for some non-zerolength:disjoint- no intersection exists between the two segments
- A tuple
{x, y}representing the point of intersection if the intersection is classified as:interioror:vertex, otherwisenil.
Examples
iex> SegSeg.intersection({2, -3}, {4, -1}, {2, -1}, {4, -3})
{true, :interior, {3.0, -2.0}}
iex> SegSeg.intersection({-1, 3}, {2, 4}, {-1, 4}, {-1, 5})
{false, :disjoint, nil}
iex> SegSeg.intersection({-1, 0}, {0, 2}, {0, 2}, {1, -1})
{true, :vertex, {0, 2}}
iex> SegSeg.intersection({-1, 0}, {0, 2}, {1, 4}, {-1, 0})
{true, :edge, nil}