diff --git a/src/node.cpp b/src/node.cpp --- a/src/node.cpp +++ b/src/node.cpp @@ -46,20 +46,19 @@ ostream &Edge::print(ostream &os) const } ostream &Neighbor::print(ostream &os) const { - + os << " {" << cell->Index() << " " << nb1->Index() << " " << nb2->Index() << "}"; return os; - } ostream &operator<<(ostream &os, const Neighbor &n) { n.print(os); return os; } - + -Node::Node(void) : Vector() { - +Node::Node(void) : Vector() +{ index=(nnodes++); node_set =0; fixed=false; @@ -68,7 +67,8 @@ Node::Node(void) : Vector() { dead=false; } -Node::Node(int ind) : Vector() { +Node::Node(int ind) : Vector() +{ node_set =0; index=ind; fixed=false; @@ -77,8 +77,8 @@ Node::Node(int ind) : Vector() { dead=false; } -Node::Node(const Vector &src) : Vector(src) { - +Node::Node(const Vector &src) : Vector(src) +{ node_set = 0; index=(nnodes++); fixed=false; @@ -87,8 +87,8 @@ Node::Node(const Vector &src) : Vector(s dead = false; } -Node::Node(double x,double y, double z) : Vector (x,y,z) { - +Node::Node(double x,double y, double z) : Vector (x,y,z) +{ node_set = 0; index=(nnodes++); fixed=false; @@ -97,8 +97,8 @@ Node::Node(double x,double y, double z) dead = false; } -Node::Node(const Node &src) : Vector(src) { - +Node::Node(const Node &src) : Vector(src) +{ node_set=0; owners=src.owners; m=src.m; @@ -110,20 +110,21 @@ Node::Node(const Node &src) : Vector(src } -Cell &Node::getCell(const Neighbor &i) { +Cell &Node::getCell(const Neighbor &i) +{ return *i.getCell(); // use accessor! } ostream &Node::print(ostream &os) const { - + if (!dead) os << "Node "; else os << "DEAD NODE "; - + os << index << "[ {" << x << ", " << y << ", " << z << "}: {"; - + os << "Neighbors = { "; for (list::const_iterator i = owners.begin(); i!=owners.end(); i++) { @@ -132,7 +133,6 @@ ostream &Node::print(ostream &os) const os << " } " << endl; return os; - } @@ -154,70 +154,65 @@ void Node::DrawIndex(QGraphicsScene *c) } void Node::DrawOwners(QGraphicsScene *c) const { - + stringstream text; - - + text << owners.size(); - text << owners.size(); - - QGraphicsSimpleTextItem *number = new QGraphicsSimpleTextItem ( QString (text.str().c_str()), 0, c ); number->setFont( QFont( "Helvetica", par.nodenumsize, QFont::Bold) ); number->setPen( QPen(par.textcolor) ); number->setZValue(20); number->show(); Vector offs=Cell::Offset(); - + number ->setPos(((offs.x+x)*Cell::Factor()), ((offs.y+y)*Cell::Factor()) ); } +QVector Node::NeighbourAngles(void) +{ + QVector angles; + for (list::iterator i=owners.begin(); + i!=owners.end(); + i++) { -QVector Node::NeighbourAngles(void) { - - QVector angles; - for (list::iterator i=owners.begin(); - i!=owners.end(); - i++) { - - Vector v1 = (*this - *i->nb1).Normalised(); - Vector v2 = (*this - *i->nb2).Normalised(); - - double angle = v1.SignedAngle(v2); - if (angle<0) { - //cerr << "Changing sign of angle " << angle << endl; - angle = angle + 2*Pi; - } - angles.push_back(angle); - - //cerr << "Cell " << i->cell->Index() << ": " << v1 << " and " << v2 << ": angle = " << angles.back() << ", " << v1.Angle(v2) << endl; - - } - - double sum=0.; - for (QVector::iterator i=angles.begin(); - i!=angles.end(); - i++) { - sum+=*i; - } - //cerr << "Angle sum = " << sum << endl; - // Check if the summed angle is different from 2 Pi - if (fabs(sum-(2*Pi))>0.0001) { - - MyWarning::warning("sum = %f",sum); - } - return angles; + Vector v1 = (*this - *i->nb1).Normalised(); + Vector v2 = (*this - *i->nb2).Normalised(); + + double angle = v1.SignedAngle(v2); + if (angle<0) { + //cerr << "Changing sign of angle " << angle << endl; + angle = angle + 2*Pi; + } + angles.push_back(angle); + + //cerr << "Cell " << i->cell->Index() << ": " << v1 << " and " << v2 + // << ": angle = " << angles.back() << ", " << v1.Angle(v2) << endl; + + } + + double sum=0.; + for (QVector::iterator i=angles.begin(); + i!=angles.end(); + i++) { + sum+=*i; + } + //cerr << "Angle sum = " << sum << endl; + // Check if the summed angle is different from 2 Pi + if (fabs(sum-(2*Pi))>0.0001) { + + MyWarning::warning("sum = %f",sum); + } + return angles; } - #endif - ostream &operator<<(ostream &os, const Node &n) { n.print(os); return os; } +/* finis */