Rhino C++ API
8.13
|
#include <opennurbs_plus_sil.h>
Public Types | |
enum | END_TYPE : unsigned int { kEndUnknown = 0, kEndBoundary = 1, kEndEdge = 2, kEndLoop = 3, kEndCusp = 4, kEndProjected = 5, kEndSection = 6, kEndSngularity = 7 } |
enum | SIDE_FILL : unsigned int { kSideUnset = 0, kSideSurface = 1, kSideVoid = 2, kSideOtherSurface = 3 } |
enum | TYPE : unsigned int { kNoSilEvent = 0, kSilProjecting = 1, kSilTanProject = 2, kSilTangent = 4, kSilCrease = 8, kSilBoundary = 16, kNonSilCrease = 256, kNonSilTangent = 512, kNonSilSeam = 1024, kSectionCut = 4096, kMiscFeature = 8192, kDraftCurve = 32768 } |
Public Member Functions | |
enum TYPE unsigned int enum END_TYPE unsigned int | ON_SIL_EVENT () ON_NOEXCEPT |
ON_SIL_EVENT (const ON_SIL_EVENT &rhs) | |
ON_SIL_EVENT (TYPE ttype, ON_COMPONENT_INDEX cci, END_TYPE etype0, ON_COMPONENT_INDEX eci0, double p0, END_TYPE etype1, ON_COMPONENT_INDEX eci1, double p1, ON_Curve *c3d=nullptr, ON_Curve *c2d=nullptr) ON_NOEXCEPT | |
~ON_SIL_EVENT () | |
void | Dump (ON_TextLog &text_log) const |
bool | IsSilhouetteType () const |
bool | IsTangentSilhouetteType () const |
ON_SIL_EVENT & | operator= (const ON_SIL_EVENT &rhs) |
Static Public Member Functions | |
static bool | IsSilhouetteType (TYPE) |
static bool | IsTangentSilhouetteType (TYPE) |
returns true for kSilProjecting through kSilTangent More... | |
Public Attributes | |
ON_COMPONENT_INDEX | m_ci |
ON_Curve * | m_curve2d |
parameter space curve if available or nullptr More... | |
ON_Curve * | m_curve3d |
These are deleted by ~ON_SIL_EVENT() More... | |
ON_COMPONENT_INDEX | m_end_ci [2] |
double | m_end_parameter [2] |
END_TYPE | m_end_type [2] |
SIDE_FILL | m_side_fill [2] |
TYPE | m_type |
The ON_SIL_EVENT class is used to report silhouettes from functions such as ON_Brep::GetSilhouette(..)
enum ON_SIL_EVENT::END_TYPE : unsigned int |
END_TYPE describes the endpoint of an ON_SIL_EVENT
enum ON_SIL_EVENT::SIDE_FILL : unsigned int |
When a silhouette is projected on the image plane ( determined by the camera location or direction), and projects to a curve (not a point), the image area to the left or right of a projected silhouette curve is filled with either the surface or a void.
Enumerator | |
---|---|
kSideUnset | |
kSideSurface | |
kSideVoid | |
kSideOtherSurface | Not used for silhouette results but for .... |
enum ON_SIL_EVENT::TYPE : unsigned int |
Description: The types are ordered. The type of a ON_SIL_EVENT is reported as the lowest valued type that applies. For example, a boundary that is a tangent silhouette will be reported as kSilTangent type not a kSilBoundary.
ON_SIL_EVENT::ON_SIL_EVENT | ( | TYPE | ttype, |
ON_COMPONENT_INDEX | cci, | ||
END_TYPE | etype0, | ||
ON_COMPONENT_INDEX | eci0, | ||
double | p0, | ||
END_TYPE | etype1, | ||
ON_COMPONENT_INDEX | eci1, | ||
double | p1, | ||
ON_Curve * | c3d = nullptr , |
||
ON_Curve * | c2d = nullptr |
||
) |
This constructor leaves m_side_fill[i]=unset but initializes all other fields. The lifetimes of c3d and/or c2d are managed by the ON_SIL_EVENT class.
ON_SIL_EVENT::ON_SIL_EVENT | ( | const ON_SIL_EVENT & | rhs | ) |
An ON_SIL_EVENT can own a pair of ON_Curves pointed to by m_curve2d and m_curve3d. So the copy constructor and operator= makes copies of these curves. And destructor ~ON_SIL_EVENT() deletes these curves.
ON_SIL_EVENT::~ON_SIL_EVENT | ( | ) |
void ON_SIL_EVENT::Dump | ( | ON_TextLog & | text_log | ) | const |
bool ON_SIL_EVENT::IsSilhouetteType | ( | ) | const |
|
static |
IsSilhouetteType() returns true for types kSilProjecting through kSilBoundary.
bool ON_SIL_EVENT::IsTangentSilhouetteType | ( | ) | const |
|
static |
returns true for kSilProjecting through kSilTangent
IsTangentSilhouetteType() returns true for types kSilProjecting through kSilTangent.
ON_SIL_EVENT& ON_SIL_EVENT::operator= | ( | const ON_SIL_EVENT & | rhs | ) |
ON_COMPONENT_INDEX ON_SIL_EVENT::m_ci |
m_ci if valid, is the component index of geometry containing entire silhouette curve. A typical example is ON_SIL_EVENT that starts and ends on ON_BrepEdges and goes across the interior of face. In this case m_ci will be the component index of the face, m_end_ci[0] and m_end_ci[1] will be the component indices of the edges on which the ON_SIL_EVENT terminates, m_end_type[0] and m_end_type[1] will be either END_TYPE::kEndBoundary or END_TYPE::kEndEdge.
ON_Curve* ON_SIL_EVENT::m_curve2d |
parameter space curve if available or nullptr
ON_Curve* ON_SIL_EVENT::m_curve3d |
These are deleted by ~ON_SIL_EVENT()
ON_COMPONENT_INDEX ON_SIL_EVENT::m_end_ci[2] |
m_end_ci[0], if valid, is the component index of geometry containing the ON_SIL_EVENT start point. Similarly m_end_ci[0] applies to the ON_SIL_EVENT end point.
double ON_SIL_EVENT::m_end_parameter[2] |
m_end_parameter[0] is the ON_Brep::Edge parameter of the ON_SIL_EVENT start point when m_end_type[0] = END_TYPE::kEndBoundary, or m_end_type[0] = END_TYPE::kEndEdge. m_end_parameter[0] similarly applies to the end point.
END_TYPE ON_SIL_EVENT::m_end_type[2] |
m_end_type[0] is the END_TYPE of the curve start and and m_end_type[1] is the END_TYPE of the curve end.
SIDE_FILL ON_SIL_EVENT::m_side_fill[2] |
m_side_fill[0] defines how the region in the image plane to the left (or right for m_side_fill[1]) of the projected silhouette curve is filled.
Example: generally the surface locally lies to either the left or the right of the projected silhouette curve in the image plane. The basic degenerate cases are that of a projecting surface or the case of a silhouette with the surface on both sides of the silhouette locally m_side_fill[0] m_side_fill[1] Left Side side_surface side_void Right side_void side_surface
projecting side_void side_void degenerate side_surface side_surface
TYPE ON_SIL_EVENT::m_type |