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_SubDEdge Class Reference

#include <opennurbs_subd.h>

Inheritance diagram for ON_SubDEdge:
ON_SubDComponentBase

Public Types

enum  : unsigned int { MaximumFaceCount = 0xFFF0U }
 

Public Member Functions

 ON_SubDEdge ()=default
 
 ON_SubDEdge (const ON_SubDEdge &)=default
 
 ~ON_SubDEdge ()=default
 
bool AddFaceToArray (ON_SubDFacePtr face_ptr)
 
const ON_SubDEdgeAdjacentEdge (unsigned int edge_vertex_index, unsigned int i) const
 
const ON_SubDEdgePtr AdjacentEdgePtr (unsigned int edge_vertex_index, unsigned int i) const
 
const ON_BoundingBox BoundingBox (ON_SubDComponentLocation subd_appearance, const ON_SubD &subd) const
 
const ON_Plane CenterFrame (ON_SubDComponentLocation subd_appearance) const
 
const ON_3dVector CenterNormal (ON_SubDComponentLocation subd_appearance, unsigned int edge_face_index) const
 
const ON_3dPoint CenterPoint (ON_SubDComponentLocation subd_appearance) const
 
void ClearSavedSubdivisionPoints () const
 
void ClearSavedSubdivisionPoints (bool bClearNeighborhood) const
 
bool ClearSharpnessForExperts ()
 This tool is for expert users and internal use. Use ON_SubD::ClearEdgeSharpness() to remove all sharp edges from a SubD. Sets the edge sharpness to ON_EdgeSharpness::Zero. More...
 
const ON_COMPONENT_INDEX ComponentIndex () const
 
const ON_SubDComponentPtr ComponentPtr () const
 
const ON_BoundingBox ControlNetBoundingBox () const
 
const ON_3dVector ControlNetCenterNormal (unsigned int edge_face_index) const
 
const ON_3dPoint ControlNetCenterPoint () const
 
const ON_3dVector ControlNetDirection () const
 
const ON_3dVector ControlNetDirectionFrom (const ON_SubDVertex *v) const
 
const ON_Line ControlNetLine () const
 
const ON_3dPoint ControlNetPoint (unsigned int i) const
 
unsigned int DartCount () const
 
const ON_3dPoint DoubleSubdivisionPoint () const
 Get the location of the subdivision point of the edge's subdivision vertex. More...
 
const ON_3dPoint DoubleSubdivisionPoint (unsigned subdivided_end_index) const
 Get the location of the subdivision point of the specified subdivison edge. Note that when an edge is subdivided one time a new subdivision vertex and two subdivision edges are created. If one of the subdivion edges are subdivided again, then that creates a subdivision vertex. This version of ON_SubDEdge::DoubleSubdivisionPoint(...) returns the location of that vertex. The subdivided_end_index parameter specifies which of the two initial subdivision edges are used. More...
 
unsigned int EdgeAttributes () const
 
unsigned int EdgeId () const
 
void EdgeModifiedNofification () const
 
ON_NurbsCurveEdgeSurfaceCurve (bool bClampEndKnots) const
 
ON_NurbsCurveEdgeSurfaceCurve (bool bClampEndKnots, ON_Curve **destination_curve_ptr) const
 
ON_NurbsCurveEdgeSurfaceCurve (bool bClampEndKnots, ON_NurbsCurve *destination_curve) const
 
bool EdgeSurfaceCurveIsSet () const
 
ON_SubDEdgeType EdgeType () const
 EdgeType() is typically used to generate text descriptions and in selection filtering. Do not confuse EdgeType() and EdgeTag(). More...
 
double EndSharpness (const class ON_SubDVertex *v) const
 Get the edge's sharpness at the end with the specified vertex. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
double EndSharpness (unsigned evi) const
 Get the edge's sharpness at the end with the specified vertex. If the edge is a crease, ON_SubDEdgeSharpness::Smooth is returned. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
double EndSharpness (unsigned evi, bool bUseCreaseSharpness) const
 Get the edge's sharpness at the end with the specified vertex. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
