Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
igeompoly.h
Go to the documentation of this file.
1 #pragma once
2 // igeompoly.h
3 
6 
7 #include "ilinktype.h"
8 #include "dim.h"
9 #include "base/src/farray.h"
10 
11 namespace itasca {
12  class IThing;
13 }
14 
15 namespace itascaxd {
16  using namespace itasca;
17 
18  class IGeomPoint;
19  class IGeomEdge;
20  class GeomBase;
23  class IGeomPoly {
24  public:
26  inline static const TType type_ = 0x4c815bce;
27 
29  virtual IThing * getIThing()=0;
31  virtual const IThing * getIThing() const=0;
32 
34  virtual quint64 getSize() const=0;
36  virtual quint64 getNumFakeEdges() const =0;
38  virtual IGeomEdge * getEdge(quint32 index)=0;
40  virtual const IGeomEdge * getEdge(quint32 index) const=0;
45  virtual bool addEdge(IGeomEdge *edge,bool throwException=true,bool forceFlip=false)=0;
48  virtual IGeomEdge * removeEdge()=0;
50  virtual bool isValid() const=0;
52  virtual IGeomPoint * getPoint(quint32 index)=0;
54  virtual const IGeomPoint *getPoint(quint32 index) const=0;
57  virtual bool getFlip(quint32 index) const=0;
59  virtual DVect getVector(quint32 index) const=0;
61  virtual DVect getCentroid() const=0;
63  virtual double getArea() const=0;
65  virtual DAVect getDANormal() const=0;
67  virtual DVect3 getNormal() const=0;
71  virtual bool isPlanar(const double &tolerance=1e-7) const=0;
73  virtual bool isConvex(const double &tolerance=1e-7) const=0;
77  virtual bool isIn(const DVect &v,DVect *on=0,const double &tolerance=1e-7) const=0;
79  virtual DVect getClosestPoint(const DVect &v) const=0;
80 
82  virtual int getConnectIndex() const { return 0; }
84  virtual int getManifoldIndex() const { return 0; }
86  virtual int getFrontSideIndex() const { return 0; }
88  virtual int getBackSideIndex() const { return 0; }
89 
91  virtual CLinkType<IGeomPoly> getNext(quint32 index) const=0;
93  virtual LinkType<IGeomPoly> getNext(quint32 index) =0;
95  virtual const GeomBase * getGeomBase() const=0;
98  virtual DVect convertToGlobal(double u, double v) const =0;
99 #ifdef THREED
100  virtual DVect2 convertToLocal(const DVect &pos) const =0;
103 #endif
104 
106  virtual void triangulatedList(FArray<DVect> * ret, const double &tolerance = 1e-7)=0;
107 
108  virtual quint32 index(const IGeomEdge *edge) const = 0;
109  virtual quint32 index(const IGeomPoly *vert) const = 0;
110  virtual void setEdge(quint32 ind, IGeomEdge *edge) = 0;
111 
112  };
113 } // namespace itascaxd
114 // EoF
virtual int getManifoldIndex() const
Returns the manifold index, computed.
Definition: igeompoly.h:84
namespace Itasca
Definition: basememory.cpp:9
Base class for items that will be stored in containers.
Definition: ithing.h:31
DIM - Provides code portability between 2D and 3D codes.
Interface for LinkType<> objects, POD that contain both the pointer to the next object and an index f...
An array class that attempts to minimize unnecessary heap access.
A class representing a single closed polygon made up of a list of edges.
Definition: igeompoly.h:23
unsigned int TType
class type indicator
Definition: basedef.h:41
Interface for a user-defined geometric point.
Definition: igeompoint.h:18
Interface for a user-defined geometric edge, defined as the line between two IGeomPoint objects.
Definition: igeomedge.h:24
virtual int getFrontSideIndex() const
Returns the front side index, computed.
Definition: igeompoly.h:86
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4
DAVect3 DAVect
Angular vector of doubles, either 2D or 3D.
Definition: dim.h:151
virtual int getConnectIndex() const
Returns the connect index, computed.
Definition: igeompoly.h:82
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition: dim.h:145
virtual int getBackSideIndex() const
Returns the back side index, computed.
Definition: igeompoly.h:88