Rhino C++ API  8.5
Public Types | Public Member Functions | Public Attributes | Friends | List of all members
ON_HLDCurve Class Reference

#include <opennurbs_plus_hiddenline.h>

Inheritance diagram for ON_HLDCurve:
ON_CurveProxy ON_Curve ON_Geometry ON_Object

Public Types

enum  VISIBILITY : unsigned int {
  VISIBILITY::kUnset = 0, VISIBILITY::kVisible = 1, VISIBILITY::kHidden = 2, VISIBILITY::kDuplicate = 3,
  VISIBILITY::kProjecting = 4, VISIBILITY::kClipped = 5
}
 
- Public Types inherited from ON_Object
enum  UserDataConflictResolution : unsigned char {
  UserDataConflictResolution::destination_object = 0, UserDataConflictResolution::source_object = 1, UserDataConflictResolution::source_copycount_gt = 2, UserDataConflictResolution::source_copycount_ge = 3,
  UserDataConflictResolution::destination_copycount_gt = 4, UserDataConflictResolution::destination_copycount_ge = 5, UserDataConflictResolution::delete_item = 6
}
 

Public Member Functions

void Dump (ON_TextLog &) const
 for debugging More...
 
ON_HLDFullCurveFullCurve ()
 
const ON_HLDFullCurveFullCurve () const
 This curve is a subcurve of *FullCurve(). More...
 
bool IsOnSectionCut () const
 True if this curve on the boundary of the visible region, as defined by the clipping planes. More...
 
bool IsSceneSilhouette () const
 Is this Curve a scene silhoutte. More...
 
- Public Member Functions inherited from ON_CurveProxy
 ON_CurveProxy () ON_NOEXCEPT
 
 ON_CurveProxy (const ON_Curve *)
 
 ON_CurveProxy (const ON_Curve *, ON_Interval)
 
 ON_CurveProxy (const ON_CurveProxy &)
 
virtual ~ON_CurveProxy ()
 
ON__UINT32 DataCRC (ON__UINT32 current_remainder) const override
 virtual ON_Object::DataCRC override More...
 
int Degree () const override
 
void DestroyRuntimeCache (bool bDelete=true) override
 virtual ON_Object::DestroyRuntimeCache override More...
 
int Dimension () const override
 ON_Geometry overrides. More...
 
ON_Interval Domain () const override
 ON_Curve overrides. More...
 
ON_CurveDuplicateCurve () const override
 
bool Evaluate (double, int, int, double *, int=0, int *=0) const override
 Domain changes from [a,b] to [-b,-a]. More...
 
bool GetBBox (double *boxmin, double *boxmax, bool bGrowBox=false) const override
 virtual ON_Geometry GetBBox override
More...
 
bool GetClosestPoint (const ON_3dPoint &, double *, double=0.0, const ON_Interval *=nullptr) const override
 
bool GetCurveParameterFromNurbFormParameter (double, double *) const override
 virtual ON_Curve::GetCurveParameterFromNurbFormParameter override More...
 
bool GetLength (double *, double=1.0e-8, const ON_Interval *=nullptr) const override
 
bool GetLocalClosestPoint (const ON_3dPoint &, double, double *, const ON_Interval *=nullptr) const override
 
bool GetNextDiscontinuity (ON::continuity c, double t0, double t1, double *t, int *hint=nullptr, int *dtype=nullptr, double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE, double curvature_tolerance=ON_SQRT_EPSILON) const override
 
bool GetNormalizedArcLengthPoint (double s, double *t, double fractional_tolerance=1.0e-8, const ON_Interval *sub_domain=nullptr) const override
 
bool GetNormalizedArcLengthPoints (int count, const double *s, double *t, double absolute_tolerance=0.0, double fractional_tolerance=1.0e-8, const ON_Interval *sub_domain=nullptr) const override
 
int GetNurbForm (ON_NurbsCurve &, double=0.0, const ON_Interval *=nullptr) const override
 
bool GetNurbFormParameterFromCurveParameter (double, double *) const override
 virtual ON_Curve::GetNurbFormParameterFromCurveParameter override More...
 
bool GetParameterTolerance (double, double *, double *) const override
 (optional - override if curve is piecewise smooth) More...
 
