NBContHelper::same_connection_edge_sorter Class Reference

#include <NBContHelper.h>


Detailed Description

same_connection_edge_sorter This class is used to sort edges which connect the same nodes. The edges are sorted in dependence to edges connecting them. The rightmost will be the first in the list; the leftmost the last one.

Definition at line 288 of file NBContHelper.h.


Public Member Functions

std::pair< SUMOReal, SUMOReal > getMinMaxRelAngles (NBEdge *e) const
int operator() (NBEdge *e1, NBEdge *e2) const
 comparing operation
 same_connection_edge_sorter ()
 constructor

Constructor & Destructor Documentation

NBContHelper::same_connection_edge_sorter::same_connection_edge_sorter (  )  [inline, explicit]

constructor

Definition at line 291 of file NBContHelper.h.

00291 { }


Member Function Documentation

std::pair<SUMOReal, SUMOReal> NBContHelper::same_connection_edge_sorter::getMinMaxRelAngles ( NBEdge e  )  const [inline]

Definition at line 312 of file NBContHelper.h.

References NBEdge::getAngle(), NBEdge::getConnectedEdges(), max, min, NBHelpers::normRelAngle(), and SUMOReal.

Referenced by operator()().

00312                                                                         {
00313             SUMOReal min = 360;
00314             SUMOReal max = 360;
00315             const EdgeVector &ev = e->getConnectedEdges();
00316             for (EdgeVector::const_iterator i=ev.begin(); i!=ev.end(); ++i) {
00317                 SUMOReal angle = NBHelpers::normRelAngle(
00318                                      e->getAngle(), (*i)->getAngle());
00319                 if (min==360||min>angle) {
00320                     min = angle;
00321                 }
00322                 if (max==360||max<angle) {
00323                     max = angle;
00324                 }
00325             }
00326             return std::pair<SUMOReal, SUMOReal>(min, max);
00327         }

int NBContHelper::same_connection_edge_sorter::operator() ( NBEdge e1,
NBEdge e2 
) const [inline]

comparing operation

Definition at line 294 of file NBContHelper.h.

References NBEdge::getID(), and getMinMaxRelAngles().

00294                                                      {
00295             std::pair<SUMOReal, SUMOReal> mm1 = getMinMaxRelAngles(e1);
00296             std::pair<SUMOReal, SUMOReal> mm2 = getMinMaxRelAngles(e2);
00297             if (mm1.first==mm2.first && mm1.second==mm2.second) {
00298                 // ok, let's simply sort them arbitrarily
00299                 return e1->getID() < e2->getID();
00300             }
00301 
00302             assert(
00303                 (mm1.first<=mm2.first&&mm1.second<=mm2.second)
00304                 ||
00305                 (mm1.first>=mm2.first&&mm1.second>=mm2.second));
00306             return (mm1.first>=mm2.first&&mm1.second>=mm2.second);
00307         }


The documentation for this class was generated from the following file:

Generated on Wed May 5 00:06:51 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6