Rhino C++ API  7.21
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
ON_MeshXPoint Class Reference

#include <opennurbs_mesh.h>

Public Member Functions

 ON_MeshXPoint ()
 this class must not have a vtable. More...
 
int IsFacetCorner () const
 

Static Public Member Functions

static int Compare2dLocation (const ON_MeshXPoint *p, const ON_MeshXPoint *q)
 
static int Compare3dLocation (const ON_MeshXPoint *p, const ON_MeshXPoint *q)
 
static int Compare3dLocationAndId (const ON_MeshXPoint *p, const ON_MeshXPoint *q)
 
static int CompareLocationsAndId (const ON_MeshXPoint *p, const ON_MeshXPoint *q)
 
static int CompareNextPrev (const ON_MeshXPoint *p, const ON_MeshXPoint *q)
 
static int IsFacetEdge (const ON_MeshXPoint *p, const ON_MeshXPoint *q)
 

Public Attributes

double m_bc [4]
 
ON__UINT32 m_event_sn
 m_event_sn must immediately follow m_point. More...
 
unsigned int m_mesh_facet_index
 
ON__UINT_PTR m_mesh_id
 
unsigned int m_mesh_vertex_index
 
ON__UINT_PTR m_other_id
 
double m_other_parameter
 
class ON_MeshXPointm_p [2]
 (previous,next) More...
 
ON_3dPoint m_point
 m_point must be the first data member in this class. More...
 
ON__UINT16 m_point_status
 
ON_2dPoint m_S
 
ON__INT_PTR m_tag
 

Static Public Attributes

static const ON__UINT16 m_status_at_corner
 = 0x0010 More...
 
static const ON__UINT16 m_status_corner_mask
 = 0x001F More...
 
static const ON__UINT16 m_status_corner_value [4]
 = {0x0001,0x0002,0x0004,0x0008} More...
 
static const ON__UINT16 m_status_corner_value_mask
 = 0x000F More...
 
static const ON__UINT16 m_status_degenerate
 = 0x0100 More...
 
static const ON__UINT16 m_status_olap_edge_end
 = 0x0040 More...
 
static const ON__UINT16 m_status_olap_edge_mask
 = 0x0060 More...
 
static const ON__UINT16 m_status_olap_edge_start
 = 0x0020 More...
 
static const ON__UINT16 m_status_olap_facet_corner
 = 0x0080 More...
 

Friends

class ON_MeshXPointPool
 

Constructor & Destructor Documentation

◆ ON_MeshXPoint()

ON_MeshXPoint::ON_MeshXPoint ( )

this class must not have a vtable.

Member Function Documentation

◆ Compare2dLocation()

static int ON_MeshXPoint::Compare2dLocation ( const ON_MeshXPoint p,
const ON_MeshXPoint q 
)
static

Description: Dictionary compares the coordinates of m_S.

◆ Compare3dLocation()

static int ON_MeshXPoint::Compare3dLocation ( const ON_MeshXPoint p,
const ON_MeshXPoint q 
)
static

Description: Dictionary compares the coordinates of m_point.

◆ Compare3dLocationAndId()

static int ON_MeshXPoint::Compare3dLocationAndId ( const ON_MeshXPoint p,
const ON_MeshXPoint q 
)
static

Description: Dictionary the coordinates of m_point, then m_mesh_id.

◆ CompareLocationsAndId()

static int ON_MeshXPoint::CompareLocationsAndId ( const ON_MeshXPoint p,
const ON_MeshXPoint q 
)
static

Description: Dictionary the coordinates of m_point, then m_mesh_id, then the coordinates of m_S.

◆ CompareNextPrev()

static int ON_MeshXPoint::CompareNextPrev ( const ON_MeshXPoint p,
const ON_MeshXPoint q 
)
static

Description: Compares the next and previous pointers in m_p[]. (null,null) < (not null,null) < (null,not null) < (not null,not null)

◆ IsFacetCorner()

int ON_MeshXPoint::IsFacetCorner ( ) const

Returns: 0: not a facet corner 1: face.vi[0] corner 2: face.vi[1] corner 4: face.vi[2] corner 8: face.vi[3] corner

◆ IsFacetEdge()

static int ON_MeshXPoint::IsFacetEdge ( const ON_MeshXPoint p,
const ON_MeshXPoint q 
)
static

Parameters: p - [in] edge starting point q - [in] edge ending point
Returns: 0: (p,q) are not the ends of a mesh facet edge +3: (p,q) is the edge from face.vi[0] to face.vi[1]. -3: (p,q) is the edge from face.vi[1] to face.vi[0]. +5: (p,q) is the edge from face.vi[2] to face.vi[0]. -5: (p,q) is the edge from face.vi[0] to face.vi[2]. +9: (p,q) is the edge from face.vi[3] to face.vi[0]. -9: (p,q) is the edge from face.vi[0] to face.vi[3]. +6: (p,q) is the edge from face.vi[1] to face.vi[2]. -6: (p,q) is the edge from face.vi[2] to face.vi[1]. +10: (p,q) is the edge from face.vi[3] to face.vi[1]. -10: (p,q) is the edge from face.vi[1] to face.vi[3]. +12: (p,q) is the edge from face.vi[2] to face.vi[3]. -12: (p,q) is the edge from face.vi[3] to face.vi[2].