bool GetSpanVector (double *) const override
 
int HasNurbForm () const override
 
bool IsArc (const ON_Plane *=nullptr, ON_Arc *=nullptr, double=ON_ZERO_TOLERANCE) const override
 
bool IsClosed (void) const override
 
bool IsContinuous (ON::continuity c, double t, int *hint=nullptr, double point_tolerance=ON_ZERO_TOLERANCE, double d1_tolerance=ON_ZERO_TOLERANCE, double d2_tolerance=ON_ZERO_TOLERANCE, double cos_angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE_COSINE, double curvature_tolerance=ON_SQRT_EPSILON) const override
 
bool IsInPlane (const ON_Plane &, double=ON_ZERO_TOLERANCE) const override
 
bool IsLinear (double=ON_ZERO_TOLERANCE) const override
 
bool IsPeriodic (void) const override
 periodic.) More...
 
bool IsPlanar (ON_Plane *=nullptr, double=ON_ZERO_TOLERANCE) const override
 
int IsPolyline (ON_SimpleArray< ON_3dPoint > *pline_points=nullptr, ON_SimpleArray< double > *pline_t=nullptr) const override
 virtual override of ON_Curve::IsPolyline More...
 
bool IsShort (double tolerance, const ON_Interval *sub_domain=0, double *length_estimate=0) const override
 
bool IsValid (class ON_TextLog *text_log=nullptr) const override
 ON_Object overrides. More...
 
ON_CurveProxyoperator= (const ON_CurveProxy &)
 
const ON_CurveProxyCurve () const
 
ON_Interval ProxyCurveDomain () const
 
bool ProxyCurveIsReversed () const
 
bool Read (ON_BinaryArchive &) override
 
double RealCurveParameter (double t) const
 
bool Reverse () override
 
bool SetDomain (double t0, double t1) override
 
bool SetDomain (ON_Interval domain)
 
void SetProxyCurve (const ON_Curve *real_curve)
 
void SetProxyCurve (const ON_Curve *real_curve, ON_Interval real_curve_subdomain)
 
bool SetProxyCurveDomain (ON_Interval proxy_curve_subdomain)
 
unsigned int SizeOf () const override
 virtual ON_Object::SizeOf override More...
 
int SpanCount () const override
 number of smooth spans in curve More...
 
bool Split (double t, ON_Curve *&left_side, ON_Curve *&right_side) const override
 override of virtual ON_Curve::Split More...
 
double ThisCurveParameter (double real_curve_parameter) const
 
bool Transform (const ON_Xform &) override
 
bool Trim (const ON_Interval &domain) override
 override of virtual ON_Curve::Trim More...
 
bool Write (ON_BinaryArchive &) const override
 
- Public Member Functions inherited from ON_Curve
 ON_Curve () ON_NOEXCEPT
 
 ON_Curve (const ON_Curve &)
 
virtual ~ON_Curve ()
 
bool AreaMassProperties (ON_3dPoint base_point, ON_3dVector plane_normal, ON_MassProperties &mp, bool bArea=true, bool bFirstMoments=true, bool bSecondMoments=true, bool bProductMoments=true, double rel_tol=1.0e-6, double abs_tol=1.0e-6) const
 
virtual bool ChangeClosedCurveSeam (double t)
 
bool ChangeClosedCurveSeam (double t, double min_dist)
 
virtual bool ChangeDimension (int desired_dimension)
 
virtual class ON_CurveTreeCreateCurveTree () const
 
ON_3dVector CurvatureAt (double t) const
 
const class ON_CurveTreeCurveTree () const
 
ON_3dVector DerivativeAt (double t) const
 
void DestroyCurveTree ()
 
bool Ev1Der (double t, ON_3dPoint &point, ON_3dVector &first_derivative, int side=0, int *hint=0) const
 
bool Ev2Der (double t, ON_3dPoint &point, ON_3dVector &first_derivative, ON_3dVector &second_derivative, int side=0, int *hint=0) const
 
bool EvaluatePoint (const class ON_ObjRef &objref, ON_3dPoint &P) const override
 virtual ON_Geometry override More...
 
