Rhino C++ API  8.14
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
ON_SubDSurfaceNurbsFragment Class Reference

#include <opennurbs_subd.h>

Public Types

enum  BispanAccuracy : unsigned char { BispanAccuracy::None = 0, BispanAccuracy::Exact = 1, BispanAccuracy::Approximate = 2 }
 ON_SubDSurfaceNurbsFragment::BispanAccuracy specifies if a bispan surface is an exact or approximate. More...
 
enum  Type : unsigned char { Type::Unset = 0, Type::BicubicSingle = 1, Type::BicubicQuadrant = 4 }
 ON_SubDSurfaceNurbsFragment::Type are types bezier bispans covering a portion of a SubD face. More...
 

Public Member Functions

 ON_SubDSurfaceNurbsFragment ()=default
 
 ON_SubDSurfaceNurbsFragment (const ON_SubDSurfaceNurbsFragment &)=default
 
 ~ON_SubDSurfaceNurbsFragment ()=default
 
ON_NurbsSurfaceGetQuadrantSurface (unsigned int quadrant_index, ON_NurbsSurface *destination_surface) const
 
ON_NurbsSurfaceGetSurface (ON_NurbsSurface *destination_surface) const
 
bool IsApproximate () const
 
bool IsEmpty () const
 
unsigned int MaximumBispanCount () const
 
ON_SubDSurfaceNurbsFragmentoperator= (const ON_SubDSurfaceNurbsFragment &)=default
 
unsigned int SetBispanCount () const
 
unsigned int UnsetBispanCount () const
 

Public Attributes

ON_SubDSurfaceNurbsFragment::BispanAccuracy m_bispan_type [4] = {}
 
ON_SubDFaceRegion m_face_region
 m_face_region identifies what part of the SubD is represented by this patch More...
 
double m_patch_cv [5][5][3]
 knot vector is uniform and not clamped. For example {-2,-1,0,1,2,3,4}. More...
 
ON_SubDSurfaceNurbsFragment::Type m_type = ON_SubDSurfaceNurbsFragment::Type::Unset
 

Static Public Attributes

static const ON_SubDSurfaceNurbsFragment Empty
 Every field of ON_SubDSurfaceNurbsFragment::Empty is zero. More...
 
static const ON_SubDSurfaceNurbsFragment Nan
 
static const ON_SubDSurfaceNurbsFragment Unset
 

Member Enumeration Documentation

◆ BispanAccuracy

enum ON_SubDSurfaceNurbsFragment::BispanAccuracy : unsigned char
strong

ON_SubDSurfaceNurbsFragment::BispanAccuracy specifies if a bispan surface is an exact or approximate.

Enumerator
None 

summary>No bispan.

summary>Entire region identified by m_face_region is an exact bicubic patch.

Exact 

summary>Entire region identified by m_face_region is approximately a bicubic patch.

Approximate 

◆ Type

enum ON_SubDSurfaceNurbsFragment::Type : unsigned char
strong

ON_SubDSurfaceNurbsFragment::Type are types bezier bispans covering a portion of a SubD face.

Enumerator
Unset 

summary>Not a valid patch type.

summary>This fragment is a single 4x4 bicubic span covering the entire SubD region identified by m_face_region.

BicubicSingle 

summary>The bispans in this fragment are quadrants of the SubD region identified by m_face_region.

BicubicQuadrant 

Constructor & Destructor Documentation

◆ ON_SubDSurfaceNurbsFragment() [1/2]

ON_SubDSurfaceNurbsFragment::ON_SubDSurfaceNurbsFragment ( )
default

◆ ~ON_SubDSurfaceNurbsFragment()

ON_SubDSurfaceNurbsFragment::~ON_SubDSurfaceNurbsFragment ( )
default

◆ ON_SubDSurfaceNurbsFragment() [2/2]

ON_SubDSurfaceNurbsFragment::ON_SubDSurfaceNurbsFragment ( const ON_SubDSurfaceNurbsFragment )
default

Member Function Documentation

◆ GetQuadrantSurface()

ON_NurbsSurface* ON_SubDSurfaceNurbsFragment::GetQuadrantSurface ( unsigned int  quadrant_index,
ON_NurbsSurface destination_surface 
) const

◆ GetSurface()

ON_NurbsSurface* ON_SubDSurfaceNurbsFragment::GetSurface ( ON_NurbsSurface destination_surface) const

◆ IsApproximate()

