Rhino C++ API  8.6
Public Member Functions | Public Attributes | Friends | List of all members
ON_HLDFullCurve Class Reference

#include <opennurbs_plus_hiddenline.h>

Public Member Functions

ON_HLDCurveCurve (double t, int side=0)
 
const ON_HLDCurveCurve (double t, int side=0) const
 
void Dump (ON_TextLog &log) const
 
ON_NurbsCurveFullCurve ()
 
const ON_NurbsCurveFullCurve () const
 
bool IsEdgeCurve () const
 returns true if the curve is a BrepEdge of the source geometry. More...
 
bool IsProjecting () const
 
bool IsValid (const ON_HiddenLineDrawing &hld, ON_TextLog *=nullptr) const
 
ON_CurvePSpaceCurve ()
 
const ON_CurvePSpaceCurve () const
 
void SetFullCurve (ON_NurbsCurve *)
 
void SetPSpaceCurve (ON_Curve *)
 

Public Attributes

ON_SimpleArray< ON_HLDCurve * > m_C
 
int m_clipping_plane_index
 index into ON_HiddenLineDrawing::m_clipping_plane when m_type=section cut. More...
 
ON_COMPONENT_INDEX m_CompInd
 component of source object part that generated this curve. More...
 
int m_fci
 index of this FullCurve in ON_HiddenLineDrawing::m_full_curve. More...
 
double m_OriginalDomainStart
 
const ON_HLD_Objectm_SourceObject
 pointer into source object in ON_HiddenLineDrawing::m_Object. More...
 
ON_SimpleArray< double > m_t
 Increasing, partition of m_Crv->Domain()== ( m_t[0], *m_t.Last() ) More...
 
ON_SIL_EVENT::TYPE m_type
 

Friends

class ON_HiddenLineDrawingImplBase
 
class TL_HiddenLineDrawingImpl
 
class TL_HLDBrepObj
 

Detailed Description

A hidden line drawing consists of curves generated from source objects in the m_object array. The curves correspond to edges, and silhouettes of source objects and intersections with cutting planes. These curves are represented as ON_HLDFullCurve's. An ON_HLDFullCurve is partitioned into hidden and visible segments called TL_HLDCurves.

Member Function Documentation

◆ Curve() [1/2]

ON_HLDCurve* ON_HLDFullCurve::Curve ( double  t,
int  side = 0 
)

ON_HLDCurve containing parameter t side - optional - determines which side to return at breakpoints 0 = default < 0 curve that contains an interval [ t-, t ] , for some t- < t. > 0 curve that contains an interval [ t, t+ ], for some t+ > t.

◆ Curve() [2/2]

const ON_HLDCurve* ON_HLDFullCurve::Curve ( double  t,
int  side = 0 
) const

◆ Dump()

void ON_HLDFullCurve::Dump ( ON_TextLog log) const

◆ FullCurve() [1/2]

ON_NurbsCurve* ON_HLDFullCurve::FullCurve ( )

◆ FullCurve() [2/2]

const ON_NurbsCurve* ON_HLDFullCurve::FullCurve ( ) const

FullCurve() is a curve in HLD-coordinates. So that we can freely apply the World2HLD transformation and its inverse the curve is a nurbs curve. If this ON_HLDFullCurve IsProjecting() and the containing ON_HiddenLineDrawing HasBeenFlattened then this curve will not be valid, since flattening projects this curve to a point. i.e Make sure to check for nullptr.

◆ IsEdgeCurve()

bool ON_HLDFullCurve::IsEdgeCurve ( ) const

returns true if the curve is a BrepEdge of the source geometry.

◆ IsProjecting()

bool ON_HLDFullCurve::IsProjecting ( ) const

returns true if all the non clipped portions of this curve are projecting.
That is each curve segment projects to a point in the 2d hidden line drawing.

◆ IsValid()

bool ON_HLDFullCurve::IsValid ( const ON_HiddenLineDrawing hld,
ON_TextLog = nullptr 
) const

◆ PSpaceCurve() [1/2]

ON_Curve* ON_HLDFullCurve::PSpaceCurve ( )

◆ PSpaceCurve() [2/2]

const ON_Curve* ON_HLDFullCurve::PSpaceCurve ( ) const

If m_type sil_tangent *m_Pcrv may be the surface parameter space curve of the silhouette. In other cases it is nullptr.

◆ SetFullCurve()

void ON_HLDFullCurve::SetFullCurve ( ON_NurbsCurve )

◆ SetPSpaceCurve()

void ON_HLDFullCurve::SetPSpaceCurve ( ON_Curve )

Friends And Related Function Documentation

◆ ON_HiddenLineDrawingImplBase

friend class ON_HiddenLineDrawingImplBase
friend

◆ TL_HiddenLineDrawingImpl

friend class TL_HiddenLineDrawingImpl
friend

◆ TL_HLDBrepObj

friend class TL_HLDBrepObj
friend

Member Data Documentation

◆ m_C

ON_SimpleArray<ON_HLDCurve*> ON_HLDFullCurve::m_C

HLD_Curves that make up this full curve. C.Count() = t.Count()-1 C[i]->Domain() = [ t[i], t[i+1] ]

◆ m_clipping_plane_index

int ON_HLDFullCurve::m_clipping_plane_index

index into ON_HiddenLineDrawing::m_clipping_plane when m_type=section cut.

◆ m_CompInd

ON_COMPONENT_INDEX ON_HLDFullCurve::m_CompInd

component of source object part that generated this curve.

◆ m_fci

int ON_HLDFullCurve::m_fci

index of this FullCurve in ON_HiddenLineDrawing::m_full_curve.

◆ m_OriginalDomainStart

double ON_HLDFullCurve::m_OriginalDomainStart

Initialized to ON_UNSET_VALUE. If the FullCurve is a closed curve. Rejoin can reparmeterize the curve by moving the seam.
When this has been done the original domain start is stored here. So to compute the source curve parameter from the ON_HLDFullCurve parameter double Source_t = Curve_t; if( m_OriginalDomainStart != ON_UNSET_VALUE) Source_t += m_OriginalDomainStart - Crv->Domain[0];

◆ m_SourceObject

const ON_HLD_Object* ON_HLDFullCurve::m_SourceObject

pointer into source object in ON_HiddenLineDrawing::m_Object.

◆ m_t

ON_SimpleArray<double> ON_HLDFullCurve::m_t

Increasing, partition of m_Crv->Domain()== ( m_t[0], *m_t.Last() )

◆ m_type

ON_SIL_EVENT::TYPE ON_HLDFullCurve::m_type