#include
<MNurbsIntersector.h>
List of all
members.
Detailed Description
Nurbs intersector.
The MNurbsIntersector class contains methods
for efficiently finding the closest point to a NURBS surface. A
tree-based algorithm is used to find the closest point.
The create()
method builds the internal data required for the algorithm. As a
result, calls to it should be minimized as it is a heavy operation.
If the NURBS surface or matrix changes, you will need to recreate
the tree based data to correspond, again using the create()
method.
This class is not threadsafe. 
|  | 
| 
 Public Member Functions | 
|  | MNurbsIntersector
(void) | 
| virtual | ~MNurbsIntersector
(void) | 
| MStatus | create
(MObject
&nurbsObject, const MMatrix &matrix=MMatrix::identity) | 
| bool | isCreated
(void) | 
| MStatus | getClosestPoint
(MPoint &point,
MPointOnNurbs &nurbsPoint, double maxDistance=DBL_MAX) | 
| MStatus | getIntersects
(const MPoint
&rayStartingPoint, const MVector &alongThisDirection,
MDoubleArray
&uArray, MDoubleArray &vArray, MPointArray &points,
double tolerance) | 
| MStatus | getIntersect
(const MPoint
&rayStartingPoint, const MVector &alongThisDirection, double
&u, double &v, MPoint &pntOfIntersection, double
tolerance) | 
Constructor & Destructor Documentation
| MNurbsIntersector::MNurbsIntersector | ( | void |  | ) |  | 
 
 
| MNurbsIntersector::~MNurbsIntersector | ( | void |  | ) | [virtual] | 
 
 
Member Function Documentation
This method creates the data required by the intersector. It is
a heavy operation that should be called only when necessary, such
as when the underlying NURBS surface or the matrix changes.
- Parameters:
- 
| [in] | nurbsObject | a NURBS surface object . |  
| [in] | matrix | specify the mapping to apply for transforming points that are
specified in the getClosestPoint method into the object space of
the NURBS surface. |  
 
- Returns:
- Status code
- Status Codes:
- 
 
 
| bool MNurbsIntersector::isCreated | ( | void |  | ) |  | 
 
This method returns true if the intersector is created. False is
returned otherwise.
 
 
| MStatus
MNurbsIntersector::getClosestPoint | ( | MPoint & | point, | 
|  |  | MPointOnNurbs & | nurbsPoint, | 
|  |  | double | maxDistance = DBL_MAX |  | 
|  | ) |  |  |  | 
 
This method finds the closest point. Information is returned in
the nurbsPoint object.
- Parameters:
- 
| [in] | point | Specifies the location for which to evaluate the closest point
on the NURBS surface. `point' is transformed using the matrix
parameter passed to the create()
method, so for example if your matrix maps world to object space,
then `point' should be specified in world space. |  
| [out] | nurbsPoint | Resulting closest point in object space. |  
| [in] | maxDistance | Maximum distance to consider in object space. |  
 
- Returns:
- Status code
- Status Codes:
- 
 
 
This method finds all the points of intersection of the NURBS
surface with a ray (a vector at a point). The points are returned
in the points object, and the U and V parameters of the points are
returned in the uArray and vArray objects respectively.
- Parameters:
- 
| [in] | rayStartingPoint | Starting location of ray to test |  
| [in] | alongThisDirection | Direction of ray to test |  
| [in] | uArray | U parameters of intersection (if any) |  
| [in] | vArray | V parameters of intersection (if any) |  
| [out] | points | Storage for points of intersection (if any) |  
| [in] | tolerance | The epsilon value in the calculation |  
 
- Returns:
- Status code
- Status Codes:
- 
 
 
| MStatus
MNurbsIntersector::getIntersect | ( | const MPoint & | rayStartingPoint, | 
|  |  | const MVector & | alongThisDirection, | 
|  |  | double & | u, | 
|  |  | double & | v, | 
|  |  | MPoint & | pntOfIntersection, | 
|  |  | double | tolerance |  | 
|  | ) |  |  |  | 
 
This method finds the first point of intersection of the NURBS
surface with a ray (a vector at a point). The point is returned in
the pntOfIntersection object, and the U and V parameters of the
point are returned in the u and v variables respectively.
- Parameters:
- 
| [in] | rayStartingPoint | Starting location of ray to test |  
| [in] | alongThisDirection | Direction of ray to test |  
| [in] | u | U parameter of intersection (if any) |  
| [in] | v | V parameter of intersection (if any) |  
| [out] | pntOfIntersection | Storage for closest point of intersection (if any) |  
| [in] | tolerance | The epsilon value in the calculation |  
 
- Returns:
- Status code
- Status Codes:
-