Chemical Data Processing Library C++ API - Version 1.2.0
|
Specifies a line segment in 2D space. More...
#include <Line2D.hpp>
Public Member Functions | |
Line2D () | |
Constructs a line whose starting and end point is set to (0, 0). More... | |
Line2D (const Math::Vector2D &beg, const Math::Vector2D &end) | |
Constructs a line with the specified starting and end point. More... | |
Line2D (double beg_x, double beg_y, double end_x, double end_y) | |
Constructs a line with the starting point set to (beg_x, beg_y) and the end point set to (end_x, end_y). More... | |
virtual | ~Line2D () |
Virtual destructor. More... | |
void | setBegin (const Math::Vector2D &pt) |
Sets the starting point of the line to pt. More... | |
void | setBegin (double x, double y) |
Sets the starting point of the line to (x, y). More... | |
const Math::Vector2D & | getBegin () const |
Returns the starting point of the line. More... | |
void | setEnd (const Math::Vector2D &pt) |
Sets the end point of the line to pt. More... | |
void | setEnd (double x, double y) |
Sets the end point of the line to (x, y). More... | |
const Math::Vector2D & | getEnd () const |
Returns the end point of the line. More... | |
void | setPoints (double beg_x, double beg_y, double end_x, double end_y) |
Sets the starting point of the line to (beg_x, beg_y) and the end point to (end_x, end_y). More... | |
void | setPoints (const Math::Vector2D &beg, const Math::Vector2D &end) |
Sets the starting point of the line to beg and the end point to end. More... | |
void | swapPoints () |
Swaps the starting and end point of the line. More... | |
void | getDirection (Math::Vector2D &dir) const |
Calculates the normalized direction vector of the line and stores the result in dir. More... | |
Math::Vector2D | getDirection () const |
Calculates the normalized direction vector of the line. More... | |
void | getCCWPerpDirection (Math::Vector2D &dir) const |
Calculates the normalized direction vector rotated by 90 degrees in counter-clockwise direction and stores the result in dir. More... | |
Math::Vector2D | getCCWPerpDirection () const |
Calculates the normalized direction vector rotated by 90 degrees in counter-clockwise direction. More... | |
void | getCWPerpDirection (Math::Vector2D &dir) const |
Calculates the normalized direction vector rotated by 90 degrees in clockwise direction and stores the result in dir. More... | |
Math::Vector2D | getCWPerpDirection () const |
Calculates the normalized direction vector rotated by 90 degrees in clockwise direction. More... | |
void | getCenter (Math::Vector2D &ctr) const |
Calculates the center point of the line and stores the result in ctr. More... | |
Math::Vector2D | getCenter () const |
Calculates the center point of the line. More... | |
double | getLength () const |
Returns the length of the line segment. More... | |
void | translate (const Math::Vector2D &vec) |
Translates the starting and end point of the line by vec. More... | |
void | translateBegin (const Math::Vector2D &vec) |
Translates the starting point of the line by vec. More... | |
void | translateEnd (const Math::Vector2D &vec) |
Translates the end of the line point by vec. More... | |
bool | containsPoint (const Math::Vector2D &pt) const |
Tests if the point pt is contained within the boundary of the line segment. More... | |
bool | getIntersectionPoint (const Line2D &line, Math::Vector2D &pt) const |
Calculates the point of intersection with the specified line and stores the result in pt. More... | |
bool | clipBeginAgainstLineSeg (const Line2D &line) |
Sets the starting point of the line to the point of intersection with the specified line segment. More... | |
bool | clipEndAgainstLineSeg (const Line2D &line) |
Sets the end point of the line to the point of intersection with the specified line segment. More... | |
bool | setBeginToLineSegIntersection (const Line2D &line) |
Sets the starting point of the line to the point of intersection with the specified line segment. More... | |
bool | setEndToLineSegIntersection (const Line2D &line) |
Sets the end point of the line to the point of intersection with the specified line segment. More... | |
bool | clipBeginAgainstRectangle (const Rectangle2D &rect) |
Sets the starting point of the line to the point of intersection between this line segment and the edges of the rectangle rect. More... | |
bool | clipEndAgainstRectangle (const Rectangle2D &rect) |
Sets the end point of the line to the point of intersection between this line segment and the edges of the rectangle rect. More... | |
double | getDistance (const Math::Vector2D &pt) const |
Returns the perpendicular distance of the point pt to this line. More... | |
bool | operator== (const Line2D &line) const |
Equality comparison operator. More... | |
bool | operator!= (const Line2D &line) const |
Inequality comparison operator. More... | |
Specifies a line segment in 2D space.
CDPL::Vis::Line2D::Line2D | ( | ) |
Constructs a line whose starting and end point is set to (0, 0).
CDPL::Vis::Line2D::Line2D | ( | const Math::Vector2D & | beg, |
const Math::Vector2D & | end | ||
) |
Constructs a line with the specified starting and end point.
beg | The starting point. |
end | The end point. |
CDPL::Vis::Line2D::Line2D | ( | double | beg_x, |
double | beg_y, | ||
double | end_x, | ||
double | end_y | ||
) |
Constructs a line with the starting point set to (beg_x, beg_y) and the end point set to (end_x, end_y).
beg_x | The x-coordinate of the starting point. |
beg_y | The y-coordinate of the starting point. |
end_x | The x-coordinate of the end point. |
end_y | The y-coordinate of the end point. |
|
inlinevirtual |
Virtual destructor.
void CDPL::Vis::Line2D::setBegin | ( | const Math::Vector2D & | pt | ) |
Sets the starting point of the line to pt.
pt | The new starting point of the line. |
void CDPL::Vis::Line2D::setBegin | ( | double | x, |
double | y | ||
) |
Sets the starting point of the line to (x, y).
x | The x-coordinate of the new starting point. |
y | The y-coordinate of the new starting point. |
const Math::Vector2D& CDPL::Vis::Line2D::getBegin | ( | ) | const |
Returns the starting point of the line.
void CDPL::Vis::Line2D::setEnd | ( | const Math::Vector2D & | pt | ) |
Sets the end point of the line to pt.
pt | The new end point of the line. |
void CDPL::Vis::Line2D::setEnd | ( | double | x, |
double | y | ||
) |
Sets the end point of the line to (x, y).
x | The x-coordinate of the new end point. |
y | The y-coordinate of the new end point. |
const Math::Vector2D& CDPL::Vis::Line2D::getEnd | ( | ) | const |
Returns the end point of the line.
void CDPL::Vis::Line2D::setPoints | ( | double | beg_x, |
double | beg_y, | ||
double | end_x, | ||
double | end_y | ||
) |
Sets the starting point of the line to (beg_x, beg_y) and the end point to (end_x, end_y).
beg_x | The x-coordinate of the new starting point. |
beg_y | The y-coordinate of the new starting point. |
end_x | The x-coordinate of the new end point. |
end_y | The y-coordinate of the new end point. |
void CDPL::Vis::Line2D::setPoints | ( | const Math::Vector2D & | beg, |
const Math::Vector2D & | end | ||
) |
Sets the starting point of the line to beg and the end point to end.
beg | The new starting point. |
end | The new end point. |
void CDPL::Vis::Line2D::swapPoints | ( | ) |
Swaps the starting and end point of the line.
The old starting point becomes the new end point and the old end point becomes the new starting point.
void CDPL::Vis::Line2D::getDirection | ( | Math::Vector2D & | dir | ) | const |
Calculates the normalized direction vector of the line and stores the result in dir.
dir | Holds the calculated direction vector. |
Math::Vector2D CDPL::Vis::Line2D::getDirection | ( | ) | const |
Calculates the normalized direction vector of the line.
void CDPL::Vis::Line2D::getCCWPerpDirection | ( | Math::Vector2D & | dir | ) | const |
Calculates the normalized direction vector rotated by 90 degrees in counter-clockwise direction and stores the result in dir.
dir | Holds the calculated rotated direction vector. |
Math::Vector2D CDPL::Vis::Line2D::getCCWPerpDirection | ( | ) | const |
Calculates the normalized direction vector rotated by 90 degrees in counter-clockwise direction.
void CDPL::Vis::Line2D::getCWPerpDirection | ( | Math::Vector2D & | dir | ) | const |
Calculates the normalized direction vector rotated by 90 degrees in clockwise direction and stores the result in dir.
dir | Holds the calculated rotated direction vector. |
Math::Vector2D CDPL::Vis::Line2D::getCWPerpDirection | ( | ) | const |
Calculates the normalized direction vector rotated by 90 degrees in clockwise direction.
void CDPL::Vis::Line2D::getCenter | ( | Math::Vector2D & | ctr | ) | const |
Calculates the center point of the line and stores the result in ctr.
ctr | Holds the calculated center point of the line. |
Math::Vector2D CDPL::Vis::Line2D::getCenter | ( | ) | const |
Calculates the center point of the line.
double CDPL::Vis::Line2D::getLength | ( | ) | const |
Returns the length of the line segment.
void CDPL::Vis::Line2D::translate | ( | const Math::Vector2D & | vec | ) |
Translates the starting and end point of the line by vec.
vec | The translation vector. |
void CDPL::Vis::Line2D::translateBegin | ( | const Math::Vector2D & | vec | ) |
Translates the starting point of the line by vec.
vec | The translation vector. |
void CDPL::Vis::Line2D::translateEnd | ( | const Math::Vector2D & | vec | ) |
Translates the end of the line point by vec.
vec | The translation vector. |
bool CDPL::Vis::Line2D::containsPoint | ( | const Math::Vector2D & | pt | ) | const |
Tests if the point pt is contained within the boundary of the line segment.
The point pt is considered to be contained within the boundary of the line segment if the dot product of the line's direction vector and the vector from the starting point to pt is positive or zero, and furthermore the dot product of the direction vector and the vector from the end point to pt is negative or zero.
pt | The point to test. |
true
if pt is contained within the boundary of the line segment, and false
otherwise. bool CDPL::Vis::Line2D::getIntersectionPoint | ( | const Line2D & | line, |
Math::Vector2D & | pt | ||
) | const |
Calculates the point of intersection with the specified line and stores the result in pt.
line | The other line for which the point of intersection will be calculated. |
pt | Holds the calculated intersection point. |
false
if the two lines are parallel, and true
otherwise. Sets the starting point of the line to the point of intersection with the specified line segment.
If the lines are parallel or the point of intersection is not within the boundaries of both line segments, the starting point of the line is left unaltered and false
is returned.
line | The other line segment to clip against. |
false
if the lines are parallel or the intersection point is not within the boundaries of both line segments, and true
otherwise. Sets the end point of the line to the point of intersection with the specified line segment.
If the lines are parallel or the point of intersection is not within the boundaries of both line segments, the end point of the line is left unaltered and false
is returned.
line | The other line segment to clip against. |
false
if the lines are parallel or the intersection point is not within the boundaries of both line segments, and true
otherwise. Sets the starting point of the line to the point of intersection with the specified line segment.
If the lines are parallel or the point of intersection is not within the boundary of the line segment line, the starting point of the line is left unaltered and false
is returned.
line | The other line segment. |
false
if the lines are parallel or the intersection point is not within the boundary of line, and true
otherwise. Sets the end point of the line to the point of intersection with the specified line segment.
If the lines are parallel or the point of intersection is not within the boundary of the line segment line, the end point of the line is left unaltered and false
is returned.
line | The other line segment. |
false
if the lines are parallel or the intersection point is not within the boundary of line, and true
otherwise. bool CDPL::Vis::Line2D::clipBeginAgainstRectangle | ( | const Rectangle2D & | rect | ) |
Sets the starting point of the line to the point of intersection between this line segment and the edges of the rectangle rect.
If the line segment intersects with more than one edge of rect, the starting point is set to the intersection point which results in the shortest clipped line segment. If the line segment does not intersect with an edge of rect, the starting point is left unaltered and false
is returned.
rect | The rectangle to clip againts. |
true
if the line segment was clipped against an edge of rect, and false
otherwise. bool CDPL::Vis::Line2D::clipEndAgainstRectangle | ( | const Rectangle2D & | rect | ) |
Sets the end point of the line to the point of intersection between this line segment and the edges of the rectangle rect.
If the line segment intersects with more than one edge of rect, the end point is set to the intersection point which results in the shortest clipped line segment. If the line segment does not intersect with an edge of rect, the end point is left unaltered and false
is returned.
rect | The rectangle to clip againts. |
true
if the line segment was clipped against an edge of rect, and false
otherwise. double CDPL::Vis::Line2D::getDistance | ( | const Math::Vector2D & | pt | ) | const |
Returns the perpendicular distance of the point pt to this line.
The measured distance is the distance between the point pt and the closest point on the infinitely extended line. If pt intersects the line, the method returns 0.0.
pt | The point for which to calculate the shortest distance. |
Equality comparison operator.
line | The other Line2D object to be compared with. |
true
if the starting and end points compare equal, and false
otherwise. Inequality comparison operator.
The result is equivalent to !(*this == line)
.
line | The other Line2D object to be compared with. |
true
if either the starting or end points compare non-equal, and false
otherwise.