Rhino C++ API  7.19
Public Types | Public Member Functions | Public Attributes | List of all members
ON_SSX_EVENT Class Reference

#include <opennurbs_plus_x.h>

Public Types

enum  TYPE : unsigned int {
  TYPE::unset = 0, TYPE::transverse = 1, TYPE::tangent = 2, TYPE::overlap = 3,
  TYPE::transverse_point = 4, TYPE::tangent_point = 5, TYPE::unknown = 0xE, TYPE::none = 0xF
}
 

Public Member Functions

 ON_SSX_EVENT () ON_NOEXCEPT
 NO VIRTUAL FUNCTIONS IN THIS CLASS. More...
 
 ON_SSX_EVENT (const ON_SSX_EVENT &)
 copies m_curveA, m_curveB, m_curve3d More...
 
 ~ON_SSX_EVENT ()
 deletes m_curveA, m_curveB, m_curve3d More...
 
void Dump (ON_TextLog &text_log) const
 
bool IsCurveEvent () const
 
bool IsOverlapEvent () const
 
bool IsPointEvent () const
 
bool IsTangentEvent () const
 
bool IsTinyEvent (double tiny_tolerance) const
 
bool IsValid (ON_TextLog *text_log, double intersection_tolerance, double overlap_tolerance, double fitting_tolerance, const class ON_Surface *surfaceA, const class ON_Interval *surfaceA_domain0, const class ON_Interval *surfaceA_domain1, const class ON_Surface *surfaceB, const class ON_Interval *surfaceB_domain0, const class ON_Interval *surfaceB_domain1) const
 
ON_SSX_EVENToperator= (const ON_SSX_EVENT &src)
 copies m_curveA, m_curveB, m_curve3d More...
 

Public Attributes

ON_Curvem_curve3d
 3d surface B parameter space curve More...
 
ON_Curvem_curveA
 2d surface A parameter space curve More...
 
ON_Curvem_curveB
 2d surface B parameter space curve More...
 
ON_3dPoint m_point3d
 3d intersection point More...
 
ON_3dPoint m_pointA
 2d surfaceA parameter space point with z = 0 More...
 
ON_3dPoint m_pointB
 2d surfaceB parameter space point with z = 0 More...
 
TYPE m_type
 
ON_U m_user
 

Detailed Description

The ON_SSX_EVENT class is used to report surface-surface intersection events.

Member Enumeration Documentation

◆ TYPE

enum ON_SSX_EVENT::TYPE : unsigned int
strong
Enumerator
unset 
transverse 

transverse surface-surface intersection curve

tangent 

tangent surface-surface intersection curve

overlap 

overlap surface-surface intersection curve

transverse_point 

transverse surface-surface intersection point

tangent_point 

tangent surface-surface intersection point

unknown 

an intersection exists, but is of unknown type

none 

no intersection exits

Constructor & Destructor Documentation

◆ ON_SSX_EVENT() [1/2]

ON_SSX_EVENT::ON_SSX_EVENT ( )

NO VIRTUAL FUNCTIONS IN THIS CLASS.

◆ ~ON_SSX_EVENT()

ON_SSX_EVENT::~ON_SSX_EVENT ( )

deletes m_curveA, m_curveB, m_curve3d

◆ ON_SSX_EVENT() [2/2]

ON_SSX_EVENT::ON_SSX_EVENT ( const ON_SSX_EVENT )

copies m_curveA, m_curveB, m_curve3d

Member Function Documentation

◆ Dump()

void ON_SSX_EVENT::Dump ( ON_TextLog text_log) const

◆ IsCurveEvent()

bool ON_SSX_EVENT::IsCurveEvent ( ) const

Returns: True if m_type is ssx_transverse or ssx_tangent. See Also: ON_SSX_EVENT::IsPointEvent ON_SSX_EVENT::IsTinyEvent

◆ IsOverlapEvent()

bool ON_SSX_EVENT::IsOverlapEvent ( ) const

Returns: True if m_type is ssx_overlap.

◆ IsPointEvent()

bool ON_SSX_EVENT::IsPointEvent ( ) const

