Rhino C++ API  8.4
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
ON_SubDEdgePtr Class Reference

#include <opennurbs_subd.h>

Public Member Functions

bool ClearMark () const
 
ON__UINT8 ClearMarkBits () const
 
void ClearSavedSubdivisionPoints () const
 
void ClearSavedSubdivisionPoints (bool bClearNeighborhood) const
 
class ON_SubDEdgeEdge () const
 
ON__UINT_PTR EdgeDirection () const
 
const class ON_SubDFaceEdgeFace (int edge_face_index) const
 Get the edge's face ignoring orientation. More...
 
unsigned int EdgeFaceCount () const
 
unsigned int EdgeId () const
 
bool EdgeIsCrease () const
 
bool EdgeIsCreaseOrSharp () const
 
bool EdgeIsDartCrease () const
 
bool EdgeIsHardCrease () const
 
bool EdgeIsSharp () const
 
bool EdgeIsSmooth () const
 
bool EdgeIsSmoothNotSharp () const
 
ON_NurbsCurveEdgeSurfaceCurve (bool bClampEndKnots, ON_NurbsCurve *destination) const
 
ON_SubDEdgeTag EdgeTag () const
 
ON_SubDEdgeType EdgeType () const
 EdgeType() is typically used to generate text descriptions and in selection filtering. Do not confuse EdgeType() and EdgeTag(). More...
 
unsigned int GetEdgeSurfaceCurveControlPoints (ON_3dPoint *cvs, size_t cv_capacity) const
 
bool HasInteriorEdgeTopology (bool bRequireOppositeFaceDirections) const
 
bool IsActive () const
 
bool IsNotNull () const
 
bool IsNotNullAndVerticesAreNotNull () const
 
bool IsNull () const
 
bool Mark () const
 
ON__UINT8 MarkBits () const
 
const ON_SubDFaceNeighborFace (const ON_SubDFace *face, bool bStopAtCrease) const
 
const ON_3dVector RelativeControlNetDirection () const
 
const ON_Line RelativeControlNetLine () const
 
const ON_3dPoint RelativeControlNetPoint (int relative_vertex_index) const
 
const ON_3dVector RelativeDirection () const
 
const class ON_SubDFaceRelativeFace (int relative_face_index) const
 
bool RelativeFaceMark (int relative_face_index, bool missing_face_return_value) const
 
ON__UINT8 RelativeFaceMarkBits (int relative_face_index, ON__UINT8 missing_face_return_value) const
 
const ON_3dPoint RelativePointAt (double normalized_edge_parameter, ON_SubDComponentLocation subd_appearance) const
 
double RelativeSectorCoefficient (int relative_vertex_index) const
 
const ON_SubDEdgeSharpness RelativeSharpness (bool bUseCreaseSharpness) const
 Edge sharpness oriented with respect to this ON_SubDEdgePointer's direction. More...
 
const class ON_SubDVertexRelativeVertex (int relative_vertex_index) const
 
unsigned RelativeVertexId (int relative_vertex_index) const
 
bool RelativeVertexMark (int relative_vertex_index, bool missing_vertex_return_value) const
 
ON__UINT8 RelativeVertexMarkBits (int relative_vertex_index, ON__UINT8 missing_vertex_return_value) const
 
const ON_3dPoint RelativeVertexPoint (int relative_vertex_index, ON_SubDComponentLocation point_location) const
 
const ON_3dPoint RelativeVertexSurfacePoint (int relative_vertex_index) const
 
ON_SubDVertexTag RelativeVertexTag (int relative_vertex_index) const
 
const ON_SubDEdgePtr Reversed () const
 
bool SetMark () const
 
bool SetMark (bool bMark) const
 
ON__UINT8 SetMarkBits (ON__UINT8 mark_bits) const
 
void SetRelativeSectorCoefficientForExperts (int relative_vertex_index, double relative_sector_coefficient) const
 
void SetRelativeSharpness (ON_SubDEdgeSharpness relative_sharpness) const
 
const ON_ComponentStatus Status () const
 