Friends And Related Function Documentation

◆ ON_MeshXPointPool

friend class ON_MeshXPointPool
friend

Member Data Documentation

◆ m_bc

double ON_MeshXPoint::m_bc[4]

The values of m_bc[] are the mesh facet's barycentric coordinates for the point.

◆ m_event_sn

ON__UINT32 ON_MeshXPoint::m_event_sn

m_event_sn must immediately follow m_point.

◆ m_mesh_facet_index

unsigned int ON_MeshXPoint::m_mesh_facet_index

◆ m_mesh_id

ON__UINT_PTR ON_MeshXPoint::m_mesh_id

◆ m_mesh_vertex_index

unsigned int ON_MeshXPoint::m_mesh_vertex_index

If (0x0F & m_status_bits) = 1, 2, 4 or 8, then m_mesh_vertex_index = index of the mesh's vertex.

◆ m_other_id

ON__UINT_PTR ON_MeshXPoint::m_other_id

◆ m_other_parameter

double ON_MeshXPoint::m_other_parameter

The interpretation of m_other_id depends on what created the ON_MeshXPoint. ON_MeshXPlane::IntersectLine(): m_other_id = line_id ON_MeshXPlane::IntersectPlane(): m_other_id = plane_id

◆ m_p

class ON_MeshXPoint* ON_MeshXPoint::m_p[2]

(previous,next)

The m_p[] pointers are used as previous and next pointers when connecting events in an intersection component. See ON_MeshXPoint::JoinPoints() for more details.

◆ m_point

ON_3dPoint ON_MeshXPoint::m_point

m_point must be the first data member in this class.

◆ m_point_status

ON__UINT16 ON_MeshXPoint::m_point_status

The bits of (m_status_corner_mask & m_point_status) are set to identify the corner or edge of the facet the mesh-plane intersection point lies on. Below "Cn" identifies a corner of the facet: Cn = mesh.m_V[face.vi[n]], n = 0, 1, 2 or 3.

(1 & m_point_status): set if C0 is an end point (2 & m_point_status): set if C1 is an end point (4 & m_point_status): set if C2 is an end point (8 & m_point_status): set if C3 is an end point (1 | 2): point is interior to the facet edge connecting C0 and C1 (2 | 4): point is interior to the facet edge connecting C1 and C2 (4 | 8): point is interior to the quad edge connecting C2 and C3 (1 | 8): point is interior to the quad edge connecting C3 and C0 (1 | 4): point is interior to the triangle edge connecting C0 and C2

(0x10 & m_point_status): set if the point is a corner point (not interior).

The bits of (m_status_olap_mask & m_point_status) reports overlap conditions.

(m_status_olap_facet & m_point_status): set if the point is the corner of a facet that is in the plane. (m_status_edge_01 & m_point_status): set if the facet edge connecting C0 and C1 is in the plane and the point is at the start or end of this facet edge. (m_status_edge_12 & m_point_status): set if the facet edge connecting C1 and C2 is in the plane and the point is at the start or end of this facet edge. (m_status_edge_23 & m_point_status): set if the quad facet edge connecting C2 and C3 is in the plane and the point is at the start or end of this edge. (m_status_edge_30 & m_point_status): set if the quad facet edge connecting C3 and C0 is in the plane and the point is at the start or end of this edge. (m_status_edge_20 & m_point_status): set if the triangle facet edge connecting C2 and C0 is in the plane and the point is at the start or end of this edge.

◆ m_S

ON_2dPoint ON_MeshXPoint::m_S

Surface parameters If no surface parameters are on the mesh, m_S = (0.0,0.0).

◆ m_status_at_corner

const ON__UINT16 ON_MeshXPoint::m_status_at_corner
static

= 0x0010

◆ m_status_corner_mask

const ON__UINT16 ON_MeshXPoint::m_status_corner_mask
static

= 0x001F

◆ m_status_corner_value

const ON__UINT16 ON_MeshXPoint::m_status_corner_value[4]
static

= {0x0001,0x0002,0x0004,0x0008}

◆ m_status_corner_value_mask

const ON__UINT16 ON_MeshXPoint::m_status_corner_value_mask
static

= 0x000F

◆ m_status_degenerate

const ON__UINT16 ON_MeshXPoint::m_status_degenerate
static

= 0x0100

◆ m_status_olap_edge_end

const ON__UINT16 ON_MeshXPoint::m_status_olap_edge_end
static

= 0x0040

◆ m_status_olap_edge_mask

const ON__UINT16 ON_MeshXPoint::m_status_olap_edge_mask
static

= 0x0060

◆ m_status_olap_edge_start

const ON__UINT16 ON_MeshXPoint::m_status_olap_edge_start
static

= 0x0020

◆ m_status_olap_facet_corner

const ON__UINT16 ON_MeshXPoint::m_status_olap_facet_corner
static

= 0x0080

◆ m_tag

ON__INT_PTR ON_MeshXPoint::m_tag

The "m_tag" field is set to zero when an ON_MeshXPoint is created and when it is destroyed. It is copied when an ON_MeshXPoint class is copied. Nothing else in opennurbs modifies or uses this value.