Rhino C++ API
8.14
|
#include <opennurbs_convex_poly.h>
Public Member Functions | |
virtual | ~ON_ConvexPoly () |
virtual int | Count () const =0 |
ON_3dPoint | Evaluate (ON_4dex dex, ON_4dPoint B) const |
bool | GetClosestPoint (const ON_ConvexPoly &BHull, ON_4dex &Adex, ON_4dex &Bdex, ON_4dPoint &bary, double maximum_distance=ON_DBL_MAX) const |
bool | GetClosestPoint (ON_3dPoint P0, ON_4dex &dex, ON_4dPoint &bary, double maximum_distance=ON_DBL_MAX) const |
bool | GetClosestPointSeeded (const ON_ConvexPoly &BHull, ON_4dex &Adex, ON_4dex &Bdex, ON_4dPoint &bary, double maximum_distance=ON_DBL_MAX) const |
bool | GetClosestPointSeeded (ON_3dPoint P0, ON_4dex &dex, ON_4dPoint &Bary, double maximum_distance=ON_DBL_MAX) const |
bool | IsValid4Dex (const ON_4dex &D) const |
virtual double | MaximumCoordinate () const =0 |
ON_3dPoint | Support (ON_3dVector W, int i0=0) const |
virtual int | SupportIndex (ON_3dVector W, int i0=0) const =0 |
virtual ON_3dVector | Vertex (int i) const =0 |
Static Public Member Functions | |
static bool | IsValid4DexN (const ON_4dex &D, int n) |
static bool | Standardize (ON_4dex &D, ON_4dPoint &B) |
This is a base class for a convex polytope in 3d space, i.e. the convex hull of a finite set of points called vertices.
This is the base type in the implementation of the GJK algorithm ClosestPoint(ON_ConvexPoly& A, ON_ConvexPoly& B, ...)
|
inlinevirtual |
|
pure virtual |
Returns: Number of vertices >=0
Implemented in ON_ConvexHullPoint2, ON_ConvexHullRef, and ON_ConvexHullRefEx.
|
inline |
Description: Points in a Convex Polytope are parameterized , not necessarily uniquely, by an ON_4dex of vertex indices and a 4d barycentric point B Evaluate(Ind, B ) = Sum_{i=0,..,3} Vertex(Ind[i])*B[i], where the sum is taken over i such that Ind[i]>=0 If B is a barycentric coordinate B[i]>=0 and B[0] + B[1] + B[2] + B[3] = 1.0 then Evaluate( Ind, B) is a point in the convex polytope
bool ON_ConvexPoly::GetClosestPoint | ( | const ON_ConvexPoly & | BHull, |
ON_4dex & | Adex, | ||
ON_4dex & | Bdex, | ||
ON_4dPoint & | bary, | ||
double | maximum_distance = ON_DBL_MAX |
||
) | const |
Description: Computes a pair of points on *this and BHull that achieve the minimum distance between the two convex polytopes. Parameters: BHull - [in] the other convex polytope adex, bdex -[out] Evaluate(adex,bary) is the closest point on this polyhedron bary - [out] BHull.Evaluate(bdex,bary) is the closest point on BHull. maximum_distance - [in ] optional upper bound on distance
Returns: Returns true if a closest points are found and they are within optional maximum_distance bound;
Details: Setting maximum_distance can speedup the calculation in cases where dist(*this, BHull)>maximum_distance.
bool ON_ConvexPoly::GetClosestPoint | ( | ON_3dPoint | P0, |
ON_4dex & | dex, | ||
ON_4dPoint & | bary, | ||
double | maximum_distance = ON_DBL_MAX |
||
) | const |
Description: Computes the closest point on this convex polytope from a point P0. Parameters: P0 - [in] Base Point for closest point dex -[out] bary - [out] Evaluate(dex,bary) is the closest point on this polyhedron maximum_distance - [in ] optional upper bound on distance
Returns: Returns true if a closest point is found and it is within optional maximum_distance bound;
Details: Setting maximum_distance can speedup the calculation in cases where dist(P0, *this)>maximum_distance.
bool ON_ConvexPoly::GetClosestPointSeeded | ( | const ON_ConvexPoly & | BHull, |
ON_4dex & | Adex, | ||
ON_4dex & | Bdex, | ||
ON_4dPoint & | bary, | ||
double | maximum_distance = ON_DBL_MAX |
||
) | const |
Expert version of GetClosestPoint.
Adex and Bdex are used at input to seed search algorithm. the points of this-Bhull singled out by Adex and Bdex must define a nondegenerate simplex
bool ON_ConvexPoly::GetClosestPointSeeded | ( | ON_3dPoint | P0, |
ON_4dex & | dex, | ||
ON_4dPoint & | Bary, | ||
double | maximum_distance = ON_DBL_MAX |
||
) | const |
Expert version of GetClosestPoint.
dex is used at input to seed search algorithm. the points of *this singled out by dex must define a nondegenerate simplex
|
inline |
|
inlinestatic |
|
pure virtual |
Description: This is a bound on the collection of vertices. Vertex(i).MaximumCoordinate()<= MaximumCoordinate() for all i
Implemented in ON_ConvexHullPoint2, ON_ConvexHullRef, and ON_ConvexHullRefEx.
|
static |
Description: A point represented by a ON_4dex D and a barycentric coordinate B can be put in a standard form so that non-negative elements of D are unique and corresponding coordinates are positive. Furthermore, the non-negative indices are all listed before the unset ( negative ) values
|
inline |
Description: Let K be this ON_ConvexPoly then for a non-zero vector W the support Support(W) are point in K defined by arg max x * W x \in K This method returns one of these points in Support(W). i0 is an optional initial index seed value. It may provide a performance enhancement toward finding a minimizer.
|
pure virtual |
Description: For any vector W there is a vertex that is Support(W) SupportIndex( W, i0) returns a vertex index for a vertex that is the support. Veretx( K.SupportIndex( W )) = K.Support(W );
Implemented in ON_ConvexHullPoint2, ON_ConvexHullRef, and ON_ConvexHullRefEx.
|
pure virtual |
Returns: Vertex[i] for i=0,...,Count()-1
Implemented in ON_ConvexHullPoint2, ON_ConvexHullRef, and ON_ConvexHullRefEx.