Rhino C++ API  8.10
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
ON_SubDVertex Class Reference

#include <opennurbs_subd.h>

Inheritance diagram for ON_SubDVertex:
ON_SubDComponentBase

Public Types

enum  : unsigned int { MaximumEdgeCount = 0xFFF0U, MaximumFaceCount = 0xFFF0U }
 

Public Member Functions

 ON_SubDVertex ()=default
 
 ON_SubDVertex (const ON_SubDVertex &)=default
 
 ~ON_SubDVertex ()=default
 
const ON_SubDComponentPtrPair BoundaryEdgePair () const
 
const ON_BoundingBox BoundingBox (ON_SubDComponentLocation subd_appearance, const ON_SubD &subd) const
 
bool ClearEdgeMarks () const
 
bool ClearFaceMarks () const
 
void ClearSavedSubdivisionPoints () const
 
void ClearSavedSubdivisionPoints (bool bClearNeighborhood) const
 
void ClearSavedSurfacePoints () const
 
const ON_COMPONENT_INDEX ComponentIndex () const
 
const ON_SubDComponentPtr ComponentPtr () const
 
ON_BoundingBox ControlNetBoundingBox () const
 
const ON_3dPoint ControlNetPoint () const
 
const ON_SubDEdgePtr CreasedEdge (bool bInteriorEdgesOnly) const
 
const unsigned int CreasedEdgeCount () const
 
const unsigned int CreasedEdgeCount (bool bCountInteriorCreases, bool bCountBoundaryCreases, bool bCountNonmanifoldCreases, bool bCountWireCreases) const
 
const ON_SubDComponentPtrPair CreasedEdgePair (bool bInteriorEdgesOnly) const
 
const ON_3dPoint DoubleSubdivisionPoint () const
 Get the location of the subdivision point of the vertex's subdivision vertex. More...
 
const class ON_SubDEdgeEdge (unsigned int i) const
 
unsigned int EdgeArrayIndex (const ON_SubDEdge *edge) const
 
unsigned int EdgeCount () const
 
*unsigned int EdgeCount (ON_SubDEdgeTag edge_tag) const
 
ON__UINT_PTR EdgeDirection (unsigned int i) const
 
const ON_SubDVertexEdgeProperties EdgeProperties () const
 
const ON_SubDEdgePtr EdgePtr (unsigned int i) const
 
bool EvaluateCatmullClarkSubdivisionPoint (double subdivision_point[3]) const
 
const class ON_SubDFaceFace (unsigned int i) const
 
unsigned int FaceArrayIndex (const ON_SubDFace *face) const
 
unsigned int FaceCount () const
 
bool GetBoundaryVertexEdgeIndices (unsigned *vei0, unsigned *vei1) const
 
bool GetBoundaryVertexEdges (ON_SubDEdgePtr *eptr0, ON_SubDEdgePtr *eptr1) const
 
bool GetSavedSurfacePoint (double surface_point[3]) const
 
double GetSharpSubdivisionPoint (ON_3dPoint &sharp_subdivision_point) const
 Sharp vertices are smooth, crease or dart vertices attached to at least one sharp edge with nonzero sharpness at the vertex. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
double GetSharpSubdivisionPoint (unsigned &count, const ON_SubDVertex *v[3], double c[3]) const
 Sharp vertices are smooth, crease or dart vertices attached to at least one sharp edge with nonzero sharpness at the vertex. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
bool GetSubdivisionPoint (double subdivision_point[3]) const
 
bool GetSurfacePoint (const ON_SubDFace *sector_face, bool bUndefinedNormalIsPossible, class ON_SubDSectorSurfacePoint &limit_point) const
 
bool GetSurfacePoint (const ON_SubDFace *sector_face, class ON_SubDSectorSurfacePoint &limit_point) const
 
bool GetSurfacePoint (double surface_point[3]) const
 
bool HasBoundaryVertexTopology () const
 
bool HasInteriorVertexTopology () const
 
bool IsCorner () const
 
bool IsCrease () const
 
bool IsCreaseOrCorner () const
 
bool IsDart () const
 
bool IsDartOrCorner () const
 
bool IsDartOrCrease () const
 
bool IsDartOrCreaseOrCorner () const
 
bool IsManifoldBoundaryVertex () const
 
bool IsOneSectorCrease () const
 There are 2 configurations a valid crease vertex can have. More...
 
bool IsSharp (bool bEndCheck) const
 Sharp vertices are smooth, crease or dart vertices attached to at least one sharp edge. Note that when an edge has variable sharpness it can have zero sharpness at one end and nonzero shaprness at the other end. The bEndCheck parameter controls what type of sharpness query is performed. Note that the vertex subdivision point is affected by attached sharp edges when IsSharp(true) is is true (ON_Vertex::VertexSharpness() > 0). The vertex limit surface point is affected by edge sharpenss when IsSharp(false) is true. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
