#include <opennurbs_line.h>

Public Member Functions

 ON_Line ()
 Default constructor sets from = to = ON_3dPoint::Origin. More...
 
 ON_Line (ON_3dPoint start, ON_3dPoint end)
 
 ON_Line (ON_2dPoint start, ON_2dPoint end)
 
 ~ON_Line ()
 
ON_BoundingBox BoundingBox () const
 Get line's 3d axis aligned bounding box. More...
 
bool ClosestPointTo (const ON_3dPoint &test_point, double *t) const
 Find the point on the (infinite) line that is closest to the test_point. More...
 
ON_3dPoint ClosestPointTo (const ON_3dPoint &test_point) const
 Find the point on the (infinite) line that is closest to the test_point. More...
 
bool Create (const ON_3dPoint start, const ON_3dPoint end)
 Create a line from two points. More...
 
bool Create (const ON_2dPoint start, const ON_2dPoint end)
 
ON_3dVector Direction () const
 
double DistanceTo (ON_3dPoint test_point) const
 Find the point on the (infinite) line that is closest to the test_point. More...
 
bool GetBoundingBox (ON_BoundingBox &bbox, int bGrowBox=false) const
 Get line's 3d axis aligned bounding box or the union of the input box with the object's bounding box. More...
 
bool GetTightBoundingBox (ON_BoundingBox &tight_bbox, bool bGrowBox=false, const ON_Xform *xform=nullptr) const
 Get tight bounding box. More...
 
bool InPlane (ON_Plane &plane, double tolerance=0.0) const
 Get a plane that contains the line. More...
 
bool IsFartherThan (double d, const ON_3dPoint &P) const
 Quickly determine if the shortest distance from this line to the other object is greater than d. More...
 
bool IsFartherThan (double d, const ON_Line &L) const
 
bool IsValid () const
 
double Length () const
 
double MaximumDistanceTo (const ON_3dPoint &P) const
 Finds the longest distance between the line as a finite chord and the other object. More...
 
double MaximumDistanceTo (const ON_Line &other) const
 
double MinimumDistanceTo (const ON_3dPoint &P) const
 Finds the shortest distance between the line as a finite chord and the other object. More...
 
double MinimumDistanceTo (const ON_Line &L) const
 
ON_3dPointoperator[] (int)
 line[0] = start point line[1] = end point More...
 
const ON_3dPointoperator[] (int) const
 
ON_3dPoint PointAt (double t) const
 Evaluate point on (infinite) line. More...
 
void Reverse ()
 For intersections see ON_Intersect();. More...
 
bool Rotate (double sin_angle, double cos_angle, const ON_3dVector &axis_of_rotation, const ON_3dPoint &center_of_rotation)
 rotate line about a point and axis More...
 
bool Rotate (double angle_in_radians, const ON_3dVector &axis_of_rotation, const ON_3dPoint &center_of_rotation)
 
ON_3dVector Tangent () const
 
bool Transform (const ON_Xform &xform)
 
bool Translate (const ON_3dVector &delta)
 

Public Attributes

ON_3dPoint from
 
ON_3dPoint to
 

Static Public Attributes

static const ON_Line NanLine
 
static const ON_Line UnsetLine
 
static const ON_Line ZeroLine
 

Constructor & Destructor Documentation

◆ ON_Line() [1/3]

ON_Line::ON_Line ( )

Default constructor sets from = to = ON_3dPoint::Origin.

◆ ~ON_Line()

ON_Line::~ON_Line ( )

◆ ON_Line() [2/3]

ON_Line::ON_Line ( ON_3dPoint  start,
ON_3dPoint  end 
)
explicit

◆ ON_Line() [3/3]

ON_Line::ON_Line ( ON_2dPoint  start,
ON_2dPoint  end 
)
explicit

Member Function Documentation

◆ BoundingBox()

ON_BoundingBox ON_Line::BoundingBox ( ) const

Get line's 3d axis aligned bounding box.

Returns
3d bounding box.

◆ ClosestPointTo() [1/2]

bool ON_Line::ClosestPointTo ( const ON_3dPoint test_point,
double *  t 
) const

Find the point on the (infinite) line that is closest to the test_point.

Parameters
test_point[in]
t[out] line.PointAt(*t) is the point on the line that is closest to test_point.
Returns
true if successful.

◆ ClosestPointTo() [2/2]

ON_3dPoint ON_Line::ClosestPointTo ( const ON_3dPoint test_point) const

Find the point on the (infinite) line that is closest to the test_point.

Parameters
test_point[in]
Returns
The point on the line that is closest to test_point.

◆ Create() [1/2]

bool ON_Line::Create ( const ON_3dPoint  start,
const ON_3dPoint  end 
)

Create a line from two points.

Parameters
start[in] point at start of line segment
end[in] point at end of line segment
Returns
true if start and end are distinct points.

◆ Create() [2/2]

bool ON_Line::Create ( const ON_2dPoint  start,
const ON_2dPoint  end 
)

◆ Direction()

ON_3dVector ON_Line::Direction ( ) const
Returns
direction vector = line.to - line.from
See also
ON_Line::Tangent

◆ DistanceTo()

double ON_Line::DistanceTo ( ON_3dPoint  test_point) const

