NIVissimAbstractEdge Class Reference

#include <NIVissimAbstractEdge.h>

Inheritance diagram for NIVissimAbstractEdge:

NIVissimConnection NIVissimEdge

Detailed Description

Definition at line 43 of file NIVissimAbstractEdge.h.


Public Member Functions

void addDisturbance (int disturbance)
virtual void buildGeom ()=0
SUMOReal crossesAtPoint (const Position2D &p1, const Position2D &p2) const
bool crossesEdge (NIVissimAbstractEdge *c) const
Position2D crossesEdgeAtPoint (NIVissimAbstractEdge *c) const
const IntVectorgetDisturbances () const
const Position2DVectorgetGeometry () const
Position2D getGeomPosition (SUMOReal pos) const
int getID () const
bool hasNodeCluster () const
 NIVissimAbstractEdge (int id, const Position2DVector &geom)
bool overlapsWith (const AbstractPoly &p, SUMOReal offset=0.0) const
virtual void setNodeCluster (int nodeid)=0
void splitAssigning ()
virtual ~NIVissimAbstractEdge ()

Static Public Member Functions

static void clearDict ()
static NIVissimAbstractEdgedictionary (int id)
static bool dictionary (int id, NIVissimAbstractEdge *e)
static IntVector getWithin (const AbstractPoly &p, SUMOReal offset=0.0)
static void splitAndAssignToNodes ()

Protected Attributes

IntVector myDisturbances
Position2DVector myGeom
int myID
int myNode

Private Types

typedef std::map< int,
NIVissimAbstractEdge * > 
DictType

Static Private Attributes

static DictType myDict

Member Typedef Documentation

typedef std::map<int, NIVissimAbstractEdge*> NIVissimAbstractEdge::DictType [private]

Reimplemented in NIVissimConnection, and NIVissimEdge.

Definition at line 80 of file NIVissimAbstractEdge.h.


Constructor & Destructor Documentation

NIVissimAbstractEdge::NIVissimAbstractEdge ( int  id,
const Position2DVector geom 
)

Definition at line 47 of file NIVissimAbstractEdge.cpp.

References dictionary(), Position2DVector::getCont(), MsgHandler::getWarningInstance(), MsgHandler::inform(), myGeom, Position2DVector::push_back_noDoublePos(), toString(), and GeoConvHelper::x2cartesian().

00049         : myID(id), myNode(-1) {
00050     // convert/publicate geometry
00051     std::deque<Position2D>::const_iterator i;
00052     const std::deque<Position2D> &geomC = geom.getCont();
00053     for (i=geomC.begin(); i!=geomC.end(); ++i) {
00054         Position2D p = *i;
00055         if (!GeoConvHelper::x2cartesian(p)) {
00056             MsgHandler::getWarningInstance()->inform("Unable to project coordinates for edge '" + toString(id) + "'.");
00057         }
00058         myGeom.push_back_noDoublePos(p);
00059     }
00060     //
00061     dictionary(id, this);
00062 }

NIVissimAbstractEdge::~NIVissimAbstractEdge (  )  [virtual]

Definition at line 65 of file NIVissimAbstractEdge.cpp.

00065 {}


Member Function Documentation

void NIVissimAbstractEdge::addDisturbance ( int  disturbance  ) 

Definition at line 192 of file NIVissimAbstractEdge.cpp.

References myDisturbances.

00192                                                     {
00193     myDisturbances.push_back(disturbance);
00194 }

virtual void NIVissimAbstractEdge::buildGeom (  )  [pure virtual]

void NIVissimAbstractEdge::clearDict (  )  [static]

Definition at line 177 of file NIVissimAbstractEdge.cpp.

References myDict.

Referenced by NIImporter_Vissim::~NIImporter_Vissim().

00177                                 {
00178     for (DictType::iterator i=myDict.begin(); i!=myDict.end(); i++) {
00179         delete(*i).second;
00180     }
00181     myDict.clear();
00182 }

SUMOReal NIVissimAbstractEdge::crossesAtPoint ( const Position2D p1,
const Position2D p2 
) const

bool NIVissimAbstractEdge::crossesEdge ( NIVissimAbstractEdge c  )  const

Definition at line 123 of file NIVissimAbstractEdge.cpp.

References Position2DVector::intersects(), and myGeom.

Referenced by NIVissimNodeCluster::buildNBNode().

00123                                                                {
00124     return myGeom.intersects(c->myGeom);
00125 }

Position2D NIVissimAbstractEdge::crossesEdgeAtPoint ( NIVissimAbstractEdge c  )  const

NIVissimAbstractEdge * NIVissimAbstractEdge::dictionary ( int  id  )  [static]

Reimplemented in NIVissimConnection, and NIVissimEdge.

Definition at line 80 of file NIVissimAbstractEdge.cpp.

References myDict.

