## 2D lines

A line is the shortest straight path that connects two points. A line can be defined by a point on the line and a slope; this is called the **slope intercept form**. An actual line has no ends; it extends infinitely in both directions. This is not what we intuitively think of as a line. Instead, we want to define a line using a **Start Point** and an **End Point**. This is called a **Line Segment**:

### Getting ready

Even though we are implementing a line segment, in code we are going to refer to it as a line. We rarely, if ever, use real lines to detect collisions, but we often use line segments. The `Line2D`

structure we are about to create will consist of two points, where the line starts and where it ends.

### How to do it…

Follow these steps to define a two-dimensional line, and the helper functions we will need to work with lines:

Define the

`Line2D`

structure in`Geometry2D.h`

.typedef struct Line2D { Point2D start; Point2D end; inline Line2D() { } inline Line2D(const Point2D& s, const Point2D...