Find the point on the (infinite) line that is closest to the test_point.

Parameters
test_point[in]
Returns
distance from the point on the line that is closest to test_point.
See also
ON_3dPoint::DistanceTo, ON_Line::ClosestPointTo

◆ GetBoundingBox()

bool ON_Line::GetBoundingBox ( ON_BoundingBox bbox,
int  bGrowBox = false 
) const

Get line's 3d axis aligned bounding box or the union of the input box with the object's bounding box.

Parameters
bbox[in/out] 3d axis aligned bounding box
bGrowBox[in] (default=false) If true, then the union of the input bbox and the object's bounding box is returned in bbox. If false, the object's bounding box is returned in bbox.
Returns
true if object has bounding box and calculation was successful.

◆ GetTightBoundingBox()

bool ON_Line::GetTightBoundingBox ( ON_BoundingBox tight_bbox,
bool  bGrowBox = false,
const ON_Xform xform = nullptr 
) const

Get tight bounding box.

Parameters
tight_bbox[in/out] tight bounding box
bGrowBox[in] (default=false) If true and the input tight_bbox is valid, then returned tight_bbox is the union of the input tight_bbox and the line's tight bounding box.
xform[in] (default=nullptr) If not nullptr, the tight bounding box of the transformed line is calculated. The line is not modified.
Returns
True if a valid tight_bbox is returned.

◆ InPlane()

bool ON_Line::InPlane ( ON_Plane plane,
double  tolerance = 0.0 
) const

Get a plane that contains the line.

Parameters
plane[out] a plane that contains the line. The orgin of the plane is at the start of the line. The distance from the end of the line to the plane is <= tolerance. If possible a plane parallel to the world xy, yz or zx plane is returned.
tolerance[in]
Returns
true if a coordinate of the line's direction vector is larger than tolerance.

◆ IsFartherThan() [1/2]

bool ON_Line::IsFartherThan ( double  d,
const ON_3dPoint P 
) const

Quickly determine if the shortest distance from this line to the other object is greater than d.

Parameters
d[in] distance (> 0.0)
P[in]
L[in]
Returns
True if if the shortest distance from this line to the other object is greater than d.

◆ IsFartherThan() [2/2]

bool ON_Line::IsFartherThan ( double  d,
const ON_Line L 
) const

◆ IsValid()

bool ON_Line::IsValid ( ) const
Returns
True if from != to.

◆ Length()

double ON_Line::Length ( ) const
Returns
Length of line

◆ MaximumDistanceTo() [1/2]

double ON_Line::MaximumDistanceTo ( const ON_3dPoint P) const

Finds the longest distance between the line as a finite chord and the other object.

Parameters
P[in]
L[in] (another finite chord)
Returns
A value d such that if Q is any point on this line and P is any point on the other object, then d >= Q.DistanceTo(P).

◆ MaximumDistanceTo() [2/2]

double ON_Line::MaximumDistanceTo ( const ON_Line other) const

◆ MinimumDistanceTo() [1/2]

double ON_Line::MinimumDistanceTo ( const ON_3dPoint P) const

Finds the shortest distance between the line as a finite chord and the other object.

Parameters
P[in]
L[in] (another finite chord)
Returns
A value d such that if Q is any point on this line and P is any point on the other object, then d <= Q.DistanceTo(P).

◆ MinimumDistanceTo() [2/2]

double ON_Line::MinimumDistanceTo ( const ON_Line L) const

◆ operator[]() [1/2]

ON_3dPoint& ON_Line::operator[] ( int  )

line[0] = start point line[1] = end point

◆ operator[]() [2/2]

const ON_3dPoint& ON_Line::operator[] ( int  ) const

◆ PointAt()

ON_3dPoint ON_Line::PointAt ( double  t) const

Evaluate point on (infinite) line.

Parameters
t[in] evaluation parameter. t=0 returns line.from and t=1 returns line.to.
Returns
(1-t)*line.from + t*line.to.
See also
ON_Line::Direction, ON_Line::Tangent

◆ Reverse()

void ON_Line::Reverse ( )

For intersections see ON_Intersect();.

Reverse line by swapping from and to.

◆ Rotate() [1/2]

bool ON_Line::Rotate ( double  sin_angle,
double  cos_angle,
const ON_3dVector axis_of_rotation,
const ON_3dPoint center_of_rotation 
)

rotate line about a point and axis

◆ Rotate() [2/2]

bool ON_Line::Rotate ( double  angle_in_radians,
const ON_3dVector axis_of_rotation,
const ON_3dPoint center_of_rotation 
)

◆ Tangent()

ON_3dVector ON_Line::Tangent ( ) const
Returns
Unit tangent vector.
See also
ON_Line::Direction

◆ Transform()

bool ON_Line::Transform ( const ON_Xform xform)

◆ Translate()

bool ON_Line::Translate ( const ON_3dVector delta)

Member Data Documentation

◆ from

ON_3dPoint ON_Line::from

◆ NanLine

const ON_Line ON_Line::NanLine
static

◆ to

ON_3dPoint ON_Line::to

◆ UnsetLine

const ON_Line ON_Line::UnsetLine
static

◆ ZeroLine

const ON_Line ON_Line::ZeroLine
static