const ON_3dPoint SubdivisionPoint () const
 Get the SubD edge Catmull-Clark subdivision point. More...
 

Static Public Member Functions

static const ON_SubDEdgePtr Create (const class ON_SubDComponentPtr &edge_component)
 
static const ON_SubDEdgePtr Create (const class ON_SubDEdge *edge)
 
static const ON_SubDEdgePtr Create (const class ON_SubDEdge *edge, ON__UINT_PTR direction)
 
static const ON_SubDEdgePtr Create (const class ON_SubDVertex *v0, const class ON_SubDVertex *v1)
 
static const ON_SubDEdgePtr CreateFromEndVertex (const class ON_SubDEdge *edge, const ON_SubDVertex *end_vertex)
 
static const ON_SubDEdgePtr CreateFromStartVertex (const class ON_SubDEdge *edge, const ON_SubDVertex *start_vertex)
 

Public Attributes

ON__UINT_PTR m_ptr
 

Static Public Attributes

static const ON_SubDEdgePtr Null
 

Member Function Documentation

◆ ClearMark()

bool ON_SubDEdgePtr::ClearMark ( ) const

Description: Clears (sets to false) the value of the component mark. Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state. Returns: Input value of Mark().

◆ ClearMarkBits()

ON__UINT8 ON_SubDEdgePtr::ClearMarkBits ( ) const

◆ ClearSavedSubdivisionPoints() [1/2]

void ON_SubDEdgePtr::ClearSavedSubdivisionPoints ( ) const

◆ ClearSavedSubdivisionPoints() [2/2]

void ON_SubDEdgePtr::ClearSavedSubdivisionPoints ( bool  bClearNeighborhood) const

Description: Clears saved subdivision and limit surface information for this component. Parameters: bClearNeighborhood - [in] If true, all components attached to this component are also cleared.

◆ Create() [1/4]

static const ON_SubDEdgePtr ON_SubDEdgePtr::Create ( const class ON_SubDComponentPtr edge_component)
static

◆ Create() [2/4]

static const ON_SubDEdgePtr ON_SubDEdgePtr::Create ( const class ON_SubDEdge edge)
static

Parameters: edge - [in] Returns: An ON_SubDEdgePtr pointing at edge with direction = 0 (not reversed).

◆ Create() [3/4]

static const ON_SubDEdgePtr ON_SubDEdgePtr::Create ( const class ON_SubDEdge edge,
ON__UINT_PTR  direction 
)
static

Parameters: edge - [in] direction - [in] 0: not reversed 1: reversed Returns: An ON_SubDEdgePtr pointing at edge with the specified direction.

◆ Create() [4/4]

static const ON_SubDEdgePtr ON_SubDEdgePtr::Create ( const class ON_SubDVertex v0,
const class ON_SubDVertex v1 
)
static

Parameters: v0 - [in] v1 - [in] Returns: If there is an edge connecting v0 and v1, then an ON_SubDEdgePtr pointing to that edge and oriented from v0 to v1 is returned. Otherwise ON_SubDEdgePtr::Null is returned.

◆ CreateFromEndVertex()

static const ON_SubDEdgePtr ON_SubDEdgePtr::CreateFromEndVertex ( const class ON_SubDEdge edge,
const ON_SubDVertex end_vertex 
)
static

Parameters: edge - [in] end_vertex - [in] One of the edge's vertices. Returns: An ON_SubDEdgePtr pointing at edge with RelativeVertex(1) = end_vertex.

◆ CreateFromStartVertex()

static const ON_SubDEdgePtr ON_SubDEdgePtr::CreateFromStartVertex ( const class ON_SubDEdge edge,
const ON_SubDVertex start_vertex 
)
static

Parameters: edge - [in] start_vertex - [in] One of the edge's vertices. Returns: An ON_SubDEdgePtr pointing at edge with RelativeVertex(0) = start_vertex.

◆ Edge()

class ON_SubDEdge* ON_SubDEdgePtr::Edge ( ) const