00080                                        {
00081     DictType::iterator i=myDict.find(id);
00082     if (i==myDict.end()) {
00083         return 0;
00084     }
00085     return (*i).second;
00086 }

bool NIVissimAbstractEdge::dictionary ( int  id,
NIVissimAbstractEdge e 
) [static]

Definition at line 69 of file NIVissimAbstractEdge.cpp.

References myDict.

Referenced by NIVissimNodeCluster::buildNBNode(), NIVissimDisturbance::computeBounding(), NIVissimDisturbance::dict_SetDisturbances(), NIVissimExtendedEdgePoint::getGeomPosition(), NIVissimTL::NIVissimTLSignal::getPosition(), and NIVissimAbstractEdge().

00069                                                                 {
00070     DictType::iterator i=myDict.find(id);
00071     if (i==myDict.end()) {
00072         myDict[id] = e;
00073         return true;
00074     }
00075     return false;
00076 }

const IntVector & NIVissimAbstractEdge::getDisturbances (  )  const

Definition at line 198 of file NIVissimAbstractEdge.cpp.

References myDisturbances.

Referenced by NIVissimConnectionCluster::getDisturbanceParticipators().

00198                                             {
00199     return myDisturbances;
00200 }

const Position2DVector & NIVissimAbstractEdge::getGeometry (  )  const

Position2D NIVissimAbstractEdge::getGeomPosition ( SUMOReal  pos  )  const

Definition at line 91 of file NIVissimAbstractEdge.cpp.

References GeomHelper::extrapolate_second(), Position2DVector::length(), myGeom, Position2DVector::pop_back(), Position2DVector::positionAtLengthPosition(), Position2DVector::push_back(), and SUMOReal.

Referenced by NIVissimDistrictConnection::geomPosition().

00091                                                         {
00092     if (myGeom.length()>pos) {
00093         return myGeom.positionAtLengthPosition(pos);
00094     } else if (myGeom.length()==pos) {
00095         return myGeom[-1];
00096     } else {
00097         Position2DVector g(myGeom);
00098         SUMOReal amount = pos - myGeom.length();
00099         Position2D ne = GeomHelper::extrapolate_second(g[-2], g[-1], amount*2);
00100         g.pop_back();
00101         g.push_back(ne);
00102         return g.positionAtLengthPosition(pos);
00103     }
00104 }

int NIVissimAbstractEdge::getID (  )  const

IntVector NIVissimAbstractEdge::getWithin ( const AbstractPoly p,
SUMOReal  offset = 0.0 
) [static]

Definition at line 147 of file NIVissimAbstractEdge.cpp.

References myDict, myID, and overlapsWith().

Referenced by NIVissimNodeDef_Poly::searchAndSetConnections().

00147                                                                       {
00148     IntVector ret;
00149     for (DictType::iterator i=myDict.begin(); i!=myDict.end(); i++) {
00150         NIVissimAbstractEdge *e = (*i).second;
00151         if (e->overlapsWith(p, offset)) {
00152             ret.push_back(e->myID);
00153         }
00154     }
00155     return ret;
00156 }

bool NIVissimAbstractEdge::hasNodeCluster (  )  const

Definition at line 166 of file NIVissimAbstractEdge.cpp.

References myNode.

00166                                            {
00167     return myNode!=-1;
00168 }

bool NIVissimAbstractEdge::overlapsWith ( const AbstractPoly p,
SUMOReal  offset = 0.0 
) const

Definition at line 160 of file NIVissimAbstractEdge.cpp.

References myGeom, and Position2DVector::overlapsWith().

Referenced by getWithin().

00160                                                                                {
00161     return myGeom.overlapsWith(p, offset);
00162 }

virtual void NIVissimAbstractEdge::setNodeCluster ( int  nodeid  )  [pure virtual]

Implemented in NIVissimConnection, and NIVissimEdge.

void NIVissimAbstractEdge::splitAndAssignToNodes (  )  [static]

Definition at line 108 of file NIVissimAbstractEdge.cpp.

References myDict, and splitAssigning().

00108                                             {
00109     for (DictType::iterator i=myDict.begin(); i!=myDict.end(); i++) {
00110         NIVissimAbstractEdge *e = (*i).second;
00111         e->splitAssigning();
00112     }
00113 }

void NIVissimAbstractEdge::splitAssigning (  ) 

Definition at line 116 of file NIVissimAbstractEdge.cpp.

Referenced by splitAndAssignToNodes().

00116 {}


Field Documentation

Reimplemented in NIVissimConnection, and NIVissimEdge.

Definition at line 81 of file NIVissimAbstractEdge.h.

Referenced by clearDict(), dictionary(), getWithin(), and splitAndAssignToNodes().

Definition at line 76 of file NIVissimAbstractEdge.h.

Referenced by addDisturbance(), and getDisturbances().

int NIVissimAbstractEdge::myID [protected]


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

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