bool EvCurvature (double t, ON_3dPoint &point, ON_3dVector &tangent, ON_3dVector &kappa, int side=0, int *hint=0) const
 
bool EvPoint (double t, ON_3dPoint &point, int side=0, int *hint=0) const
 
bool EvSignedCurvature (double t, ON_3dPoint &point, ON_3dVector &tangent, double &kappa, const ON_3dVector *normal=nullptr, int side=0, int *hint=0) const
 
bool EvTangent (double t, ON_3dPoint &point, ON_3dVector &tangent, int side=0, int *hint=0) const
 
virtual bool Extend (const ON_Interval &domain)
 
bool FirstSpanIsLinear (double min_length, double tolerance) const
 
bool FirstSpanIsLinear (double min_length, double tolerance, ON_Line *span_line) const
 
bool FrameAt (double t, ON_Plane &plane) const
 
bool GetDomain (double *t0, double *t1) const
 curve interface More...
 
virtual bool GetSpanVectorIndex (double t, int side, int *span_vector_index, ON_Interval *span_domain) const
 
bool GetTightBoundingBox (class ON_BoundingBox &tight_bbox, bool bGrowBox=false, const class ON_Xform *xform=nullptr) const override
 virtual ON_Geometry GetTightBoundingBox override
More...
 
int IntersectCurve (const ON_Curve *curveB, ON_SimpleArray< ON_X_EVENT > &x, double intersection_tolerance=0.0, double overlap_tolerance=0.0, const ON_Interval *curveA_domain=0, const ON_Interval *curveB_domain=0) const
 
int IntersectPlane (ON_PlaneEquation plane_equation, ON_SimpleArray< ON_X_EVENT > &x, double intersection_tolerance=0.0, double overlap_tolerance=0.0, const ON_Interval *curve_domain=0) const
 
virtual int IntersectSelf (ON_SimpleArray< ON_X_EVENT > &x, double intersection_tolerance=0.0, const ON_Interval *curve_domain=0) const
 
int IntersectSurface (const ON_Surface *surfaceB, ON_SimpleArray< ON_X_EVENT > &x, double intersection_tolerance=0.0, double overlap_tolerance=0.0, const ON_Interval *curveA_domain=0, const ON_Interval *surfaceB_udomain=0, const ON_Interval *surfaceB_vdomain=0) const
 
bool IsArcAt (double t, const ON_Plane *plane=0, ON_Arc *arc=0, double tolerance=ON_ZERO_TOLERANCE, double *t0=0, double *t1=0) const
 
bool IsClosable (double tolerance, double min_abs_size=0.0, double min_rel_size=10.0) const
 
virtual bool IsEllipse (const ON_Plane *plane=nullptr, ON_Ellipse *ellipse=nullptr, double tolerance=ON_ZERO_TOLERANCE) const
 
bool LastSpanIsLinear (double min_length, double tolerance) const
 
bool LastSpanIsLinear (double min_length, double tolerance, ON_Line *span_line) const
 
bool LengthMassProperties (class ON_MassProperties &mp, bool bLength=true, bool bFirstMoments=true, bool bSecondMoments=true, bool bProductMoments=true, double rel_tol=1.0e-6, double abs_tol=1.0e-6) const
 
class ON_PolylineCurveMeshCurve (ON_MeshCurveParameters &mp, ON_PolylineCurve *polyline, bool bSkipFirstPoint, const ON_Interval *domain) const
 
ON_NurbsCurveNurbsCurve (ON_NurbsCurve *pNurbsCurve=nullptr, double tolerance=0.0, const ON_Interval *subdomain=nullptr) const
 
ON::object_type ObjectType () const override
 
ON_Curveoperator= (const ON_Curve &)
 
ON_3dPoint PointAt (double t) const
 
ON_3dPoint PointAtEnd () const
 
ON_3dPoint PointAtStart () const
 
virtual bool RemoveShortSegments (double tolerance, bool bRemoveShortSegments=true)
 
bool SetDomain (ON_Interval domain)
 
virtual bool SetEndPoint (ON_3dPoint end_point)
 
virtual bool SetStartPoint (ON_3dPoint start_point)
 