Returns: The ON_SubDEdge this points at.

◆ EdgeDirection()

ON__UINT_PTR ON_SubDEdgePtr::EdgeDirection ( ) const

Returns: 0: this ON_SubDEdgePtr is oriented from Edge()->Vertex(0) to Edge()->Vertex(1). 1: this ON_SubDEdgePtr is oriented from Edge()->Vertex(1) to Edge()->Vertex(0).

◆ EdgeFace()

const class ON_SubDFace* ON_SubDEdgePtr::EdgeFace ( int  edge_face_index) const

Get the edge's face ignoring orientation.

Parameters
edge_face_indexON_SubDEdge face index.
Returns
If this->Edge() is not nullptr, then this->Edge()->Face(edge_face_index) is returned. Otherwise nullptr is returned.

◆ EdgeFaceCount()

unsigned int ON_SubDEdgePtr::EdgeFaceCount ( ) const

Returns: If Edge() is not nullptr, Edge()->FaceCount() is returned. Otherwise, 0 is returned.

◆ EdgeId()

unsigned int ON_SubDEdgePtr::EdgeId ( ) const

Returns: If Edge() is not nullptr, Edge()->m_id is returned. Otherwise, 0 is returned.

◆ EdgeIsCrease()

bool ON_SubDEdgePtr::EdgeIsCrease ( ) const

Returns: If Edge() is not nullptr, Edge()->IsCrease() is returned. Otherwise, false is returned.

◆ EdgeIsCreaseOrSharp()

bool ON_SubDEdgePtr::EdgeIsCreaseOrSharp ( ) const

Returns: If Edge() is not nullptr, Edge()->IsCreaseOrSharp() is returned. Otherwise, false is returned.

◆ EdgeIsDartCrease()

bool ON_SubDEdgePtr::EdgeIsDartCrease ( ) const

Returns: If Edge() is not nullptr, Edge()->IsDartCrease() is returned. Otherwise, false is returned.

◆ EdgeIsHardCrease()

bool ON_SubDEdgePtr::EdgeIsHardCrease ( ) const

Returns: If Edge() is not nullptr, Edge()->IsHardCrease() is returned. Otherwise, false is returned.

◆ EdgeIsSharp()

bool ON_SubDEdgePtr::EdgeIsSharp ( ) const

Returns: If Edge() is not nullptr, Edge()->IsSharp() is returned. Otherwise, false is returned.

◆ EdgeIsSmooth()

bool ON_SubDEdgePtr::EdgeIsSmooth ( ) const

Returns: If Edge() is not nullptr, Edge()->IsSmooth() is returned. Otherwise, false is returned.

◆ EdgeIsSmoothNotSharp()

bool ON_SubDEdgePtr::EdgeIsSmoothNotSharp ( ) const

Returns: If Edge() is not nullptr, Edge()->IsSmoothNotSharp() is returned. Otherwise, false is returned.

◆ EdgeSurfaceCurve()

ON_NurbsCurve* ON_SubDEdgePtr::EdgeSurfaceCurve ( bool  bClampEndKnots,
ON_NurbsCurve destination 
) const

Description: Get a cubic, uniform, nonrational, NURBS curve that is on the edge's limit curve with this->EdgeDirection() taken into account. Parameters: bClampEndKnots - [] If true, the end knots are clamped. Otherwise the end knots are (-2,-1,0,....,k1,k1+1,k1+2). destination - [in] If not nullptr, then the curve is created in this instance. Returns: A pointer to the curve or nullptr if the edge is not valid.

◆ EdgeTag()

ON_SubDEdgeTag ON_SubDEdgePtr::EdgeTag ( ) const

Returns: If Edge() is not nullptr, Edge()->m_edge_tag is returned. Otherwise, ON_SubDEdgeTag::Unset is returned.

◆ EdgeType()

ON_SubDEdgeType ON_SubDEdgePtr::EdgeType ( ) const

EdgeType() is typically used to generate text descriptions and in selection filtering. Do not confuse EdgeType() and EdgeTag().