bool ON_SubDSurfaceNurbsFragment::IsApproximate ( ) const

Returns: One or more of the bispans approximate the SubD surface.

◆ IsEmpty()

bool ON_SubDSurfaceNurbsFragment::IsEmpty ( ) const

True if there are no set bispans.

◆ MaximumBispanCount()

unsigned int ON_SubDSurfaceNurbsFragment::MaximumBispanCount ( ) const

Returns: 0: unset NURBS fragment 1: This NURBS fragment uses a single bicubic span to model the region identified by m_face_region. 4: This NURBS fragment uses 4 bicubic spans to model the 4 quadrants of the region identified by m_face_region.

◆ operator=()

ON_SubDSurfaceNurbsFragment& ON_SubDSurfaceNurbsFragment::operator= ( const ON_SubDSurfaceNurbsFragment )
default

◆ SetBispanCount()

unsigned int ON_SubDSurfaceNurbsFragment::SetBispanCount ( ) const

Returns: 0 to 4 indicating the number of bicubic spans that are set in this NURBS fragment. Remarks: If 0 < SetBispanCount() == MaximumBispanCount(), then the entire region identified by m_face_region is modeled by this NURBS fragment.

If 0 < SetBispanCount() < MaximumBispanCount(), then that many quadrants of the region identified by m_face_region are modeled by this set bispans in this NURBS fragment.

◆ UnsetBispanCount()

unsigned int ON_SubDSurfaceNurbsFragment::UnsetBispanCount ( ) const

Returns: 0 to 4 indicating the number of unset bicubic spans in "this".

Member Data Documentation

◆ Empty

const ON_SubDSurfaceNurbsFragment ON_SubDSurfaceNurbsFragment::Empty
static

Every field of ON_SubDSurfaceNurbsFragment::Empty is zero.

◆ m_bispan_type

ON_SubDSurfaceNurbsFragment::BispanAccuracy ON_SubDSurfaceNurbsFragment::m_bispan_type[4] = {}

m_patch_type[] reports what type of patch is returned in m_patch_cv[] m_patch_type[0] = the state for the uniform bi-cubic patch: CV[i][j] = m_patch_cv[i][j] (0 <= i <= 3, 0 <= j <= 3) knot[0] = {-2,-1,0,1,2,3} knot[1] = {-2,-1,0,1,2,3} m_patch_type[1] = the state for the uniform bi-cubic patch: CV[i][j] = m_patch_cv[i+1][j] (0 <= i <= 3, 0 <= j <= 3) knot[0] = {-1,0,1,2,3,4} knot[1] = {-2,-1,0,1,2,3} m_patch_type[2] = the state for the uniform bi-cubic patch: CV[i][j] = m_patch_cv[i+1][j+1] (0 <= i <= 3, 0 <= j <= 3) knot[0] = {-1,0,1,2,3,4} knot[1] = {-1,0,1,2,3,4} m_patch_type[3] = the state for the uniform bi-cubic patch: CV[i][j] = m_patch_cv[i][j+1] (0 <= i <= 3, 0 <= j <= 3) knot[0] = {-2,-1,0,1,2,3} knot[1] = {-1,0,1,2,3,4}

Single bicubic bezier covers the region: m_patch_type[] = {Bicubic or ApproximateBicubic, Ignore, Ignore, Ignore} Bicubic quadrants Each m_patch_type[] element is one of BicubicQuadrant, ApproximateBicubicQuadrant, or None.

◆ m_face_region

ON_SubDFaceRegion ON_SubDSurfaceNurbsFragment::m_face_region

m_face_region identifies what part of the SubD is represented by this patch

◆ m_patch_cv

double ON_SubDSurfaceNurbsFragment::m_patch_cv[5][5][3]

knot vector is uniform and not clamped. For example {-2,-1,0,1,2,3,4}.

◆ m_type

◆ Nan

const ON_SubDSurfaceNurbsFragment ON_SubDSurfaceNurbsFragment::Nan
static

Every m_patch_cv[][][] value is ON_DBL_QNAN. Every other field of ON_SubDSurfaceNurbsFragment::Unset is zero.

◆ Unset

const ON_SubDSurfaceNurbsFragment ON_SubDSurfaceNurbsFragment::Unset
static

Every m_patch_cv[][][] value is ON_UNSET_VALUE. Every other field of ON_SubDSurfaceNurbsFragment::Unset is zero.