Rhino C++ API
8.14
|
#include <opennurbs_bounding_box.h>
Public Member Functions | |
ON_BoundingBox () ON_NOEXCEPT | |
creates EmptyBoundingBox More... | |
ON_BoundingBox (const ON_3dPoint &, const ON_3dPoint &) | |
ON_BoundingBox (const ON_BoundingBox &)=default | |
~ON_BoundingBox ()=default | |
double | Area () const |
ON_3dPoint | Center () const |
ON_3dPoint | ClosestPoint (const ON_3dPoint &test_point) const |
ON_3dPoint | Corner (int, int, int) const |
void | Destroy () |
OBSOLETE. More... | |
ON_3dVector | Diagonal () const |
max corner - min corner More... | |
void | Dump (class ON_TextLog &) const |
ON_Line | Edge (unsigned int index) const |
bool | Expand (ON_3dVector delta) |
ON_3dPoint | FarPoint (const ON_3dPoint &) const |
Point on the box that is farthest from the test_point. More... | |
bool | GetClosestPoint (const ON_BoundingBox &, ON_3dPoint &, ON_3dPoint &) const |
int | GetClosestPoint (const ON_Line &, ON_3dPoint &, double *, double *) const |
bool | GetCorners (ON_3dPoint box_corners[8]) const |
bool | GetCorners (ON_3dPointArray &box_corners) const |
bool | GetEdges (ON_Line edges[12]) const |
bool | GetFarPoint (const ON_BoundingBox &, ON_3dPoint &, ON_3dPoint &) const |
Get points on bounding boxes that are farthest from each other. More... | |
bool | Includes (const ON_BoundingBox &other, bool bProperSubSet=false) const |
bool | Intersection (const ON_BoundingBox &bbox_A, const ON_BoundingBox &bbox_B) |
bool | Intersection (const ON_BoundingBox &other_bbox) |
bool | Intersection (const ON_Line &, double *=nullptr, double *=nullptr) const |
int | IsDegenerate (double tolerance=ON_UNSET_VALUE) const |
bool | IsDisjoint (const ON_BoundingBox &other_bbox) const |
bool | IsDisjoint (const ON_Line &line) const |
bool | IsDisjoint (const ON_Line &line, bool infinite) const |
bool | IsEmpty () const |
(m_min.x > m_max.x || m_min.y > m_max.y || m_min.z > m_max.z) && IsSet(); More... | |
bool | IsFartherThan (double d, const ON_3dPoint &P) const |
bool | IsFartherThan (double d, const ON_BoundingBox &other) const |
bool | IsFartherThan (double d, const ON_Line &line) const |
bool | IsFartherThan (double d, const ON_Plane &plane) const |
bool | IsFartherThan (double d, const ON_PlaneEquation &plane_equation) const |
bool | IsNan () const |
some coordinate is a NAN More... | |
bool | IsNotEmpty () const |
(m_min.x <= m_max.x && m_min.y <= m_max.y && m_min.z <= m_max.z) && IsSet() More... | |
bool | IsPoint () const |
(m_min.x == m_max.x && m_min.y == m_max.y && m_min.z == m_max.z) && IsSet() More... | |
bool | IsPointIn (const ON_3dPoint &test_point, int bStrictlyIn=false) const |
bool | IsSet () const |
every coordinate is a finite, valid double, not ON_UNSET_VALUE and not ON_UNSET_POSITIVE_VALUE More... | |
bool | IsUnset () const |
some coordinate is ON_UNSET_VALUE or ON_UNSET_POSITIVE_VALUE More... | |
bool | IsUnsetOrNan () const |
= IsUnset() or IsNan() More... | |
bool | IsValid () const |
OBSOLETE IsValid() = IsNotEmpty() More... | |
int | IsVisible (const ON_Xform &bbox2c) const |
ON_3dPoint | Max () const |
double | MaximumDistanceTo (const ON_3dPoint &P) const |
double | MaximumDistanceTo (const ON_BoundingBox &other) const |
double | MaximumDistanceTo (const ON_Line &line) const |
double | MaximumDistanceTo (const ON_Plane &plane) const |
double | MaximumDistanceTo (const ON_PlaneEquation &plane_equation) const |
ON_3dPoint | Min () const |
double | MinimumDistanceTo (const ON_3dPoint &P) const |
double | MinimumDistanceTo (const ON_BoundingBox &other) const |
double | MinimumDistanceTo (const ON_Line &line) const |
double | MinimumDistanceTo (const ON_Plane &plane) const |
double | MinimumDistanceTo (const ON_PlaneEquation &plane_equation) const |
ON_BoundingBox & | operator= (const ON_BoundingBox &)=default |
ON_3dPoint & | operator[] (int) |
operator[] returns min if index <= 0 and max if index >= 1 More... | |
const ON_3dPoint & | operator[] (int) const |
bool | Set (const ON_2dPoint &point, int bGrowBox=false) |
bool | Set (const ON_2fPoint &point, int bGrowBox=false) |
bool | Set (const ON_3dPoint &point, int bGrowBox=false) |
bool | Set (const ON_3fPoint &point, int bGrowBox=false) |
bool | Set (const ON_SimpleArray< ON_2dPoint > &point_array, int bGrowBox=false) |
bool | Set (const ON_SimpleArray< ON_2fPoint > &point_array, int bGrowBox=false) |
bool | Set (const ON_SimpleArray< ON_3dPoint > &point_array, int bGrowBox=false) |
bool | Set (const ON_SimpleArray< ON_3fPoint > &point_array, int bGrowBox=false) |
bool | Set (const ON_SimpleArray< ON_4dPoint > &point_array, int bGrowBox=false) |
bool | Set (const ON_SimpleArray< ON_4fPoint > &point_array, int bGrowBox=false) |
bool | Set (int dim, bool is_rat, int count, int stride, const double *point_array, int bGrowBox=false) |
bool | Set (int dim, bool is_rat, int count, int stride, const float *point_array, int bGrowBox=false) |
bool | Shrink (ON_3dVector delta) |
bool | SwapCoordinates (int, int) |
double | Tolerance () const |
bool | Transform (const ON_Xform &) |
bool | Union (const ON_BoundingBox &) |
bool | Union (const ON_BoundingBox &, const ON_BoundingBox &) |
double | Volume () const |
Public Attributes | |
ON_3dPoint | m_max |
ON_3dPoint | m_min |
Static Public Attributes | |
static const ON_BoundingBox | EmptyBoundingBox |
((1.0,0.0,0.0),(-1.0,0.0,0.0)) More... | |
static const ON_BoundingBox | NanBoundingBox |
all coordinates are ON_DBL_QNAN More... | |
static const ON_BoundingBox | UnsetBoundingBox |
all coordinates are ON_UNSET_VALUE More... | |
Copyright (c) 1993-2022 Robert McNeel & Associates. All rights reserved. OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert McNeel & Associates.
THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED.
For complete openNURBS copyright information see http://www.opennurbs.org. ON_BoundingBox - axis aligned bounding box
ON_BoundingBox::ON_BoundingBox | ( | ) |
creates EmptyBoundingBox
|
default |
|
default |
|
explicit |
double ON_BoundingBox::Area | ( | ) | const |
ON_3dPoint ON_BoundingBox::Center | ( | ) | const |
ON_3dPoint ON_BoundingBox::ClosestPoint | ( | const ON_3dPoint & | test_point | ) | const |
Point on or in the box that is closest to test_point. If test_point is in or on the box, the test_point is returned.
ON_3dPoint ON_BoundingBox::Corner | ( | int | , |
int | , | ||
int | |||
) | const |
void ON_BoundingBox::Destroy | ( | ) |
OBSOLETE.
set this = ON_BoundingBox::EmptyBoundingBox
ON_3dVector ON_BoundingBox::Diagonal | ( | ) | const |
max corner - min corner
void ON_BoundingBox::Dump | ( | class ON_TextLog & | ) | const |
ON_Line ON_BoundingBox::Edge | ( | unsigned int | index | ) | const |
Parameters: index - in the index of the edge Returns: Line segments, some possibly a single point.
index | the index of the requested edge. |
bool ON_BoundingBox::Expand | ( | ON_3dVector | delta | ) |
Description: Expand the box by adding delta to m_max and subtracting it from m_min. So, when delta is positive and the interval is increasing this function expands the box on each side. Returns: true if the result is Valid.
ON_3dPoint ON_BoundingBox::FarPoint | ( | const ON_3dPoint & | ) | const |
Point on the box that is farthest from the test_point.
bool ON_BoundingBox::GetClosestPoint | ( | const ON_BoundingBox & | , |
ON_3dPoint & | , | ||
ON_3dPoint & | |||
) | const |
Get points on bounding boxes that are closest to each other. If the boxes intersect, then the point at the centroid of the intersection is returned for both points.
int ON_BoundingBox::GetClosestPoint | ( | const ON_Line & | , |
ON_3dPoint & | , | ||
double * | , | ||
double * | |||
) | const |
Description: Get point in a bounding box that is closest to a line segment. Parameters: line - [in] line segment box_point - [out] point in box that is closest to line segment point at t0. t0 - [out] parameter of point on line that is closest to the box. t1 - [out] parameter of point on line that is closest to the box. Returns: 3 success - line segments intersects box in a segment from line(t0) to line(t1) (t0 < t1) 2 success - line segments intersects box in a single point at line(t0) (t0==t1) 1 success - line segment does not intersect box. Closest point on the line is at line(t0) (t0==t1) 0 failure - box is invalid. Remarks: The box is treated as a solid box. If the intersection of the line segment, then 3 is returned.
bool ON_BoundingBox::GetCorners | ( | ON_3dPoint | box_corners[8] | ) | const |
box_corners | returns list of 8 corner points |
bool ON_BoundingBox::GetCorners | ( | ON_3dPointArray & | box_corners | ) | const |
box_corners | returns list of 8 corner points |
bool ON_BoundingBox::GetEdges | ( | ON_Line | edges[12] | ) | const |
Parameters: edges[] - out 12 edge lines. If the bounding box has no height, width or depth, then the corresponding edges will have the same "from" and "to" points. Returns: If the bounding box is valid, then true is returned and 12 line segments, some possibly a single point, are returned. Otherwise false is returned and 12 line segments with "from" and "to" points set to ON_3dPoint::UnsetPoint are returned.
edges | returns list of 12 edge segments |
bool ON_BoundingBox::GetFarPoint | ( | const ON_BoundingBox & | , |
ON_3dPoint & | , | ||
ON_3dPoint & | |||
) | const |
Get points on bounding boxes that are farthest from each other.
bool ON_BoundingBox::Includes | ( | const ON_BoundingBox & | other, |
bool | bProperSubSet = false |
||
) | const |
Description: Test a box to see if it is contained in this box. Parameters: other - [in] box to test bProperSubSet - [in] if true, then the test is for a proper inclusion. Returns: If bProperSubSet is false, then the result is true when this->m_min[i] <= other.m_min[i] and other.m_max[i] <= this->m_max[i]. for i=0,1 and 2. If bProperSubSet is true, then the result is true when the above condition is true and at least one of the inequalities is strict.
bool ON_BoundingBox::Intersection | ( | const ON_BoundingBox & | bbox_A, |
const ON_BoundingBox & | bbox_B | ||
) |
Description: Set "this" to the intersection of bbox_A and bbox_B. Parameters: bbox_A - [in] bbox_B - [in] Returns: True if the "this" is a non-empty valid bounding box. False if the intersection is empty, in which case "this" is set to an invalid bounding box. Remarks: If bbox_A or bbox_B is invalid, they are treated as the empty set, and false is returned.
bbox_A | this = intersection of two args |
bool ON_BoundingBox::Intersection | ( | const ON_BoundingBox & | other_bbox | ) |
Description: Intersect this with other_bbox and save intersection in this. Parameters: other_bbox - [in] Returns: True if this-intersect-other_bbox is a non-empty valid bounding box and this is set. False if the intersection is empty, in which case "this" is set to an invalid bounding box. Remarks: If "this" or other_bbox is invalid, they are treated as the empty set, and false is returned.
bool ON_BoundingBox::Intersection | ( | const ON_Line & | , |
double * | = nullptr , |
||
double * | = nullptr |
||
) | const |
int ON_BoundingBox::IsDegenerate | ( | double | tolerance = ON_UNSET_VALUE | ) | const |
Description: Test a bounding box to see if it is degenerate (flat) in one or more directions. Parameters: tolerance - [in] Distances <= tolerance will be considered to be zero. If tolerance is negative (default), then a scale invariant tolerance is used. Returns: @untitled table 0 box is not degenerate 1 box is a rectangle (degenerate in one direction) 2 box is a line (degenerate in two directions) 3 box is a point (degenerate in three directions) 4 box is not valid
bool ON_BoundingBox::IsDisjoint | ( | const ON_BoundingBox & | other_bbox | ) | const |
Description: Test to see if "this" and other_bbox are disjoint (do not intersect). Parameters: other_bbox - [in] Returns: True if "this" and other_bbox are disjoint. Remarks: If "this" or other_bbox is invalid, then true is returned.
bool ON_BoundingBox::IsDisjoint | ( | const ON_Line & | line | ) | const |
Description: Test to see if "this" and line are disjoint (do not intersect or line is included). Parameters: line - [in] infinite - [in] if false or not provided, then the line is considered bounded by start and end points. Returns: True if "this" and line are disjoint.
bool ON_BoundingBox::IsDisjoint | ( | const ON_Line & | line, |
bool | infinite | ||
) | const |
bool ON_BoundingBox::IsEmpty | ( | ) | const |
(m_min.x > m_max.x || m_min.y > m_max.y || m_min.z > m_max.z) && IsSet();
bool ON_BoundingBox::IsFartherThan | ( | double | d, |
const ON_3dPoint & | P | ||
) | const |
Description: Quickly determine if the shortest distance from the point P to the bounding box is greater than d. Parameters: d - [in] distance (> 0.0) P - [in] Returns: True if if the shortest distance from the point P to the bounding box is greater than d.
bool ON_BoundingBox::IsFartherThan | ( | double | d, |
const ON_BoundingBox & | other | ||
) | const |
Description: Quickly determine if the shortest distance this bounding box to another bounding box is greater than d. Parameters: d - [in] distance (> 0.0) other - [in] other bounding box Returns: True if if the shortest distance from this bounding box to the other bounding box is greater than d.
bool ON_BoundingBox::IsFartherThan | ( | double | d, |
const ON_Line & | line | ||
) | const |
Description: Quickly determine if the shortest distance from the line to the bounding box is greater than d. Parameters: d - [in] distance (> 0.0) line - [in] Returns: True if the shortest distance from the line to the bounding box is greater than d. It is not the case that false means that the shortest distance is less than or equal to d.
bool ON_BoundingBox::IsFartherThan | ( | double | d, |
const ON_Plane & | plane | ||
) | const |
Description: Quickly determine if the shortest distance from the plane to the bounding box is greater than d. Parameters: d - [in] distance (> 0.0) plane - [in] Returns: True if the shortest distance from the plane to the bounding box is greater than d, and false if the shortest distance is less than or equal to d.
bool ON_BoundingBox::IsFartherThan | ( | double | d, |
const ON_PlaneEquation & | plane_equation | ||
) | const |
Description: Quickly determine if the shortest distance from the plane to the bounding box is greater than d. Parameters: d - [in] distance (> 0.0) plane_equation - [in] (the first three coefficients are assumed to be a unit vector. If not, adjust your d accordingly.) Returns: True if the shortest distance from the plane to the bounding box is greater than d, and false if the shortest distance is less than or equal to d.
bool ON_BoundingBox::IsNan | ( | ) | const |
some coordinate is a NAN
bool ON_BoundingBox::IsNotEmpty | ( | ) | const |
(m_min.x <= m_max.x && m_min.y <= m_max.y && m_min.z <= m_max.z) && IsSet()
bool ON_BoundingBox::IsPoint | ( | ) | const |
(m_min.x == m_max.x && m_min.y == m_max.y && m_min.z == m_max.z) && IsSet()
bool ON_BoundingBox::IsPointIn | ( | const ON_3dPoint & | test_point, |
int | bStrictlyIn = false |
||
) | const |
test_point | point to test |
bStrictlyIn | true to test for strict ( min < point < max ) false to test for (min <= point <= max) |
bool ON_BoundingBox::IsSet | ( | ) | const |
every coordinate is a finite, valid double, not ON_UNSET_VALUE and not ON_UNSET_POSITIVE_VALUE
bool ON_BoundingBox::IsUnset | ( | ) | const |
some coordinate is ON_UNSET_VALUE or ON_UNSET_POSITIVE_VALUE
bool ON_BoundingBox::IsValid | ( | ) | const |
OBSOLETE IsValid() = IsNotEmpty()
empty boxes are not valid
int ON_BoundingBox::IsVisible | ( | const ON_Xform & | bbox2c | ) | const |
OBSOLETE temporary - use ON_ClippingRegion - this function will be removed soon.
ON_3dPoint ON_BoundingBox::Max | ( | ) | const |
double ON_BoundingBox::MaximumDistanceTo | ( | const ON_3dPoint & | P | ) | const |
Description: Quickly find an upper bound on the distance between the point and this bounding box. Parameters: P - [in] Returns: A distance that is greater than or equal to the longest distance from the point P to this bounding box. Put another way, if Q is any point in this bounding box, then P.DistanceTo(Q) <= MaximumDistanceTo(bbox).
double ON_BoundingBox::MaximumDistanceTo | ( | const ON_BoundingBox & | other | ) | const |
Description: Quickly find an upper bound on the distance between this and the other bounding box. Parameters: other - [in] Returns: A distance that is greater than or equal to the longest distance between the bounding boxes. Put another way, if Q is any point in this bounding box and P is any point in the other bounding box, then P.DistanceTo(Q) <= MaximumDistanceTo(bbox).
double ON_BoundingBox::MaximumDistanceTo | ( | const ON_Line & | line | ) | const |
Description: Quickly find an upper bound on the distance between the line segment and this bounding box. Parameters: line - [in] Returns: A distance that is greater than or equal to the longest distance from the line to this bounding box. Put another way, if Q is any point on the line and P is any point in this bounding box, then P.DistanceTo(Q) <= MaximumDistanceTo(bbox).
double ON_BoundingBox::MaximumDistanceTo | ( | const ON_Plane & | plane | ) | const |
Description: Quickly find a tight upper bound on the distance between the plane and this bounding box. Parameters: plane - [in] Returns: A distance that is equal to the longest distance from the plane to this bounding box. Put another way, if Q is any point on the plane and P is any point in this bounding box, then P.DistanceTo(Q) <= MaximumDistanceTo(bbox) and there is at least one point on the bounding box where the distance is equal to the returned value. See Also: ON_PlaneEquation::MaximumValueAt
double ON_BoundingBox::MaximumDistanceTo | ( | const ON_PlaneEquation & | plane_equation | ) | const |
ON_3dPoint ON_BoundingBox::Min | ( | ) | const |
double ON_BoundingBox::MinimumDistanceTo | ( | const ON_3dPoint & | P | ) | const |
Description: Quickly find a lower bound on the distance between the point and this bounding box. Parameters: P - [in] Returns: A distance that is less than or equal to the shortest distance from the line to this bounding box. Put another way, if Q is any point in this bounding box, then P.DistanceTo(Q) >= MinimumDistanceTo(bbox).
double ON_BoundingBox::MinimumDistanceTo | ( | const ON_BoundingBox & | other | ) | const |
Description: Quickly find a lower bound on the distance between this and the other bounding box. Parameters: other - [in] Returns: A distance that is less than or equal to the shortest distance between the bounding boxes. Put another way, if Q is any point in this bounding box and P is any point in the other bounding box, then P.DistanceTo(Q) >= MinimumDistanceTo(bbox).
double ON_BoundingBox::MinimumDistanceTo | ( | const ON_Line & | line | ) | const |
Description: Quickly find a lower bound on the distance between the line segment and this bounding box. Parameters: line - [in] Returns: A distance that is less than or equal to the shortest distance from the line to this bounding box. Put another way, if Q is any point on line and P is any point in this bounding box, then P.DistanceTo(Q) >= MinimumDistanceTo(bbox).
double ON_BoundingBox::MinimumDistanceTo | ( | const ON_Plane & | plane | ) | const |
Description: Quickly find a tight lower bound on the distance between the plane and this bounding box. Parameters: plane - [in] Returns: The minimum distance between a point on the plane and a point on the bounding box. See Also: ON_PlaneEquation::MinimumValueAt ON_PlaneEquation::MaximumValueAt
double ON_BoundingBox::MinimumDistanceTo | ( | const ON_PlaneEquation & | plane_equation | ) | const |
|
default |
ON_3dPoint& ON_BoundingBox::operator[] | ( | int | ) |
operator[] returns min if index <= 0 and max if index >= 1
const ON_3dPoint& ON_BoundingBox::operator[] | ( | int | ) | const |
bool ON_BoundingBox::Set | ( | const ON_2dPoint & | point, |
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Set | ( | const ON_2fPoint & | point, |
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Set | ( | const ON_3dPoint & | point, |
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Set | ( | const ON_3fPoint & | point, |
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Set | ( | const ON_SimpleArray< ON_2dPoint > & | point_array, |
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Set | ( | const ON_SimpleArray< ON_2fPoint > & | point_array, |
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Set | ( | const ON_SimpleArray< ON_3dPoint > & | point_array, |
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Set | ( | const ON_SimpleArray< ON_3fPoint > & | point_array, |
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Set | ( | const ON_SimpleArray< ON_4dPoint > & | point_array, |
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Set | ( | const ON_SimpleArray< ON_4fPoint > & | point_array, |
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Set | ( | int | dim, |
bool | is_rat, | ||
int | count, | ||
int | stride, | ||
const double * | point_array, | ||
int | bGrowBox = false |
||
) |
All of these Set() functions set or expand a box to enclose the points in the arguments If bGrowBox is true, the existing box is expanded, otherwise it is only set to the current point list
bool ON_BoundingBox::Set | ( | int | dim, |
bool | is_rat, | ||
int | count, | ||
int | stride, | ||
const float * | point_array, | ||
int | bGrowBox = false |
||
) |
bool ON_BoundingBox::Shrink | ( | ON_3dVector | delta | ) |
Description: Shrinks the box by subtracting delta to m_max and adding it from m_min. This is not allowed to create an inverse bounding box. Returns: true if the result is Valid.
bool ON_BoundingBox::SwapCoordinates | ( | int | , |
int | |||
) |
double ON_BoundingBox::Tolerance | ( | ) | const |
rough guess at a tolerance to use for comparing objects in this bounding box
bool ON_BoundingBox::Transform | ( | const ON_Xform & | ) |
ON_BoundingBox::Transform() updates the bounding box to be the smallest axis aligned bounding box that contains the transform of the eight corner points of the input bounding box.
bool ON_BoundingBox::Union | ( | const ON_BoundingBox & | ) |
Union() returns true if union is not empty. Invalid boxes are treated as the empty set.
bool ON_BoundingBox::Union | ( | const ON_BoundingBox & | , |
const ON_BoundingBox & | |||
) |
double ON_BoundingBox::Volume | ( | ) | const |
|
static |
((1.0,0.0,0.0),(-1.0,0.0,0.0))
ON_3dPoint ON_BoundingBox::m_max |
ON_3dPoint ON_BoundingBox::m_min |
|
static |
all coordinates are ON_DBL_QNAN
|
static |
all coordinates are ON_UNSET_VALUE