MeVisLabToolboxReference
|
00001 // **InsertLicense** code 00002 //---------------------------------------------------------------------------------- 00004 00011 #ifndef __WEMQuad_H 00012 #define __WEMQuad_H 00013 00014 #include "WEMFace.h" 00015 #include "WEMNode.h" 00016 #include "WEMEdge.h" 00017 00018 ML_START_NAMESPACE 00019 00021 class MLWEM_EXPORT WEMQuad : public WEMFace 00022 { 00023 00024 public: 00025 00027 WEMQuad(); 00029 WEMQuad(const WEMQuad& q); 00031 virtual ~WEMQuad(); 00033 void clone(WEMQuad* quad); 00034 00036 virtual void computeNormal(); 00038 virtual inline unsigned int getNumNodes() const { return 4; } 00040 virtual int getIndex(WEMNode* node) const; 00042 virtual inline WEMNode* getNodeAt(unsigned int index) { return _nodes[index]; } 00044 virtual inline const WEMNode* getNodeAt(unsigned int index) const { return const_cast<WEMQuad*>(this)->getNodeAt(index); } 00046 virtual inline void setNode(unsigned int index, WEMNode* node) { _nodes[index] = node; } 00048 virtual inline void setNodes(WEMNode* node1, WEMNode* node2, WEMNode* node3, WEMNode* node4) { 00049 _nodes[0] = node1; _nodes[1] = node2; _nodes[2] = node3; _nodes[3] = node4; 00050 } 00052 virtual void replace(WEMNode* orig, WEMNode* replacement); 00054 virtual bool contains(WEMNode* node) const; 00056 virtual Vector3 getNodePositionAt(unsigned int index) const { return _nodes[index]->getPosition(); } 00057 00059 virtual int getIndex(WEMEdge* edge) const; 00061 virtual inline WEMEdge* getEdgeAt(unsigned int index) { return _edges[index]; } 00063 virtual inline const WEMEdge* getEdgeAt(unsigned int index) const { return const_cast<WEMQuad*>(this)->getEdgeAt(index); } 00065 virtual inline void setEdge(unsigned int index, WEMEdge* edge) { _edges[index] = edge; } 00067 virtual inline void setEdges(WEMEdge* edge1, WEMEdge* edge2, WEMEdge* edge3, WEMEdge* edge4) { 00068 _edges[0] = edge1; _edges[1] = edge2; _edges[2] = edge3; _edges[3] = edge4; 00069 } 00071 virtual void replace(WEMEdge* orig, WEMEdge* replacement); 00073 virtual bool contains(WEMEdge* edge) const; 00074 00076 virtual Vector3 getCentroid() const; 00078 virtual double getPerimeter() const; 00080 virtual double getArea() const; 00082 virtual inline WEMNode* getOther(WEMNode* , WEMNode* ) { return NULL; } 00084 virtual inline const WEMNode* getOther(WEMNode* , WEMNode* ) const { return NULL; } 00086 virtual inline WEMEdge* getOther(WEMEdge* , WEMEdge* ) { return NULL; } 00088 virtual inline const WEMEdge* getOther(WEMEdge* , WEMEdge* ) const { return NULL; } 00090 virtual inline WEMEdge* getEdgeNotContaining(WEMNode* ) { return NULL; } 00092 virtual inline const WEMEdge* getEdgeNotContaining(WEMNode* ) const { return NULL; } 00099 virtual double getQuality() const; 00102 virtual int isConcave() const; 00104 virtual void mirror(); 00105 00106 private: 00107 00109 WEMNode* _nodes[4]; 00111 WEMEdge* _edges[4]; 00112 }; 00113 00114 ML_END_NAMESPACE 00115 00116 #endif // __WEMQuad_H