2D line segment More...
#include <line_segment.h>
Public Member Functions | |
LineSegment2x () | |
LineSegment2x (const LineSegment2x< Type > ©)=default | |
LineSegment2x (const Vec2< Type > &point_p, const Vec2< Type > &point_q) | |
LineSegment2x< Type > & | clip (const Rectx< Type > &rect, bool &clipped) |
Clip this line to a rectangle. | |
bool | collinear (const LineSegment2x< Type > &second) const |
Return true if two line segments are collinear. (All points are on the same line.) | |
Vec2< Type > | get_intersection (const LineSegment2x< Type > &second, bool &intersect) const |
Return the intersection point of two lines. | |
Vec2< Type > | get_midpoint () const |
Get the midpoint of this line. | |
bool | intersects (const LineSegment2x< Type > &second, bool collinear_intersect) const |
Return true if two line segments intersect. | |
Vec2< Type > | normal () const |
Return the normal vector of the line from point A to point B. | |
bool | operator!= (const LineSegment2x< Type > &line) const |
!= operator. | |
LineSegment2x< Type > & | operator= (const LineSegment2x< Type > ©)=default |
= operator. | |
bool | operator== (const LineSegment2x< Type > &line) const |
== operator. | |
Type | point_distance (const Vec2< Type > &point) |
Return the distance from a point to a line. | |
Type | point_right_of_line (const Vec2< Type > &point) const |
Return [<0, 0, >0] if the Point P is right, on or left of the line trough A,B. | |
Public Attributes | |
Vec2< Type > | p |
Start point on the line. | |
Vec2< Type > | q |
2D line segment
A line segment has a start point and an end point
These line templates are defined for: int (LineSegment2i), float (LineSegment2f), double (LineSegment2d)
|
inline |
Referenced by LineSegment2x(), clip(), collinear(), get_intersection(), intersects(), operator!=(), operator=(), and operator==().
|
default |
References LineSegment2x().
|
inline |
LineSegment2x< Type > & clan::LineSegment2x< Type >::clip | ( | const Rectx< Type > & | rect, |
bool & | clipped ) |
Clip this line to a rectangle.
If clipping was not successful, this object is undefined
rect | = Rectangle to clip to |
clipped | = On Return: true if the line could be clipped, false if line exists outside the rectangle |
References LineSegment2x().
bool clan::LineSegment2x< Type >::collinear | ( | const LineSegment2x< Type > & | second | ) | const |
Return true if two line segments are collinear. (All points are on the same line.)
second | = The second line to check with |
References LineSegment2x().
Vec2< Type > clan::LineSegment2x< Type >::get_intersection | ( | const LineSegment2x< Type > & | second, |
bool & | intersect ) const |
Return the intersection point of two lines.
second | = Second line. |
intersect | = On Return: The intercept. If the lines are parallel, this contains this line's first point |
References LineSegment2x().
|
inline |
bool clan::LineSegment2x< Type >::intersects | ( | const LineSegment2x< Type > & | second, |
bool | collinear_intersect ) const |
Return true if two line segments intersect.
second | = Second line. |
collinear_intersect | = true if a collision is reported when all points are on the same line. |
References LineSegment2x().
Vec2< Type > clan::LineSegment2x< Type >::normal | ( | ) | const |
Return the normal vector of the line from point A to point B.
When using Vec2i, the vector is an 8 bit fraction (multiplied by 256)
|
inline |
!= operator.
References LineSegment2x(), clan::line, p, and q.
|
default |
= operator.
References LineSegment2x().
|
inline |
== operator.
References LineSegment2x(), clan::line, p, and q.
Type clan::LineSegment2x< Type >::point_distance | ( | const Vec2< Type > & | point | ) |
|
inline |
Return [<0, 0, >0] if the Point P is right, on or left of the line trough A,B.
point | = The point |
References p, clan::point, and q.
Vec2<Type> clan::LineSegment2x< Type >::p |
Start point on the line.
Referenced by LineSegment2x(), LineSegment2x(), get_midpoint(), operator!=(), operator==(), and point_right_of_line().
Vec2<Type> clan::LineSegment2x< Type >::q |
Referenced by LineSegment2x(), LineSegment2x(), get_midpoint(), operator!=(), operator==(), and point_right_of_line().