bool IsSingleSectorVertex () const
 
bool IsSmooth () const
 
bool IsSmoothOrCrease () const
 
bool IsSmoothOrDart () const
 
bool IsSmoothOrDartOrCrease () const
 
bool IsStandard () const
 
bool IsTwoSectorCrease () const
 There are 2 configurations a valid crease vertex can have. More...
 
unsigned int MarkedEdgeCount () const
 
unsigned int MarkedFaceCount () const
 
unsigned int MaximumEdgeFaceCount () const
 
unsigned int MaximumFaceEdgeCount () const
 
unsigned int MinimumEdgeFaceCount () const
 
unsigned int MinimumFaceEdgeCount () const
 
const ON_ComponentStatus NeighborhoodStatusLogicalOr (bool bIncludeEdges, bool bIncludeFaces) const
 
ON_SubDVertexoperator= (const ON_SubDVertex &)=default
 
const ON_3dPoint Point (ON_SubDComponentLocation subd_appearance) const
 
bool RemoveEdgeFromArray (const class ON_SubDEdge *f)
 
bool RemoveFaceFromArray (const class ON_SubDFace *f)
 
unsigned int ReplaceEdgeInArray (const ON_SubDEdge *old_edge, const ON_SubDEdgePtr new_edge)
 
unsigned int ReplaceFaceInArray (const ON_SubDFace *old_face, const ON_SubDFace *new_face)
 
const ON_SubDSectorSurfacePointSectorSurfacePointForExperts () const
 
bool SetControlNetPoint (ON_3dPoint control_net_point, bool bClearNeighborhoodCache)
 
bool SetSavedSurfacePoint (bool bUndefinedNormalIsPossible, const ON_SubDSectorSurfacePoint surface_point) const
 
unsigned int SharpEdgeCount (bool bCountCreasesAsSharp, bool bEndCheck) const
 Sharp vertices are smooth, crease or dart vertices attached to at least one sharp edge. Note that the end sharpness at a vertex can be zero. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
unsigned int SharpEdgeCount (bool bCountCreasesAsSharp, bool bEndCheck, ON_Interval &sharpness_range) const
 Get the range of sharpness values assigned to sharp edges and return the number of sharp edges. Sharp vertices are smooth, crease or dart vertices attached to at least one sharp edge with nonzero sharpness at the vertex. Note that the end sharpness at a vertex can be zero. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
*ON_SubD::VertexEdgeOrder SortEdges ()
 
const ON_3dPoint SubdivisionPoint () const
 
ON_SubDVertexTag SuggestedVertexTag (bool bApplyInputTagBias, bool bReturnBestGuessWhenInvalid) const
 
ON_BoundingBox SurfaceBoundingBox (const ON_SubD &subd) const
 
const ON_3dVector SurfaceNormal (const ON_SubDFace *sector_face, bool bUndefinedNormalPossible) const
 
const ON_3dPoint SurfacePoint () const
 
bool SurfacePointIsSet () const
 
ON__UINT32 TopologyCRC32 (bool bIncludeSubdivisionProperties) const
 Get a 32 bit CRC that is useful in detecting when a vertex's connections to attached edges or faces have been changed. More...
 
const ON_SHA1_Hash TopologyHash (bool bIncludeSubdivisionProperties) const
 Get a SHA-1 hash that is useful in detecting when a vertex's connections to attached edges or faces have been changed. See also ON_SubDVertex::TopologyCRC32() which, in practice, is just as reliable as the hash. More...
 
const ON_wString ToString (bool bIncludeControlNetPoint, bool bIncludeTopology) const
 
bool Transform (bool bTransformationSavedSubdivisionPoint, const class ON_Xform &xform)
 
bool Transform (bool bTransformationSavedSubdivisionPoint, const class ON_Xform &xform, const class ON_Xform &xformNormals)
 
void UnsetControlNetPoint ()
 Sets the control net point to ON_3dPoint::NanPoint and clears saved subdivision points. More...
 
void UnsetSectorCoefficientsForExperts (unsigned int relative_edge_end_dex) const
 
const ON_Plane VertexFrame (ON_SubDComponentLocation subd_appearance) const
 
unsigned int VertexId () const
 
void VertexModifiedNofification () const
 
double VertexSharpness () const
 Sharp vertices are smooth, crease or dart vertices attached to at least one sharp edge with nonzero end sharpness at the vertex. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
bool Write (class ON_BinaryArchive &archive) const
 
- Public Member Functions inherited from ON_SubDComponentBase
 ON_SubDComponentBase ()=default
 
 ON_SubDComponentBase (const ON_SubDComponentBase &)=default
 
 ~ON_SubDComponentBase ()=default
 
unsigned int ArchiveId () const
 
bool ClearMark () const
 
ON__UINT8 ClearMarkBits () const
 
void ClearSavedSubdivisionPoint () const
 
void ClearSubdivisionDisplacement () const
 
