Nirtcpp 2.1.0
Nirtcpp is a high-performance c++ graphics engine.
|
2D line between two points with intersection methods. More...
#include <nirtcpp/core/engine/line2d.hpp>
Public Member Functions | |
line2d () | |
Default constructor for line going from (0,0) to (1,1). | |
line2d (T xa, T ya, T xb, T yb) | |
Constructor for line between the two points. | |
line2d (const vector2d< T > &start, const vector2d< T > &end) | |
Constructor for line between the two points given as vectors. | |
line2d< T > | operator+ (const vector2d< T > &point) const |
line2d< T > & | operator+= (const vector2d< T > &point) |
line2d< T > | operator- (const vector2d< T > &point) const |
line2d< T > & | operator-= (const vector2d< T > &point) |
bool | operator== (const line2d< T > &other) const |
bool | operator!= (const line2d< T > &other) const |
void | setLine (const T &xa, const T &ya, const T &xb, const T &yb) |
Set this line to new line going through the two points. | |
void | setLine (const vector2d< T > &nstart, const vector2d< T > &nend) |
Set this line to new line going through the two points. | |
void | setLine (const line2d< T > &line) |
Set this line to new line given as parameter. | |
T | getLength () const |
Get length of line. | |
T | getLengthSQ () const |
Get squared length of the line. | |
vector2d< T > | getMiddle () const |
Get middle of the line. | |
vector2d< T > | getVector () const |
Get the vector of the line. | |
bool | intersectAsSegments (const line2d< T > &other) const |
bool | incidentSegments (const line2d< T > &other) const |
bool | nearlyParallel (const line2d< T > &line, const T factor=relativeErrorFactor< T >()) const |
vector2d< T > | fastLinesIntersection (const line2d< T > &l) const |
bool | lineIntersectSegment (const line2d< T > &segment, vector2d< T > &out) const |
bool | intersectWith (const line2d< T > &l, vector2d< T > &out, bool checkOnlySegments=true, bool ignoreCoincidentLines=false) const |
Tests if this line intersects with another line. | |
vector2d< T > | getUnitVector () const |
Get unit vector of the line. | |
f64 | getAngleWith (const line2d< T > &l) const |
Get angle between this line and given line. | |
T | getPointOrientation (const vector2d< T > &point) const |
Tells us if the given point lies to the left, right, or on the line. | |
bool | isPointOnLine (const vector2d< T > &point) const |
Check if the given point is a member of the line. | |
bool | isPointBetweenStartAndEnd (const vector2d< T > &point) const |
Check if the given point is between start and end of the line. | |
vector2d< T > | getClosestPoint (const vector2d< T > &point, bool checkOnlySegments=true) const |
Get the closest point on this line to a point. | |
vector2df | getClosestPoint (const vector2df &point, bool checkOnlySegments) const |
Public Attributes | |
vector2d< T > | start |
Start point of the line. | |
vector2d< T > | end |
End point of the line. | |
2D line between two points with intersection methods.
returns a intersection point of 2 lines (if lines are not parallel). Behaviour undefined if lines are parallel or coincident. It's on optimized intersectWith with checkOnlySegments=false and ignoreCoincidentLines=true
Get angle between this line and given line.
l | Other line for test. |
|
inline |
Get the closest point on this line to a point.
point | Starting search at this point |
checkOnlySegments | Default (true) is to return a point on the line-segment (between begin and end) of the line. When set to false the function will check for the first the closest point on the the line even when outside the segment. |
|
inline |
Get length of line.
|
inline |
Get squared length of the line.
Get middle of the line.
Tells us if the given point lies to the left, right, or on the line.
Get unit vector of the line.
Get the vector of the line.
Check if 2 segments are incident (intersects in exactly 1 point).
Check if this segment intersects another segment, or if segments are coincindent (colinear).
|
inline |
Tests if this line intersects with another line.
l | Other line to test intersection with. |
checkOnlySegments | Default is to check intersection between the begin and endpoints. When set to false the function will check for the first intersection point when extending the lines. |
out | If there is an intersection, the location of the intersection will be stored in this vector. |
ignoreCoincidentLines | When true coincident lines (lines above each other) are never considered as intersecting. When false the center of the overlapping part is returned. |
Check if the given point is between start and end of the line.
Assumes that the point is already somewhere on the line.
Check if the given point is a member of the line.
|
inline |
Check if this line intersect a segment. The eventual intersection point is returned in "out".
|
inline |
Check if 2 lines/segments are parallel or nearly parallel.