bool EvaluateCatmullClarkSubdivisionPoint (double subdivision_point[3]) const
 
const class ON_SubDFaceFace (unsigned int i) const
 
unsigned int FaceArrayIndex (const class ON_SubDFace *f) const
 
unsigned int FaceCount () const
 
ON__UINT_PTR FaceDirection (unsigned int i) const
 
const ON_SubDFacePtr FacePtr (unsigned int i) const
 
const ON_SubDFacePtr FacePtrFromFace (const class ON_SubDFace *f) const
 
bool GetCenterPointAndNormal (ON_SubDComponentLocation subd_appearance, unsigned int edge_face_index, double *P, double *N) const
 
unsigned int GetEdgeSurfaceCurveControlPoints (ON_3dPoint *cvs, size_t cv_capacity) const
 
unsigned int GetSectorBoundaryEdges (unsigned int edge_vertex_index, ON_SubDEdgePtr *edge_ptr0, ON_SubDEdgePtr *edge_ptr1) const
 
double GetSharpSubdivisionPoint (ON_3dPoint &sharp_subdivision_point) const
 Gets the edge's sharp subdivision point and returns the average of the edge's sharpnesses. The final subdivision point is (sharpness >= 1.0) ? sharp_subdivision_point : (1.0-sharpness)(smooth subdivsion point)+sharpness*sharp_subdivision_point. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
bool GetSubdivisionPoint (double subdivision_point[3]) const
 
bool GetSurfaceCenterPointAndNormal (unsigned int edge_face_index, double *P, double *N) const
 
unsigned int GetSurfaceMeshFragmentPoints (ON_3dPoint *P, size_t P_capacity) const
 
bool HasBoundaryEdgeTopology () const
 
bool HasInteriorEdgeTopology (bool bRequireOppositeFaceDirections) const
 
bool IsCrease () const
 
bool IsCreaseOrSharp () const
 Crease edges have tag = ON_SubDEdgeTag::Crease. Sharp edges have tag = ON_SubDEdgeTag::Smooth or ON_SubDEdgeTag::SmoothX and have nonzero sharpness. More...
 
bool IsDartCrease () const
 
bool IsHardCrease () const
 
bool IsSharp () const
 Sharp edges are a blend between smooth edges and crease edges. The limit surface has a continuous normal along a sharp edge. A sharp edge has a smooth tag, has sharpness > 0 at at least one end, and has sharpness < ON_SubDEdgeSharpness::MaximumValue at at least one end. Sharpness has no meaning for edges with crease tags. Both sharpness values are zero for an ordinary smooth edge. Edge sharpness steadily decreases during subdivision and becomes zero after at most ON_SubDEdgeSharpness::MaximumValue subdivisions. More...
 
bool IsSmooth () const
 
bool IsSmoothNotSharp () const
 Determine if an edge is smooth and is not sharp. More...
 
bool IsSmoothNotX () const
 
bool IsSmoothNotXNotSharp () const
 An expert user function to determine if an edge tag in ON_SubDEdgeTag::Smooth and is not sharp. More...
 
bool IsSmoothX () const
 
unsigned int MarkedFaceCount () const
 
unsigned int MarkedVertexCount () const
 
const ON_SubDFaceNeighborFace (const ON_SubDFace *face, bool bStopAtCrease) const
 
const ON_SubDFacePtr NeighborFacePtr (const ON_SubDFace *face, bool bStopAtCrease) const
 
const ON_ComponentStatus NeighborhoodStatusLogicalOr (bool bIncludeVertices, bool bIncludeFaces) const
 
ON_SubDEdgeoperator= (const ON_SubDEdge &)=default
 
const class ON_SubDVertexOtherEndVertex (const class ON_SubDVertex *vertex) const
 
const ON_3dPoint PointAt (double normalized_edge_parameter, ON_SubDComponentLocation subd_appearance) const
 
bool RemoveFaceFromArray (const ON_SubDFace *f)
 
bool RemoveFaceFromArray (unsigned int i, ON_SubDFacePtr &removed_face)
 