Returns
If Edge() is not nullptr, then Edge()->EdgeType() is returned. Otherwise, ON_SubDEdgeType::Unset is returned.

◆ GetEdgeSurfaceCurveControlPoints()

unsigned int ON_SubDEdgePtr::GetEdgeSurfaceCurveControlPoints ( ON_3dPoint cvs,
size_t  cv_capacity 
) const

Description: Get limit curve control points with this->EdgeDirection() taken into account. Returns: 0 - failed. 4, 5, 7, 11: Number of cvs for a cubic uniform nonrational NURBS curve with (cv_count+2) knots = (-2,-1,0,1,2,3,4,5,6,7,8,9,10). Remarks: For exceptional cases,

◆ HasInteriorEdgeTopology()

bool ON_SubDEdgePtr::HasInteriorEdgeTopology ( bool  bRequireOppositeFaceDirections) const

Returns: If Edge() is not nullptr, Edge()->HasInteriorEdgeTopology(bRequireOppositeFaceDirections) is returned. Otherwise, false is returned.

◆ IsActive()

bool ON_SubDEdgePtr::IsActive ( ) const

Returns: True if this edge is active in its parent subd or other relevant context. Remarks: When a component is in use, IsActive() = true. If was used and then deleted, IsActive() is false.

◆ IsNotNull()

bool ON_SubDEdgePtr::IsNotNull ( ) const

Returns: True if this->Edge() is not nullptr.

◆ IsNotNullAndVerticesAreNotNull()

bool ON_SubDEdgePtr::IsNotNullAndVerticesAreNotNull ( ) const

Returns: True if this->Edge() is not nullptr and both vertex pointers are not null as well.

◆ IsNull()

bool ON_SubDEdgePtr::IsNull ( ) const

Returns: True if this->Edge() is nullptr.

◆ Mark()

bool ON_SubDEdgePtr::Mark ( ) const

Returns: The current value of the component mark ( m_status->RuntimeMark() ). Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state.

◆ MarkBits()

ON__UINT8 ON_SubDEdgePtr::MarkBits ( ) const

◆ NeighborFace()

const ON_SubDFace* ON_SubDEdgePtr::NeighborFace ( const ON_SubDFace face,
bool  bStopAtCrease 
) const

Description: Return the neighboring face. Parameters: face - [in] A face attached to this edge. bStopAtCrease - [in] If true and if m_edge_tag = ON_SubDEdgeTag::Crease, then nullptr is returned. Returns: If the m_face_count = 2, m_edge_tag is smooth or x or passes the crease tag test, one of m_face2[0,1] points a face, then the neighboring face is returned. In any other case, nullptr is returned.

◆ RelativeControlNetDirection()

const ON_3dVector ON_SubDEdgePtr::RelativeControlNetDirection ( ) const

◆ RelativeControlNetLine()

const ON_Line ON_SubDEdgePtr::RelativeControlNetLine ( ) const

◆ RelativeControlNetPoint()

const ON_3dPoint ON_SubDEdgePtr::RelativeControlNetPoint ( int  relative_vertex_index) const

Parameters: relative_vertex_index - [in] 0: return Edge()->Vertex(EdgeDirection()) 1: return Edge()->Vertex(1-EdgeDirection()) Returns: The requested vertex control net point with EdgeDirection() taken into account. ON_3dPoint::NanPoint if relative_vertex_index, Edge() is nullptr, or Edge()->Vertex() is nullptr.

◆ RelativeDirection()

const ON_3dVector ON_SubDEdgePtr::RelativeDirection ( ) const

Returns: The vector from RelativeVertex(0)->ControlNetPoint() to RelativeVertex(1)->ControlNetPoint(), or ON_3dVector::NanVector if the relative vertex pointers are nullptr.

◆ RelativeFace()

const class ON_SubDFace* ON_SubDEdgePtr::RelativeFace ( int  relative_face_index) const

