1 // File: SMDS_QuadraticEdge.cxx
2 // Created: 16.01.06 16:25:42
4 // Copyright: Open CASCADE 2006
7 #include "SMDS_QuadraticEdge.hxx"
9 #include "SMDS_IteratorOfElements.hxx"
10 #include "SMDS_MeshNode.hxx"
14 //=======================================================================
15 //function : SMDS_QuadraticEdge
17 //=======================================================================
19 SMDS_QuadraticEdge::SMDS_QuadraticEdge(const SMDS_MeshNode * node1,
20 const SMDS_MeshNode * node2,
21 const SMDS_MeshNode * node12)
22 :SMDS_MeshEdge(node1,node2)
28 //=======================================================================
31 //=======================================================================
33 void SMDS_QuadraticEdge::Print(ostream & OS) const
35 OS << "quadratic edge <" << GetID() << "> : ( first-" << myNodes[0]
36 << " , last-" << myNodes[1] << " , medium-" << myNodes[2] << ") " << endl;
40 //=======================================================================
43 //=======================================================================
45 int SMDS_QuadraticEdge::NbNodes() const
51 //=======================================================================
54 //=======================================================================
56 class SMDS_QuadraticEdge_MyNodeIterator:public SMDS_ElemIterator
58 const SMDS_MeshNode *const* myNodes;
61 SMDS_QuadraticEdge_MyNodeIterator(const SMDS_MeshNode * const* nodes):
62 myNodes(nodes),myIndex(0) {}
69 const SMDS_MeshElement* next()
72 return myNodes[myIndex-1];
76 SMDS_ElemIteratorPtr SMDS_QuadraticEdge::
77 elementsIterator(SMDSAbs_ElementType type) const
82 return SMDS_MeshElement::elementsIterator(SMDSAbs_Edge);
84 return SMDS_ElemIteratorPtr(new SMDS_QuadraticEdge_MyNodeIterator(myNodes));
86 return SMDS_ElemIteratorPtr
87 (new SMDS_IteratorOfElements
88 (this,type, SMDS_ElemIteratorPtr(new SMDS_QuadraticEdge_MyNodeIterator(myNodes))));
93 //=======================================================================
94 //function : ChangeNodes
96 //=======================================================================
98 bool SMDS_QuadraticEdge::ChangeNodes(const SMDS_MeshNode * node1,
99 const SMDS_MeshNode * node2,
100 const SMDS_MeshNode * node12)
109 //=======================================================================
110 //function : IsMediumNode
112 //=======================================================================
114 bool SMDS_QuadraticEdge::IsMediumNode(const SMDS_MeshNode * node) const
116 return (myNodes[2]==node);