double SignedCurvatureAt (double t, const ON_3dVector *plane_normal=nullptr) const
 
ON_3dVector TangentAt (double t) const
 
- Public Member Functions inherited from ON_Geometry
 ON_Geometry ()=default
 
 ON_Geometry (const ON_Geometry &)=default
 
 ~ON_Geometry ()=default
 
ON_BoundingBox BoundingBox () const
 
virtual class ON_BrepBrepForm (class ON_Brep *brep=nullptr) const
 
virtual void ClearBoundingBox ()
 
virtual ON_COMPONENT_INDEX ComponentIndex () const
 
bool GetBoundingBox (ON_3dPoint &bbox_min, ON_3dPoint &bbox_max, bool bGrowBox=false) const
 
bool GetBoundingBox (ON_BoundingBox &bbox, bool bGrowBox=false) const
 
virtual bool HasBrepForm () const
 
virtual bool IsDeformable () const
 
virtual bool IsMorphable () const
 
bool IsValid (class ON_TextLog *text_log=nullptr) const override
 
virtual bool MakeDeformable ()
 
virtual bool Morph (const class ON_SpaceMorph &morph)
 
ON_Geometryoperator= (const ON_Geometry &)=default
 
bool Rotate (double rotation_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center)
 
bool Rotate (double sin_angle, double cos_angle, const ON_3dVector &rotation_axis, const ON_3dPoint &rotation_center)
 
bool Scale (double scale_factor)
 
virtual bool SwapCoordinates (int i, int j)
 
const ON_BoundingBox TightBoundingBox () const
 
bool Translate (const ON_3dVector &translation_vector)
 
- Public Member Functions inherited from ON_Object
 ON_Object () ON_NOEXCEPT
 
 ON_Object (const ON_Object &)
 
virtual ~ON_Object ()
 
virtual ON_AggregateComponentStatus AggregateComponentStatus () const
 
bool AttachUserData (class ON_UserData *pUserData)
 
unsigned int ClearAllComponentStates () const
 
virtual unsigned int ClearComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_clear) const
 
virtual unsigned int ClearComponentStates (ON_ComponentStatus states_to_clear) const
 
void CopyUserData (const ON_Object &source_object)
 
unsigned int CopyUserData (const ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution)
 
virtual bool DeleteComponents (const ON_COMPONENT_INDEX *ci_list, size_t ci_count)
 
bool DetachUserData (class ON_UserData *pUserData)
 
void EmergencyDestroy ()
 
class ON_UserDataFirstUserData () const
 
virtual unsigned int GetComponentsWithSetStates (ON_ComponentStatus states_filter, bool bAllEqualStates, ON_SimpleArray< ON_COMPONENT_INDEX > &components) const
 
class ON_UserDataGetUserData (const ON_UUID &userdata_uuid) const
 
bool GetUserString (const wchar_t *key, ON_wString &string_value) const
 
int GetUserStringKeys (ON_ClassArray< ON_wString > &user_string_keys) const
 
int GetUserStrings (ON_ClassArray< ON_UserString > &user_strings) const
 
bool IsCorrupt (bool bRepair, bool bSilentError, class ON_TextLog *text_log) const
 
bool IsKindOf (const ON_ClassId *pClassId) const
 
virtual void MarkAggregateComponentStatusAsNotCurrent () const
 
virtual void MemoryRelocate ()
 
virtual ON_UUID ModelObjectId () const
 
void MoveUserData (ON_Object &source_object)
 
unsigned int MoveUserData (ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution, bool bDeleteAllSourceItems)
 
ON_Objectoperator= (const ON_Object &)
 
void PurgeUserData ()
 
virtual unsigned int SetComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_set) const
 
virtual unsigned int SetComponentStatus (ON_COMPONENT_INDEX component_index, ON_ComponentStatus status_to_copy) const
 
bool SetUserString (const wchar_t *key, const wchar_t *string_value)
 
int SetUserStrings (int count, const ON_UserString *user_strings, bool bReplace)
 
bool ThisIsNullptr (bool bSilentError) const
 
void TransformUserData (const class ON_Xform &xform)
 