Description: Get the face on the left or right side of an oriented manifold or boundary edge. A face is on the "left side" if this ON_SubDEdgePtr is oriented so it points in the same direction as the face's oriented boundary. A face is on the "right side" if this ON_SubDEdgePtr is oriented so it points in the opposite direction as the face's oriented boundary. If an edge is nonmanifold (3 or more faces), then nullptr is always returned. If an edge has two faces that do not attach to this edge with opposite orientations (nonoriented manifold edge), then nullptr is returned.
Parameters: relative_face_index - [in] 0: return face on the left side of the edge with respect to EdgeOrientation(). 1: return face on the right side of the edge with respect to EdgeOrientation(). Returns: The requested face.

◆ RelativeFaceMark()

bool ON_SubDEdgePtr::RelativeFaceMark ( int  relative_face_index,
bool  missing_face_return_value 
) const

Returns: this->RelativeFace(relative_face_index)->Mark();

◆ RelativeFaceMarkBits()

ON__UINT8 ON_SubDEdgePtr::RelativeFaceMarkBits ( int  relative_face_index,
ON__UINT8  missing_face_return_value 
) const

Returns: this->RelativeFace(relative_face_index)->MarkBits();

◆ RelativePointAt()

const ON_3dPoint ON_SubDEdgePtr::RelativePointAt ( double  normalized_edge_parameter,
ON_SubDComponentLocation  subd_appearance 
) const

◆ RelativeSectorCoefficient()

double ON_SubDEdgePtr::RelativeSectorCoefficient ( int  relative_vertex_index) const

Description: The sector coefficient is a property of a smooth edge end that is attached to a dart, crease, or corner vertex. In all other cases the sector coefficient is ignored. The value of the sector coefficient is constant throughout subdivision.
Every smooth edge in a sector has the same sector coefficient at the central vertex. Parameters: relative_vertex_index - [in] Returns: If Edge() not nullptr, then If (relative_vertex_index = 0), returns Edge()->m_sector_coefficient(EdgeDirection()) If (relative_vertex_index = 0), returns Edge()->m_sector_coefficient(1-EdgeDirection()) Otherwise ON_SubDSectorType::ErrorSectorCoefficient is returned. Remarks: The name "sector coefficient" is used because is is a property of the vertex's sector (every edge in vertex sector has the same value at the tagged vertex). The sector coefficient does not change when a subdivision is applied.

◆ RelativeSharpness()

const ON_SubDEdgeSharpness ON_SubDEdgePtr::RelativeSharpness ( bool  bUseCreaseSharpness) const

Edge sharpness oriented with respect to this ON_SubDEdgePointer's direction.

Parameters
bUseCreaseSharpnessIf the edge is a crease and bUseCreaseSharpness is false, then ON_SubDEdgeSharpness::Smooth is returned. If the edge is a crease and bUseCreaseSharpness is true, then ON_SubDEdgeSharpness::Crease is returned.
Returns

◆ RelativeVertex()

const class ON_SubDVertex* ON_SubDEdgePtr::RelativeVertex ( int  relative_vertex_index) const

Parameters: relative_vertex_index - [in] 0: return Edge()->Vertex(EdgeDirection()) 1: return Edge()->Vertex(1-EdgeDirection()) Returns: The requested vertex with EdgeDirection() taken into account. nullptr if relative_vertex_index, Edge() is nullptr, or Edge()->Vertex() is nullptr.

◆ RelativeVertexId()

unsigned ON_SubDEdgePtr::RelativeVertexId ( int  relative_vertex_index) const

Parameters: relative_vertex_index - [in] 0: return Edge()->Vertex(EdgeDirection()) 1: return Edge()->Vertex(1-EdgeDirection()) Returns: The requested id of the vertex with EdgeDirection() taken into account. 0 if relative_vertex_index, Edge() is nullptr, or Edge()->Vertex() is nullptr.

◆ RelativeVertexMark()

bool ON_SubDEdgePtr::RelativeVertexMark ( int  relative_vertex_index,
bool  missing_vertex_return_value 
) const

◆ RelativeVertexMarkBits()