bool GetSavedSubdivisionPoint (double subdivision_point[3]) const
 
bool GetSubdivisionDisplacement (double *) const
 
bool InSymmetrySet () const
 
bool IsActive () const
 
bool IsSymmetrySetPrimaryMotif () const
 
bool Mark () const
 
ON__UINT8 MarkBits () const
 
ON_SubDComponentBaseoperator= (const ON_SubDComponentBase &)=default
 
const ON_3dPoint SavedSubdivisionPoint () const
 
bool SavedSubdivisionPointIsSet () const
 
void SetArchiveId (unsigned int archive_id) const
 
bool SetMark () const
 
bool SetMark (bool bMark) const
 
ON__UINT8 SetMarkBits (ON__UINT8 mark_bits) const
 
bool SetSavedSubdivisionPoint (const double subdivision_point[3]) const
 
bool SetSubdivisionDisplacement (const double *)
 
void SetSubdivisionLevel (unsigned level)
 
const ON_ComponentStatus Status () const
 
const ON_3dVector SubdivisionDisplacement () const
 
bool SubdivisionDisplacementIsNonzero () const
 
const unsigned SubdivisionLevel () const
 

Static Public Member Functions

static int CompareUnorderedEdges (const ON_SubDVertex *a, const ON_SubDVertex *b)
 
static int CompareUnorderedEdgesAndFaces (const ON_SubDVertex *a, const ON_SubDVertex *b)
 
static int CompareUnorderedFaces (const ON_SubDVertex *a, const ON_SubDVertex *b)
 
static bool Read (class ON_BinaryArchive &archive, class ON_SubD &subd, class ON_SubDVertex *&vertex)
 
- Static Public Member Functions inherited from ON_SubDComponentBase
static int CompareId (const ON_SubDComponentBase *lhs, const ON_SubDComponentBase *rhs)
 

Public Attributes

unsigned short m_edge_capacity = 0
 
unsigned short m_edge_count = 0
 
class ON_SubDEdgePtrm_edges = nullptr
 
unsigned short m_face_capacity = 0
 
unsigned short m_face_count = 0
 
const class ON_SubDFace ** m_faces = nullptr
 
const class ON_SubDVertexm_next_vertex = nullptr
 linked list of vertices on this level More...
 
double m_P [3]
 vertex control net location More...
 
const class ON_SubDVertexm_prev_vertex = nullptr
 m_prev_vertex, m_next_vertex must be the first data members of ON_SubDVertex More...
 
ON_SubDVertexTag m_vertex_tag = ON_SubDVertexTag::Unset
 
- Public Attributes inherited from ON_SubDComponentBase
unsigned int m_group_id = 0U
 
unsigned int m_id = 0
 
ON_ComponentStatus m_status = ON_ComponentStatus::NoneSet
 
const class ON_SubDVertexm_subd_point1 = nullptr
 

Static Public Attributes

static const ON_SubDVertex Empty
 
- Static Public Attributes inherited from ON_SubDComponentBase
static const ON_SubDComponentBase Unset
 

Friends

class ON_SubDArchiveIdMap
 
class ON_SubDEdge
 
class ON_SubDFace
 

Additional Inherited Members

- Protected Types inherited from ON_SubDComponentBase
enum  ModifiedFlags : unsigned char { Modified1Bit = 0x01, Modified2Bit = 0x02, ModifiedFlagsMask = 0x03 }
 
enum  SavedPointsFlags : unsigned char { SubdivisionPointBit = 0x40, SurfacePointBit = 0x80, CachedPointMask = 0xC0 }
 
- Protected Member Functions inherited from ON_SubDComponentBase
void CopyBaseFrom (const ON_SubDComponentBase *src, bool bCopySymmetrySetNext)
 
void Internal_ClearModifiedFlags () const
 
void Internal_ClearSubdivisionPointAndSurfacePointFlags () const
 
void Internal_ClearSubdivisionPointFlag () const
 
void Internal_ClearSurfacePointFlag () const
 
bool Internal_Modified1IsSet () const
 
bool Internal_Modified1or2IsSet () const
 
void Internal_SetModified1Flag () const
 
void Internal_SetModified2Flag () const
 
void Internal_SetSavedSurfacePointFlag (bool bSavedSurfacePointFlag) const
 
bool Internal_SubdivisionPointFlag () const
 
bool Internal_SurfacePointFlag () const
 
void Internal_TransformComponentBase (bool bTransformationSavedSubdivisionPoint, const class ON_Xform &xform)
 
- Protected Attributes inherited from ON_SubDComponentBase
unsigned char m_level = 0U
 
unsigned char m_saved_points_flags = 0U
 
double m_saved_subd_point1 [3]
 GetSubdivisionPoint( bUseSavedSubdivisionPoint=true ) can change the value of m_cache_subd_P. More...
 

Detailed Description

ON_SubDVertex