38 static const int verticesNumber_ = 2;
48 this->vPt_.push_back(p0);
49 this->vPt_.push_back(p1);
51 this->vEd_.push_back(
this);
54 eucSize_ = eucDistance(* p0, * p1);
65 const std :: vector< Scalar >
pos() const
67 std :: vector< Scalar > pos0;
71 for (
int iDim = 0; iDim <
dim; ++iDim ) {
72 for (
int iPt = 0; iPt < this->vPt_.size(); ++iPt ) {
73 pos0 [ iDim ] += this->vPt_ [ iPt ]->pos() [ iDim ];
77 for (
int iDim = 0; iDim <
dim; ++iDim ) {
112 int sharedPointsNumber = 0;
114 ++sharedPointsNumber;
118 ++sharedPointsNumber;
122 ++sharedPointsNumber;
126 ++sharedPointsNumber;
129 return ( sharedPointsNumber == 1 );
138 friend bool addLeftSideNeighbor(
const std :: vector< Edge * > &ve0, std :: vector< Edge * > &ve1,
int &headPointIndex)
140 std :: vector< Edge * > neighbors;
142 int newHeadPointIndex = -1;
143 for (
int ie0 = 0; ie0 < ve0.size(); ++ie0 ) {
144 if ( ve0 [ ie0 ]->
has(* ve1.front()->vPt() [ headPointIndex ]) && !
superposed( * ve0 [ ie0 ], * ve1.front() ) ) {
145 neighbors.push_back(ve0 [ ie0 ]);
146 newHeadPointIndex = 1 - ( ve0 [ ie0 ]->indexOf(* ve1.front()->vPt() [ headPointIndex ]) );
150 if ( neighbors.size() > 1 ) {
151 std :: cerr <<
"error : neighbors.size() must be 0 or 1 in Edge::addLeftSideNeighbor()\n";
152 std :: cerr <<
"exiting the program by calling : std::exit(1);\n";
156 ve1.insert(ve1.begin(), neighbors [ 0 ]);
157 headPointIndex = newHeadPointIndex;
158 return ( neighbors.size() == 1 );
164 this->vPt_ [ iPt ]->translate(dx);
168 void infos(
const std :: string &name0 =
"")
const
170 std :: cout <<
"# edge " << name0 <<
" ";
173 <<
" , Id = " << this->
Id()
174 <<
" , mark = " << this->
mark()
177 this->
vPt() [ 0 ]->infos();
178 this->
vPt() [ 1 ]->infos();