31 template<
typename EntityT >
41 template<
typename EntityT >
48 template<
int EdgeNumber >
52 template<
int EdgeNumber >
65 static const int edgeNumber_ = EdgeNumber;
75 for (
unsigned int iDim = 0; iDim <
dim; ++iDim ) {
77 for (
unsigned int iEd1 = 0; iEd1 <
edgeNumber_; ++iEd1 ) {
78 som += vEd0 [ iEd1 ]->pos() [ iDim ];
83 this->
pos().push_back(som);
87 for (
unsigned int iEd1 = 0; iEd1 <
edgeNumber_; ++iEd1 ) {
88 this->
vEd().push_back(vEd1 [ iEd1 ]);
91 std :: vector< Point * > vPt1;
92 for (
unsigned int iEd1 = 0; iEd1 <
edgeNumber_; ++iEd1 ) {
94 bool alreadyTaken =
false;
95 for (
unsigned int iPt2 = 0; iPt2 < vPt1.size(); ++iPt2 ) {
96 if ( this->
vEd() [ iEd1 ]->vPt() [ iPt1 ]->isIt(vPt1 [ iPt2 ]) ) {
101 if ( !alreadyTaken ) {
102 vPt1.push_back(this->
vEd() [ iEd1 ]->
vPt() [ iPt1 ]);
109 vPt2.insert( vPt2.begin(), vPt2.back() );
112 for (
unsigned int iPt1 = 0; iPt1 <
edgeNumber_; ++iPt1 ) {
113 this->
vPt().push_back(vPt2 [ iPt1 ]);
120 int superposedEdgeNumber = 0;
121 for (
unsigned int ie0 = 0; ie0 < pl0.
vEd().size(); ++ie0 ) {
122 for (
unsigned int ie1 = 0; ie1 < pl1.
vEd().size(); ++ie1 ) {
124 ++superposedEdgeNumber;
129 return ( superposedEdgeNumber == edgeNumber_ );
135 this->
vPt() [ iPt ].translate(dx);
140 template<
typename EntityT >
141 const std :: vector< EntityT * >
sortContainer_(
const std :: vector< EntityT * > &vEnt0)
const
150 std :: vector< EntityAngle< EntityT > > vEntAngle;
151 vEntAngle.resize(edgeNumber_);
152 for (
unsigned int iEnt1 = 0; iEnt1 <
edgeNumber_; ++iEnt1 ) {
153 Point c(vEnt0 [ iEnt1 ]->
pos() [ 0 ], vEnt0 [ iEnt1 ]->
pos() [ 1 ]);
154 vEntAngle [ iEnt1 ].entPtr = vEnt0 [ iEnt1 ];
155 vEntAngle [ iEnt1 ].angle = angle(a, b, c);
158 sort(vEntAngle.begin(), vEntAngle.end(), sortByAngle< EntityT > );
160 std :: vector< EntityT * > vEnt1;
163 for (
unsigned int iEnt1 = 0; iEnt1 <
edgeNumber_; ++iEnt1 ) {
164 #if CLOCKWISE_ROTATION_SENSE == 0
165 vEnt1.push_back(vEntAngle [ iEnt1 ].entPtr);
167 #if CLOCKWISE_ROTATION_SENSE == 1
168 vEnt1.push_back(vEntAngle [ ( edgeNumber_ - iEnt1 - 1 ) ].entPtr);