ON__UINT8 ON_SubDEdgePtr::RelativeVertexMarkBits ( int  relative_vertex_index,
ON__UINT8  missing_vertex_return_value 
) const

◆ RelativeVertexPoint()

const ON_3dPoint ON_SubDEdgePtr::RelativeVertexPoint ( int  relative_vertex_index,
ON_SubDComponentLocation  point_location 
) const

Parameters: relative_vertex_index - [in] 0: return Edge()->Vertex(EdgeDirection())->Point(point_location) 1: return Edge()->Vertex(1-EdgeDirection())->Point(point_location) point_location - [in] Used to select control net or limit surface point. Returns: The requested vertex point with with EdgeDirection() taken into account. ON_3dPoint::NanPoint if relative_vertex_index, Edge() is nullptr, or Edge()->Vertex() is nullptr.

◆ RelativeVertexSurfacePoint()

const ON_3dPoint ON_SubDEdgePtr::RelativeVertexSurfacePoint ( int  relative_vertex_index) const

Parameters: relative_vertex_index - [in] 0: return Edge()->Vertex(EdgeDirection())->SurfacePoint() 1: return Edge()->Vertex(1-EdgeDirection())->SurfacePoint() Returns: The requested vertex surface point with EdgeDirection() taken into account. ON_3dPoint::NanPoint if relative_vertex_index, Edge() is nullptr, or Edge()->Vertex() is nullptr.

◆ RelativeVertexTag()

ON_SubDVertexTag ON_SubDEdgePtr::RelativeVertexTag ( int  relative_vertex_index) const

Parameters: relative_vertex_index - [in] 0: return Edge()->Vertex(EdgeDirection())->m_vertex_tag 1: return Edge()->Vertex(1-EdgeDirection())->m_vertex_tag Returns: The requested vertex with EdgeDirection() taken into account. If Edge() or Edge()->Vertex(EdgeDirection()) is nullptr, then ON_SubDVertexTag::Unset is returned.

◆ Reversed()

const ON_SubDEdgePtr ON_SubDEdgePtr::Reversed ( ) const

Returns: A ON_SubDEdgePtr pointing at the same edge with the direction reversed from this.

◆ SetMark() [1/2]

bool ON_SubDEdgePtr::SetMark ( ) const

Description: Sets (sets to true) the value of the component mark. Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state. Returns: Input value of Mark().

◆ SetMark() [2/2]

bool ON_SubDEdgePtr::SetMark ( bool  bMark) const

Description: Sets the value of the component mark to bMark. Parameter: bMark - [in] Remarks: SubD components have a mutable runtime mark that can be used in any context where a single thread cares about the marks. It is widely used in many calculations to keep track of sets of components that are in a certain context specific state. Returns: Input value of Mark().

◆ SetMarkBits()

ON__UINT8 ON_SubDEdgePtr::SetMarkBits ( ON__UINT8  mark_bits) const

◆ SetRelativeSectorCoefficientForExperts()

void ON_SubDEdgePtr::SetRelativeSectorCoefficientForExperts ( int  relative_vertex_index,
double  relative_sector_coefficient 
) const

◆ SetRelativeSharpness()

void ON_SubDEdgePtr::SetRelativeSharpness ( ON_SubDEdgeSharpness  relative_sharpness) const

◆ Status()

const ON_ComponentStatus ON_SubDEdgePtr::Status ( ) const

Returns: this->Edge()->m_status.

◆ SubdivisionPoint()

const ON_3dPoint ON_SubDEdgePtr::SubdivisionPoint ( ) const

Get the SubD edge Catmull-Clark subdivision point.

Returns
Catmull-Clark edge subdivision point.

Member Data Documentation

◆ m_ptr

ON__UINT_PTR ON_SubDEdgePtr::m_ptr

For performance reasons, m_ptr is not initialized and no constructors are declared or implemented. If you require initialization, then use x = ON_SubDEdgePtr::Null or x = ON_SubDEdgePtr::Create(...).

◆ Null

const ON_SubDEdgePtr ON_SubDEdgePtr::Null
static