CFx SDK Documentation 2024 SP0
Loading...
Searching...
No Matches
FM_IContour2D.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_ICONTOUR2D_H__
24#define __FM_ICONTOUR2D_H__
25
26#include "FMGeometry.h"
28
29class OdGeLineSeg2d;
30class OdGeCircArc2d;
31
32
33namespace FacetModeler
34{
35
36
38{
39public:
40
41 virtual ~IContour2D() { };
42
43
44 // Copy this contour from rSrcCont
45 virtual void set( const IContour2D & rSrcCont ) = 0;
46
47 // Create a new copy of this contour.
48 // Call delete to release memory
49 virtual IContour2D * clone() const = 0;
50
51
52 // returns class info at runtime
53 virtual ContourImplClass implClass() const = 0;
54
55 // Create a contour of given class (ecicSimple or ecicCached ) and copy pSrcContour to it
56 static IContour2D * create( ContourImplClass eClass, const IContour2D * pSrcContour = 0 );
57
59 //
60
61 // Returns true if this entity is closed, false otherwise.
62 virtual bool isClosed() const = 0;
63
64 // Makes the contour closed (open).
65 // This method doesn't change vertex count.
66 // In open contours the last bulge value is unused.
67 virtual void setClosed(bool bClosed = true) = 0;
68
69 // Removes the last vertex (point, bulge and metadata) and makes contour closed
70 // if the last and the first points are equal. Does nothing otherwise.
71 // Returns true, if the vertex was removed and the contour was closed
72 virtual bool setClosedIfEndsAreEqual( const OdGeTol& gTol = FMGeGbl::gTol ) = 0;
73
74 // returns true, if there is no vertices
75 virtual bool isEmpty() const = 0;
76
77 // returns number of vertices
78 virtual OdUInt32 numVerts() const = 0;
79
80 // returns number of segments
81 // It is less than or equal (if the contour is closed) to the number of vertices.
82 virtual OdUInt32 numSegments() const = 0;
83
84
85 // Returns true, if the contour contains at least one arc
86 virtual bool hasArcs() const = 0;
87
88
89
90
92 //
93 // 1. Simple Segment and Vertex operations
94 //
95
96
97
98 // Returns the type of the segment that begins at the specified vertex.
99 // If the index is out of range estUnknown is returned
100 // Otherwise one of estArc, estLine, estCoincident is returned
101 virtual SegmentType segmentType (OdUInt32 iIndex ) const = 0;
102
103
104 // returns IBulgeSeg2D
105 virtual Result getSegmentAt (OdUInt32 iIndex, IBulgeSeg2D & rSegment ) const = 0;
106
107 // Returns coordinates of segment ends and a bulge value
108 virtual Result getSegmentAt (OdUInt32 iIndex,
109 OdGePoint2d & ptStart,
110 OdGePoint2d & ptEnd,
111 double & dBulge ) const = 0;
112
113 // Returns OdGeLineSeg2d corresponding to the segment given by iIndex
114 // Error code will be returned, if the segment's type is estArc
115 virtual Result getLineSegAt (OdUInt32 iIndex, OdGeLineSeg2d& geLine ) const = 0;
116
117 // Returns OdGeCircArc2d corresponding to the segment given by iIndex
118 // Error code will be returned, if the segment's type is not estArc
119 virtual Result getArcSegAt (OdUInt32 iIndex, OdGeCircArc2d& geArc ) const = 0;
120
121
122 // Returns a point given by iIndex
123 virtual Result getPointAt (OdUInt32 iIndex, OdGePoint2d & ptPoint ) const = 0;
124
125 // Returns a bulge value of the segment given by the iIndex
126 virtual Result getBulgeAt (OdUInt32 iIndex, double & dBulge ) const = 0;
127
128 // Returns vertex data: starting point, bulge and metadata of corresponding segment
129 virtual Result getVertexAt(OdUInt32 iIndex, OdGePoint2d * pptPoint, double * pdBulge = 0, Attributes2D * pAttr = 0 ) const = 0;
130
131 // Returns internal angle of vertex vectors, given by the iIndex
132 virtual Result getInternalAngleAt( OdUInt32 iIndex, double & dAngle ) const = 0;
133
134 // Updates existing point coordinates
135 virtual Result setPointAt (OdUInt32 iIndex, const OdGePoint2d & ptPoint ) = 0;
136
137 // Updates existing bulge value
138 virtual Result setBulgeAt (OdUInt32 iIndex, double dBulge ) = 0;
139
140 // Updates existing point and bulge values
141 virtual Result setVertexAt (OdUInt32 iIndex, const OdGePoint2d & ptPoint, double dBulge ) = 0;
142
143 // Reset the contour
144 virtual void reset() = 0;
145
146 // Makes capacity of the vertex vector >= iReservedSize
147 // Number of vertices is not changed
148 virtual void reserveVertices( OdUInt32 iReservedSize ) = 0;
149
150 // Returns attributes for given segment
151 virtual const Attributes2D& attributesAt(OdUInt32 iIndex ) const = 0;
152
153 // Returns attributes for given segment for update
154 virtual Attributes2D& attributes4UAt(OdUInt32 iIndex ) = 0;
155
156 // Updates attributes for given segment
157 virtual Result setAttributesAt(OdUInt32 iIndex, const Attributes2D& rAttr ) = 0;
158
159 // Returns metadata for given segment or 0
160 virtual OdIntPtr metadataAt (OdUInt32 iIndex ) const = 0;
161
162 // Updates metadata for given segment
163 virtual Result setMetadataAt (OdUInt32 iIndex, OdIntPtr uNewData ) = 0;
164
165 // Adds a vertex at the specified index.
166 // The index should be <= numVerts()
167 // If it is equal to numVerts(), a new vertex will be appended to the array,
168 // otherwise it'll be inserted before the old iIndex vertex.
169 virtual Result addVertexAt (OdUInt32 iIndex, const OdGePoint2d& ptStart, double dBulge = 0.0, const Attributes2D& rAttr = Attributes2D::kNull ) = 0;
170
171 // Appends a new starting point and a bulge value.
172 // The bulge value relates to the segment starting at the point.
173 virtual Result appendVertex (const OdGePoint2d& ptStart, double dBulge = 0.0, const Attributes2D& rAttr = Attributes2D::kNull ) = 0;
174
175 // Appends vertex data from vecSource to this contour
176 virtual Result appendVertices ( const OdGePoint2dArray & vecSource ) = 0;
177
178 // Appends vertex data from vecSource and bulgeSource with some size to this contour
179 virtual Result appendVertices(OdUInt32 size, const OdGePoint2d* vecSource, const double* bulgeSource = NULL) = 0;
180
181 // Appends rSeg to this contour.
182 // Returns erPointNotOnThis if rSeg.startPt() is not equal to the end of this (open) contour
183 // if bShiftToHit is true, the rSeg is shifted and the return code is erWarnPointNotOnThis
184 // Note: if the contour is closed, the last (closing) segment is wiped out
185 virtual Result appendSegment ( const IBulgeSeg2D & rSeg, bool bShiftToHit = false, const OdGeTol& gTol = FMGeGbl::gTol ) = 0;
186
187 // Appends new segment to this contour ( updates bulge and metadata at the last vertex and
188 // appends new vertex with zero bulge and data)
189 // Returns erEmptyContour if there are no vertices in the contour
190 // Note: if the contour is closed, the last (closing) segment is wiped out
191 virtual Result appendSegment (double dBulge, const OdGePoint2d& ptNewEnd, const Attributes2D& rAttr = Attributes2D::kNull ) = 0;
192
193 // Appends rCont to this contour ( "closed" flags are ignored )
194 // Returns erPointNotOnThis if rCont.startPoint is not equal to the end of this (open) contour
195 // If bCloseGap is true, a segment, connecting the points is inserted and
196 // the return code is erWarnPointNotOnThis
197 virtual Result appendContour ( const IContour2D & rCont, bool bCloseGap = false, double dMaxGap = 1e99 ) = 0;
198
199 // Removes a vertex (and a corresponding segment).
200 // Bulge values of the other segments are left intact.
201 virtual Result removeVertexAt (OdUInt32 iIndex ) = 0;
202
204 //
205 // 2. Parameterization and arbitrary point access
206 //
207
208
209 // There are 3 ways to pick some (non-vertex) point on the contour:
210 // a) use an integer index to get a segment and then
211 // use parameter on the segment (GeLine or GeArc).
212 // b) use a distance along the curve from the starting point.
213 // c) use a "parameter" value.
214 //
215 // The last way is the fastest (and preferred in most cases) because of
216 // the "parameter" structure:
217 // dParam = startParam() + iIndex * (dOffsetOnSegment/dSegmentLength)
218 //
219 // So the point given by parameter value can be found at constant time.
220
221 inline double startParam() const { return 0.0; };
222
223 inline double endParam () const { return numSegments(); };
224
225 // Returns starting point of the contour, if the contour is not empty
226 virtual Result getStartPoint(OdGePoint2d & ptPoint ) const = 0;
227
228 // Returns ending point of the contour, if the contour is not empty.
229 // The ptPoint is equal to the starting point, if the contour is closed.
230 virtual Result getEndPoint (OdGePoint2d & ptPoint ) const = 0;
231
232
233 // Returns the length of the contour
234 virtual double length() const = 0;
235
236
237 // returns tangent vector at the parameter
238 virtual Result getTangent (double dParam, OdGeVector2d& vTangent ) const = 0;
239
240 // Returns a point given by a parameter value
241 virtual Result getPoint (double dParam, OdGePoint2d& ptPoint ) const = 0;
242
243 // Returns a point given by a distance along the curve from the starting point
244 virtual Result getPointAtDist (double dDist, OdGePoint2d& ptPoint ) const = 0;
245
246 // Converts parameter value to the distance from start along the curve
247 virtual Result getDistAtParam (double dParam, double& dDist ) const = 0;
248
249 // Converts distance from start to parameter value
250 virtual Result getParamAtDist (double dDist, double& dParam ) const = 0;
251
252
253 //virtual Result getParamAtPoint(const OdGePoint2d& ptPoint, double& dParam) const = 0;
254 //virtual Result getDistAtPoint (const OdGePoint2d& ptPoint, double& dDist) const = 0;
255
256
258 // Distance along the contour and closed contours
259
260 // Convert dParam to [0, endParam() ) range (on closed contours)
261 // and returns erOk, if the dParam is valid
262 virtual Result getNormalizedParam( double & dParam ) const = 0;
263
264 // Convert dDist to [0, length() ) range (on closed contours)
265 // and returns erOk, if the dDist is valid
266 virtual Result getNormalizedDist( double & dDist ) const = 0;
267
268
269 // Returns true, if the parameters are valid and equal (after normalization)
270 // The result is useless, if some parameter is not valid
271 virtual bool areEqualParams( double dParam1, double dParam2, const double dParamTol = 1e-10 ) const = 0;
272
273 // Returns true, if the distances are equal (after normalization) with given tolerance
274 // The result is useless, if some parameter is not valid
275 virtual bool areEqualDists ( double dDist1, double dDist2, const double dTol = FMGeGbl::gTol.equalPoint() ) const = 0;
276
277
278 // Get signed length of the shortest way btw the points 1 and 2.
279 // The points are given by distances along the curve
280 virtual double signedMinDist ( double dDist1, double dDist2 ) const = 0;
281
282 // Get signed length of the shortest way btw the points 1 and 2.
283 // The points are given by parameters on the curve
284 virtual double signedMinDistByParams( double dParam1, double dParam2 ) const = 0;
285
286
287
289 //
290 // 3. Geometrical Queries
291 //
292
293
294 // Adds geometrical extents of the contour to geExtents
295 virtual Result addExtents(OdGeExtents2d& geExtents ) const = 0;
296
297
298 // Returns signed area of the contour. (positive for CCW contours)
299 // In open contours the first and last vertices are considered
300 // to be connected with a straight line.
301 virtual double signedArea() const = 0;
302
303 virtual bool isConvex() const = 0;
304
305 inline double area() const { return ::fabs( signedArea() ); };
306
307 inline bool isCCW() const { return ( signedArea() >= 0.0 ); };
308
309 // returns internal point of the closed contour (contour orientation is ignored)
310 // If succeeded this->contains( rPoint, gTol ) will return true
311 virtual Result getInternalPoint( OdGePoint2d& rPoint, const OdGeTol& gTol = FMGeGbl::gTol ) const = 0;
312
313 // returns true, if the point lies on the contour
314 // *dParam stores the parameter of the point
315 virtual bool isOn( const OdGePoint2d & ptTest, double * pdParam = 0,
316 const OdGeTol & gTol = FMGeGbl::gTol ) const = 0;
317
318 // returns parameter of a point on the curve, which is closest to the ptTest
319 virtual double nearestParam( const OdGePoint2d & ptTest, OdGePoint2d * ptNearest = 0 ) const = 0;
320
321
322 // Returns true if the point lies inside the contour or on it's border.
323 // Contour must be closed.
324 // pbOnBorder is true, if the point lies on the border of the contour
325 // Note: the contour is considered to be non-oriented.
326 virtual bool contains( const OdGePoint2d &rPoint, bool * pbOnBorder = 0,
327 const OdGeTol & gTol = FMGeGbl::gTol) const = 0;
328
329
330 // Returns whether the contour intersects itself.
331 // Works O( N log N ) at the average
332 virtual bool isSelfIntersecting(const OdGeTol& gTol = FMGeGbl::gTol, bool bExcludeTouch = false ) const = 0;
333
334 // Returns whether this contour is closed and coincides with a directional
335 // boundary of some open 2D-region.
336 virtual bool isValidRegion( const OdGeTol& gTol = FMGeGbl::gTol ) const = 0;
337
338 virtual bool isInsideContour(const IContour2D& c2dOuter, bool fAllowBordersTouch = false, const OdGeTol& gTol = FMGeGbl::gTol) const = 0;
339
340
341 // Returns number of intersections
342 // and appends Intersection data to the vecPoints vector
343 // Note: some intersection points (esp. on segment bounds) can coincide
344 virtual OdUInt32 intersect( const IBulgeSeg2D & rSegB,
345 std::vector< Intersection > & vecPoints,
346 const OdGeTol & gTol = FMGeGbl::gTol ) const = 0;
347
348 // Returns number of intersections
349 // and appends Intersection data to the vecPoints vector
350 // Note: some intersection points (esp. on segment bounds) can coincide
351 virtual OdUInt32 intersect( const IContour2D& rContB,
352 std::vector< Intersection > & vecPoints,
353 const OdGeTol & gTol = FMGeGbl::gTol ) const = 0;
354
355 // Intersects this contour with an infinite line
356 // Returns number of intersections
357 // and APPENDS Intersection data to the vecPoints vector
358 // Note: some intersection points (esp. on segment bounds) can coincide
360 const OdGePoint2d& ptLineOrigin,
361 const OdGeVector2d& vLineDir,
362 std::vector< Intersection > & vecPoints,
363 const OdGeTol & gTol = FMGeGbl::gTol ) const = 0;
364
365
367 //
368 // 4. Transformations
369 //
370
371 // Transforms the contour
372 virtual Result transformBy(const OdGeMatrix2d& geMatrix,
373 const DeviationParams& devDeviation = FMGeGbl::gDefDev ) = 0;
374
375 // Reverses the contour.
376 virtual void reverse() = 0;
377
378 // Deletes redundant segments that have length = 0.
379 virtual void deleteCoincident( const OdGeTol & gTol = FMGeGbl::gTol ) = 0;
380
381 // Merges adjacent segments that lie on the same line or arc
382 virtual void mergeSegments( int iMergeFlags = 0, const OdGeTol & gTol = FMGeGbl::gTol ) = 0;
383
384 // Explodes all arc segments to lines.
385 // Note: &rDestCont == this IS OK!
386 virtual Result explodeTo( IContour2D & rDestCont, const DeviationParams& devDeviation,
387 OdIntPtr uArcMetadata = 0 ) const = 0;
388
389
391
392
393 // Adds a vertex corresponding to the specified parameter into the contour, if
394 // the vertex does not exist.
395 // Returns index of the created/existing vertex.
396 // Note: insertion/deletion of a vertex at dParam shifts all parameters > dParam by 1.0
397 virtual OdUInt32 createVertexAt( double dParam, const OdGeTol & gTol = FMGeGbl::gTol ) = 0;
398
399 // Adds vertices at the specified parameters into the contour, if
400 // the vertices do not exist.
401 virtual Result createVerticesAt( const std::vector<double> & vecParams, const OdGeTol & gTol = FMGeGbl::gTol ) = 0;
402
403 virtual Result createVerticesAt( OdUInt32 size, const double* vecParams, const OdGeTol & gTol = FMGeGbl::gTol ) = 0;
404
405 // returns sub-contour given by 2 parameters
406 // Note: if (dStartParam > dEndParam) the rSubContour will have opposite direction
407 virtual Result getSubContour(double dStartParam, double dEndParam,
408 IContour2D & rSubContour, const OdGeTol & gTol = FMGeGbl::gTol ) const = 0;
409
410 // appends sub-contour to rSubContour, if possible
411 virtual Result appendSubContourTo(double dStartParam, double dEndParam,
412 IContour2D & rSubContour, const OdGeTol & gTol = FMGeGbl::gTol ) const = 0;
413
414 // Divides this contour into sets of contours that lie to the left of the given line and to the right.
415 // Note: if OdGeLinearEnd2d can be an infinite of a finite line, depending
416 // on it`s class: OdGeLine2d or OdGeLineSeg2d
417 //virtual Result splitByLine( const OdGeLinearEnt2d& rLine,
418 // AECProfile& rLeftSide, AECProfile& rRightSide,
419 // const OdGeTol & gTol = FMGeGbl::gTol ) const = 0;
420
421
422 // replaces part of this contour with the given contour
423 // rSubContour should be an open curve.
424 // Directions are significant! I.e. if this one is closed, the remaining half is choosen
425 // using rSubContour direction.
426 virtual Result replaceSubContourTo( IContour2D& rDest, const IContour2D & rSubContour, const OdGeTol & gTol = FMGeGbl::gTol ) const = 0;
427
428};
429
430
431
432
433
434};
435
436
437#endif //__FM_ICONTOUR2D_H__
unsigned int OdUInt32
ptrdiff_t OdIntPtr
static FMGEOMETRY_API_STATIC const Attributes2D kNull
virtual OdUInt32 intersect(const IBulgeSeg2D &rSegB, std::vector< Intersection > &vecPoints, const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual Result appendSegment(const IBulgeSeg2D &rSeg, bool bShiftToHit=false, const OdGeTol &gTol=FMGeGbl::gTol)=0
virtual SegmentType segmentType(OdUInt32 iIndex) const =0
virtual OdUInt32 intersect(const IContour2D &rContB, std::vector< Intersection > &vecPoints, const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual Result getSubContour(double dStartParam, double dEndParam, IContour2D &rSubContour, const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual Result getInternalAngleAt(OdUInt32 iIndex, double &dAngle) const =0
virtual Result getNormalizedDist(double &dDist) const =0
static IContour2D * create(ContourImplClass eClass, const IContour2D *pSrcContour=0)
virtual Result getVertexAt(OdUInt32 iIndex, OdGePoint2d *pptPoint, double *pdBulge=0, Attributes2D *pAttr=0) const =0
virtual Result getBulgeAt(OdUInt32 iIndex, double &dBulge) const =0
virtual bool isClosed() const =0
virtual IContour2D * clone() const =0
virtual void mergeSegments(int iMergeFlags=0, const OdGeTol &gTol=FMGeGbl::gTol)=0
virtual Result getPoint(double dParam, OdGePoint2d &ptPoint) const =0
virtual Result getSegmentAt(OdUInt32 iIndex, OdGePoint2d &ptStart, OdGePoint2d &ptEnd, double &dBulge) const =0
virtual Result replaceSubContourTo(IContour2D &rDest, const IContour2D &rSubContour, const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual Result getPointAtDist(double dDist, OdGePoint2d &ptPoint) const =0
virtual void set(const IContour2D &rSrcCont)=0
virtual bool isValidRegion(const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual void deleteCoincident(const OdGeTol &gTol=FMGeGbl::gTol)=0
virtual double signedMinDistByParams(double dParam1, double dParam2) const =0
virtual Result setAttributesAt(OdUInt32 iIndex, const Attributes2D &rAttr)=0
virtual Result getDistAtParam(double dParam, double &dDist) const =0
virtual bool isOn(const OdGePoint2d &ptTest, double *pdParam=0, const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual Result getStartPoint(OdGePoint2d &ptPoint) const =0
virtual Result explodeTo(IContour2D &rDestCont, const DeviationParams &devDeviation, OdIntPtr uArcMetadata=0) const =0
virtual Result setMetadataAt(OdUInt32 iIndex, OdIntPtr uNewData)=0
virtual void reserveVertices(OdUInt32 iReservedSize)=0
virtual double length() const =0
virtual bool setClosedIfEndsAreEqual(const OdGeTol &gTol=FMGeGbl::gTol)=0
virtual void reset()=0
virtual bool hasArcs() const =0
virtual OdUInt32 intersectLine(const OdGePoint2d &ptLineOrigin, const OdGeVector2d &vLineDir, std::vector< Intersection > &vecPoints, const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual bool isSelfIntersecting(const OdGeTol &gTol=FMGeGbl::gTol, bool bExcludeTouch=false) const =0
virtual Result addExtents(OdGeExtents2d &geExtents) const =0
virtual bool areEqualDists(double dDist1, double dDist2, const double dTol=FMGeGbl::gTol.equalPoint()) const =0
virtual bool isEmpty() const =0
virtual Result transformBy(const OdGeMatrix2d &geMatrix, const DeviationParams &devDeviation=FMGeGbl::gDefDev)=0
virtual void setClosed(bool bClosed=true)=0
virtual Result getNormalizedParam(double &dParam) const =0
virtual Result getPointAt(OdUInt32 iIndex, OdGePoint2d &ptPoint) const =0
virtual const Attributes2D & attributesAt(OdUInt32 iIndex) const =0
virtual bool contains(const OdGePoint2d &rPoint, bool *pbOnBorder=0, const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual OdUInt32 numVerts() const =0
virtual Result appendVertex(const OdGePoint2d &ptStart, double dBulge=0.0, const Attributes2D &rAttr=Attributes2D::kNull)=0
virtual OdUInt32 createVertexAt(double dParam, const OdGeTol &gTol=FMGeGbl::gTol)=0
virtual void reverse()=0
virtual Result getTangent(double dParam, OdGeVector2d &vTangent) const =0
virtual Result createVerticesAt(OdUInt32 size, const double *vecParams, const OdGeTol &gTol=FMGeGbl::gTol)=0
virtual double signedMinDist(double dDist1, double dDist2) const =0
virtual Result appendSubContourTo(double dStartParam, double dEndParam, IContour2D &rSubContour, const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual bool isConvex() const =0
virtual Result createVerticesAt(const std::vector< double > &vecParams, const OdGeTol &gTol=FMGeGbl::gTol)=0
virtual Result setVertexAt(OdUInt32 iIndex, const OdGePoint2d &ptPoint, double dBulge)=0
virtual Result getArcSegAt(OdUInt32 iIndex, OdGeCircArc2d &geArc) const =0
virtual double nearestParam(const OdGePoint2d &ptTest, OdGePoint2d *ptNearest=0) const =0
virtual bool isInsideContour(const IContour2D &c2dOuter, bool fAllowBordersTouch=false, const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual Result removeVertexAt(OdUInt32 iIndex)=0
virtual OdIntPtr metadataAt(OdUInt32 iIndex) const =0
virtual bool areEqualParams(double dParam1, double dParam2, const double dParamTol=1e-10) const =0
virtual Result setPointAt(OdUInt32 iIndex, const OdGePoint2d &ptPoint)=0
virtual Result appendVertices(OdUInt32 size, const OdGePoint2d *vecSource, const double *bulgeSource=NULL)=0
virtual Result setBulgeAt(OdUInt32 iIndex, double dBulge)=0
virtual double signedArea() const =0
virtual Result appendContour(const IContour2D &rCont, bool bCloseGap=false, double dMaxGap=1e99)=0
virtual Result getInternalPoint(OdGePoint2d &rPoint, const OdGeTol &gTol=FMGeGbl::gTol) const =0
virtual Result getEndPoint(OdGePoint2d &ptPoint) const =0
virtual Result getSegmentAt(OdUInt32 iIndex, IBulgeSeg2D &rSegment) const =0
virtual Result appendSegment(double dBulge, const OdGePoint2d &ptNewEnd, const Attributes2D &rAttr=Attributes2D::kNull)=0
virtual Attributes2D & attributes4UAt(OdUInt32 iIndex)=0
virtual Result appendVertices(const OdGePoint2dArray &vecSource)=0
virtual OdUInt32 numSegments() const =0
double startParam() const
virtual Result addVertexAt(OdUInt32 iIndex, const OdGePoint2d &ptStart, double dBulge=0.0, const Attributes2D &rAttr=Attributes2D::kNull)=0
virtual Result getParamAtDist(double dDist, double &dParam) const =0
virtual ContourImplClass implClass() const =0
virtual Result getLineSegAt(OdUInt32 iIndex, OdGeLineSeg2d &geLine) const =0
Definition: GeTol.h:49
GLsizeiptr size
Definition: gles2_ext.h:182
static FMGEOMETRY_API_STATIC DeviationParams gDefDev
Definition: FMGeometry.h:161
static FMGEOMETRY_API_STATIC OdGeTol gTol
Definition: FMGeometry.h:169