Returns: True if m_type is ssx_transverse_point or ssx_tangent_point. See Also: ON_SSX_EVENT::IsCurveEvent ON_SSX_EVENT::IsTinyEvent

◆ IsTangentEvent()

bool ON_SSX_EVENT::IsTangentEvent ( ) const

Returns: True if m_type is ssx_tangent, or ssx_tangent_point.

◆ IsTinyEvent()

bool ON_SSX_EVENT::IsTinyEvent ( double  tiny_tolerance) const

Description: This function can be used to detect intersection events that are "nearly" points. Parameters: tiny_tolerance - [in] Returns: True if m_type is ssx_transverse_point or ssx_tangent_point, or, m_type is ssx_transverse, ssx_tangent or ssx_overlap and length of the longest side of m_curve3d's bounding box is <= tiny_tolerance. See Also: ON_SSX_EVENT::IsPointEvent ON_SSX_EVENT::IsCurveEvent

◆ IsValid()

bool ON_SSX_EVENT::IsValid ( ON_TextLog text_log,
double  intersection_tolerance,
double  overlap_tolerance,
double  fitting_tolerance,
const class ON_Surface surfaceA,
const class ON_Interval surfaceA_domain0,
const class ON_Interval surfaceA_domain1,
const class ON_Surface surfaceB,
const class ON_Interval surfaceB_domain0,
const class ON_Interval surfaceB_domain1 
) const

Description: Check intersection event values to make sure they are valid. Parameters: text_log - [in] If not null and an error is found, then a description of the error is printed to text_log. intersection_tolerance - [in] 0.0 or value used in intersection calculation. overlap_tolerance - [in] 0.0 or value used in intersection calculation. fitting_tolerance - [in] 0.0 or value used in intersection calculation. surfaceA - [in] nullptr or surfaceA passed to intersection calculation. surfaceA_domain0 - [in] nullptr or surfaceA "u" domain used in intersection calculation. surfaceA_domain1 - [in] nullptr or surfaceA "v" domain used in intersection calculation. surfaceB - [in] nullptr or surfaceB passed to intersection calculation. surfaceB_domain0 - [in] nullptr or surfaceB "u" domain used in intersection calculation. surfaceB_domain1 - [in] nullptr or surfaceB "v" domain used in intersection calculation. Returns: True if event is valid.

◆ operator=()

ON_SSX_EVENT& ON_SSX_EVENT::operator= ( const ON_SSX_EVENT src)

copies m_curveA, m_curveB, m_curve3d

Member Data Documentation

◆ m_curve3d

ON_Curve* ON_SSX_EVENT::m_curve3d

3d surface B parameter space curve

◆ m_curveA

ON_Curve* ON_SSX_EVENT::m_curveA

2d surface A parameter space curve

If m_type = ssx_transverse, ssx_tangent, or ssx_overlap, then the intersection curves are returned here.
In all cases the 3 curves are compatibly oriented. For ssx_transverse events, the 3d curve direction agrees with SurfaceNormalB x SurfaceNormalA For ssx_tangent events, the orientation is random. For ssx_overlap events, the overlap is to the left of m_curveA. These curves are deleted by ~ON_SSX_EVENT(). If you want to harvest a curve for long term use, set the pointer to nullptr.

◆ m_curveB

ON_Curve* ON_SSX_EVENT::m_curveB

2d surface B parameter space curve

◆ m_point3d

ON_3dPoint ON_SSX_EVENT::m_point3d

3d intersection point

◆ m_pointA

ON_3dPoint ON_SSX_EVENT::m_pointA

2d surfaceA parameter space point with z = 0

If m_type = ssx_transverse_point or ssx_tangent_point, the the points are returned here

◆ m_pointB

ON_3dPoint ON_SSX_EVENT::m_pointB

2d surfaceB parameter space point with z = 0

◆ m_type

TYPE ON_SSX_EVENT::m_type

◆ m_user

ON_U ON_SSX_EVENT::m_user

This field is a scratch field for users. The constructor sets it to zero and the intersectors never use it.