virtual bool UpdateReferencedComponents (const class ON_ComponentManifest &source_manifest, const class ON_ComponentManifest &destination_manifest, const class ON_ManifestMap &manifest_map)
 
int UserStringCount () const
 

Public Attributes

int m_ci = -1
 Index of this curve in ON_HiddenLineDrawing::m_curve. More...
 
ON_SIL_EVENT::SIDE_FILL m_SilSide [2]
 
VISIBILITY m_vis = VISIBILITY::kUnset
 

Friends

class ON_HiddenLineDrawingImplBase
 
class ON_HLDFullCurve
 
class TL_HiddenLineDrawingImpl
 
class TL_HLDBrepObj
 

Additional Inherited Members

- Static Public Member Functions inherited from ON_Curve
static class ON_NurbsCurveCreateCubicLoft (int point_count, int point_dim, int point_stride, const double *point_list, double k, int is_closed=0, ON::cubic_loft_end_condition start_shape=ON::cubic_loft_ec_quadratic, ON::cubic_loft_end_condition end_shape=ON::cubic_loft_ec_quadratic, class ON_NurbsCurve *nurbs_curve=0)
 
- Static Public Attributes inherited from ON_Geometry
const static ON_Geometry Unset
 
- Protected Member Functions inherited from ON_CurveProxy
void SetProxyCurveIsReversed (bool bReversed)
 
- Protected Member Functions inherited from ON_Curve
bool ParameterSearch (double t, int &index, bool bEnableSnap, const ON_SimpleArray< double > &m_t, double RelTol=ON_SQRT_EPSILON) const
 

Detailed Description

The results of HiddenLineDrawing calculation are a collection of TL_HLDCurves. An ON_HLDCurve is a subcurve of an ON_HLDFullCurve, represented as an ON_CurveProxy of the containing ON_HLDFullCurve.

Member Enumeration Documentation

◆ VISIBILITY

enum ON_HLDCurve::VISIBILITY : unsigned int
strong
Enumerator
kUnset 
kVisible 
kHidden 
kDuplicate 
kProjecting 

projects to a point ( smaller than tol )

kClipped 

clipped by clipping planes

Deprecated : kClipped is not actually generated by HiddenLineDarawings and should not be used

Member Function Documentation

◆ Dump()

void ON_HLDCurve::Dump ( ON_TextLog ) const
virtual

for debugging

Reimplemented from ON_CurveProxy.

◆ FullCurve() [1/2]

ON_HLDFullCurve* ON_HLDCurve::FullCurve ( )

◆ FullCurve() [2/2]

const ON_HLDFullCurve* ON_HLDCurve::FullCurve ( ) const

This curve is a subcurve of *FullCurve().

◆ IsOnSectionCut()

bool ON_HLDCurve::IsOnSectionCut ( ) const

True if this curve on the boundary of the visible region, as defined by the clipping planes.

◆ IsSceneSilhouette()

bool ON_HLDCurve::IsSceneSilhouette ( ) const

Is this Curve a scene silhoutte.

Friends And Related Function Documentation

◆ ON_HiddenLineDrawingImplBase

friend class ON_HiddenLineDrawingImplBase
friend

◆ ON_HLDFullCurve

friend class ON_HLDFullCurve
friend

◆ TL_HiddenLineDrawingImpl

friend class TL_HiddenLineDrawingImpl
friend

◆ TL_HLDBrepObj

friend class TL_HLDBrepObj
friend

Member Data Documentation

◆ m_ci

int ON_HLDCurve::m_ci = -1

Index of this curve in ON_HiddenLineDrawing::m_curve.

◆ m_SilSide

ON_SIL_EVENT::SIDE_FILL ON_HLDCurve::m_SilSide[2]

The m_SilSide fields are only valid for visible curves. With respect to the make2d image the region to the left ( or right respectively) of this curve is described by m_SilSide[0] ( or m_SideSil[1] respectively). If exactly one of these regions is empty this is a scene silhouette. If this region contains a surface it is either a surface which in 3d is adjacent to this edge or it an surface that is further away from the camera, we call this a shadow surface.
unknown is used for unset values and for projecting curves

◆ m_vis

VISIBILITY ON_HLDCurve::m_vis = VISIBILITY::kUnset