CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
FMBulgeSeg2D.h
Go to the documentation of this file.
1
2// Copyright (C) 2002-2022, Open Design Alliance (the "Alliance").
3// All rights reserved.
4//
5// This software and its documentation and related materials are owned by
6// the Alliance. The software may only be incorporated into application
7// programs owned by members of the Alliance, subject to a signed
8// Membership Agreement and Supplemental Software License Agreement with the
9// Alliance. The structure and organization of this software are the valuable
10// trade secrets of the Alliance and its suppliers. The software is also
11// protected by copyright law and international treaty provisions. Application
12// programs incorporating this software must include the following statement
13// with their copyright notices:
14//
15// This application incorporates Open Design Alliance software pursuant to a license
16// agreement with Open Design Alliance.
17// Open Design Alliance Copyright (C) 2002-2022 by Open Design Alliance.
18// All rights reserved.
19//
20// By use of this software, its documentation or related materials, you
21// acknowledge and accept the above terms.
23#ifndef __FM_BULGESEG2D_H__
24#define __FM_BULGESEG2D_H__
25
27
28namespace FacetModeler
29{
30
32//
33// BulgeSeg2D is a convex 2-D curve given by 2 points and a bulge value
34// If the 2 points coincide, the segment has estCoincident type
35// Otherwise, if bulge==0, the segment is a straight line segment
36// otherwise it is a circular arc, and bulge=tan(Angle/4)
37//
38
40{
41public:
43 // Constructors ...
44
45 // default constructor
46 BulgeSeg2D() : m_dBulge(0) { };
47
48 // constructor: 2 endpoints and a bulge value ( tan(a/4) )
49 BulgeSeg2D( const OdGePoint2d & ptA, const OdGePoint2d & ptB, double dBulge=0.0 )
50 : m_ptStart(ptA)
51 , m_ptEnd(ptB)
52 , m_dBulge(dBulge)
53 { };
54
55 BulgeSeg2D( const OdGePoint2d & ptA, const OdGePoint2d & ptB, double dBulge, const Attributes2D& rAttr )
56 : m_ptStart(ptA)
57 , m_ptEnd(ptB)
58 , m_dBulge(dBulge)
59 , m_Attr(rAttr)
60 { };
61
62 // constructor: 2 endpoints and an intermediate point
63 BulgeSeg2D( const OdGePoint2d & ptA, const OdGePoint2d & ptB, const OdGePoint2d & ptIntermediate );
64
65 // fast copy constructor
66 BulgeSeg2D( const BulgeSeg2D & rSeg )
67 : m_ptStart( rSeg.m_ptStart )
68 , m_ptEnd( rSeg.m_ptEnd )
69 , m_dBulge( rSeg.m_dBulge )
70 , m_Attr( rSeg.m_Attr )
71 { };
72
73 // slower copy constructor
74 BulgeSeg2D( const IBulgeSeg2D & rAnySeg );
75
76
77 // type info: returns esicBulgeSeg2D
78 virtual SegmentImplClass implClass( ) const;
79
81 // Implementation of data getters, not implemented in CommonSeg2DImpl
82
83 // returns reference to the starting point
84 virtual const OdGePoint2d & startPt() const;
85
86 // returns reference to the ending point
87 virtual const OdGePoint2d & endPt () const;
88
89 // returns bulge value
90 virtual double bulge () const;
91
92
94 // Implementation of non-const methods, not implemented in CommonSeg2DImpl
95
96 using CommonSeg2DImpl::set;
97
98 // Update ends and bulge
99 virtual Result set( const OdGePoint2d & ptA, const OdGePoint2d & ptB, double dBulge, const Attributes2D& rAttr );
100
101 // VC6 compatibility
102 virtual Result set( const OdGePoint2d & ptA, const OdGePoint2d & ptB, double dBulge=0.0 )
103 {
104 return CommonSeg2DImpl::set( ptA, ptB, dBulge );
105 }
106
107 virtual Result set( const OdGePoint2d & ptA, const OdGePoint2d & ptB, const OdGePoint2d & ptIntermediate )
108 {
109 return CommonSeg2DImpl::set( ptA, ptB, ptIntermediate );
110 }
111
112 virtual Result set( const IBulgeSeg2D& rSeg )
113 {
114 return CommonSeg2DImpl::set( rSeg );
115 }
116
117 virtual Result set( const OdGeLineSeg2d& geLine )
118 {
119 return CommonSeg2DImpl::set( geLine );
120 }
121
122 virtual Result set( const OdGeCircArc2d& geArc )
123 {
124 return CommonSeg2DImpl::set( geArc );
125 }
126
127 // Get attributes (including metadata)
128 virtual const Attributes2D& attributes() const;
129
130 // Get attributes (including metadata) for update
132
134 // overrides ( a faster implementation of some methods )
135
136
137 // returns the type of this segment
138 virtual SegmentType type() const;
139
140
141
142 // To Do ...
143
144
145protected:
146
148 // necessary data members
149
150 OdGePoint2d m_ptStart; // Starting point
151
152 OdGePoint2d m_ptEnd; // Ending point
153
154 double m_dBulge; // Bulge value = tan(angle/4)
155
157};
158
159
160
161};
162
163
164#endif //__FM_BULGESEG2D_H__
#define FMGEOMETRY_API
virtual Result set(const OdGePoint2d &ptA, const OdGePoint2d &ptB, double dBulge, const Attributes2D &rAttr)
virtual const OdGePoint2d & endPt() const
virtual Result set(const IBulgeSeg2D &rSeg)
Definition: FMBulgeSeg2D.h:112
virtual const Attributes2D & attributes() const
BulgeSeg2D(const IBulgeSeg2D &rAnySeg)
BulgeSeg2D(const OdGePoint2d &ptA, const OdGePoint2d &ptB, double dBulge=0.0)
Definition: FMBulgeSeg2D.h:49
virtual Result set(const OdGeLineSeg2d &geLine)
Definition: FMBulgeSeg2D.h:117
virtual SegmentType type() const
BulgeSeg2D(const OdGePoint2d &ptA, const OdGePoint2d &ptB, const OdGePoint2d &ptIntermediate)
BulgeSeg2D(const OdGePoint2d &ptA, const OdGePoint2d &ptB, double dBulge, const Attributes2D &rAttr)
Definition: FMBulgeSeg2D.h:55
virtual Attributes2D & attributes4U()
virtual SegmentImplClass implClass() const
virtual double bulge() const
virtual const OdGePoint2d & startPt() const
virtual Result set(const OdGePoint2d &ptA, const OdGePoint2d &ptB, double dBulge=0.0)
Definition: FMBulgeSeg2D.h:102
BulgeSeg2D(const BulgeSeg2D &rSeg)
Definition: FMBulgeSeg2D.h:66
virtual Result set(const OdGePoint2d &ptA, const OdGePoint2d &ptB, const OdGePoint2d &ptIntermediate)
Definition: FMBulgeSeg2D.h:107
virtual Result set(const OdGeCircArc2d &geArc)
Definition: FMBulgeSeg2D.h:122