unsigned int ReplaceFaceInArray (const ON_SubDFace *old_face, const ON_SubDFace *new_face)
 
void SetSharpnessForExperts (ON_SubDEdgeSharpness sharpness)
 This tool is for expert users and internal use. A collection of ON_SubD::SetEdgeSharpness() functions provide the easiest way to set and change edge sharpness. Set the edge sharpness values to (sharpness[0],sharpness[1]). The interval values must be >= 0 and <= ON_SubDEdgeSharpness::MaximumValue. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
const ON_SubDEdgeSharpness Sharpness (bool bUseCreaseSharpness) const
 Get the edge's sharpness. See ON_SubDEdge::IsSharp() for more information about sharp edges. More...
 
const ON_SubDEdgeSharpness SubdivideSharpness (const class ON_SubDVertex *end_vertex, bool bReverseSharpness) const
 Get the edge sharpenss values for the subdivided edge at the specified end of this edge. More...
 
const ON_SubDEdgeSharpness SubdivideSharpness (unsigned evi, bool bReverseSharpness) const
 Get the edge sharpenss values for the subdivided edge at the specified end of this edge. More...
 
const ON_3dPoint SubdivisionPoint () const
 Get the SubD edge Catmull-Clark subdivision point. More...
 
const ON_BoundingBox SurfaceBoundingBox (const ON_SubD &subd) const
 
const ON_3dVector SurfaceCenterNormal (unsigned int edge_face_index) const
 
const ON_3dPoint SurfaceCenterPoint () const
 
unsigned int TaggedEndIndex () const
 
ON__UINT32 TopologyCRC32 (bool bIncludeSubdivisionProperties) const
 Get a 32 bit CRC that is useful in detecting when an edge's connections to attached vertices 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 an edge's connections to attached vertices or faces have been changed. See also ON_SubDEdge::TopologyCRC32() which, in practice, is just as reliable as the hash. More...
 
bool Transform (bool bTransformationSavedSubdivisionPoint, const class ON_Xform &xform)
 
void UnsetSectorCoefficientsForExperts () const
 
bool UpdateEdgeSectorCoefficientsForExperts (bool bUnsetEdgeSectorCoefficientsOnly) const
 
const class ON_SubDVertexVertex (unsigned evi) const
 
unsigned int VertexArrayIndex (const class ON_SubDVertex *v) const
 
unsigned int VertexCount () const
 
unsigned int VertexId (unsigned evi) const
 
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 const ON_SubDEdgePtr FromVertices (const ON_SubDVertex *vertex0, const ON_SubDVertex *vertex1)
 
static const ON_SubDEdgeFromVertices (const ON_SubDVertex *vertex0, const ON_SubDVertex *vertex1, bool bIgnoreOrientation)
 
static bool Read (class ON_BinaryArchive &archive, class ON_SubD &subd, class ON_SubDEdge *&edge)
 
- Static Public Member Functions inherited from ON_SubDComponentBase
static int CompareId (const ON_SubDComponentBase *lhs, const ON_SubDComponentBase *rhs)
 

Public Attributes

ON_SubDEdgeTag m_edge_tag = ON_SubDEdgeTag::Unset
 
ON_SubDFacePtr m_face2 [2] = {}
 
unsigned short m_face_count = 0
 
ON_SubDFacePtrm_facex = nullptr
 
unsigned short m_facex_capacity = 0
 
const class ON_SubDEdgem_next_edge = nullptr
 linked list of edges on this level More...
 
const class ON_SubDEdgem_prev_edge = nullptr
 m_prev_edge, m_next_edge must be the first data members of ON_SubDEdge More...
 
double m_sector_coefficient [2] = {}
 
const class ON_SubDVertexm_vertex [2] = {}
 
- 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_SubDEdge Empty
 
- Static Public Attributes inherited from ON_SubDComponentBase
static const ON_SubDComponentBase Unset
 

Friends

class ON_Internal_SubDFaceMeshFragmentAccumulator
 
class ON_SubDArchiveIdMap
 
class ON_SubDFace
 
class ON_SubDHeap
 
class ON_SubDVertex
 

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_SubDEdge