#include <NIVissimAbstractEdge.h>

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 IntVector & | getDisturbances () const |
| const Position2DVector & | getGeometry () 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 NIVissimAbstractEdge * | dictionary (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 |
typedef std::map<int, NIVissimAbstractEdge*> NIVissimAbstractEdge::DictType [private] |
Reimplemented in NIVissimConnection, and NIVissimEdge.
Definition at line 80 of file NIVissimAbstractEdge.h.
| 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] |
| 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] |
Implemented in NIVissimConnection, and NIVissimEdge.
Referenced by NIVissimNodeCluster::buildNBNode().
| 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 |
Definition at line 135 of file NIVissimAbstractEdge.cpp.
References Position2DVector::getBegin(), Position2DVector::getEnd(), GeomHelper::intersection_position(), myGeom, and GeomHelper::nearest_position_on_line_to_point().
00136 { 00137 // !!! not needed 00138 Position2D p = GeomHelper::intersection_position( 00139 myGeom.getBegin(), myGeom.getEnd(), p1, p2); 00140 return GeomHelper::nearest_position_on_line_to_point( 00141 myGeom.getBegin(), myGeom.getEnd(), p); 00142 }
| 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 |
Definition at line 129 of file NIVissimAbstractEdge.cpp.
References Position2DVector::intersectsAtPoint(), and myGeom.
Referenced by NIVissimDisturbance::addToNode(), and NIVissimNodeCluster::buildNBNode().
00129 { 00130 return myGeom.intersectsAtPoint(c->myGeom); 00131 }
| 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 |
Definition at line 186 of file NIVissimAbstractEdge.cpp.
References myGeom.
Referenced by NIVissimEdge::dict_checkEdges2Join(), NIVissimConnectionCluster::getIncomingContinuation(), NIVissimConnectionCluster::getIncomingContinuationGeometry(), NIVissimConnectionCluster::getOutgoingContinuation(), NIVissimConnectionCluster::getOutgoingContinuationGeometry(), NIVissimConnectionCluster::isWeakDistrictConnRealisation(), NIVissimConnectionCluster::liesOnSameEdgesEnd(), NIVissimConnectionCluster::same_direction_sorter::operator()(), and NIVissimConnectionCluster::recomputeBoundary().
00186 { 00187 return myGeom; 00188 }
| 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 |
Definition at line 172 of file NIVissimAbstractEdge.cpp.
References myID.
Referenced by NIVissimDisturbance::addToNode(), NIVissimConnection::buildEdgeConnections(), NIVissimEdge::dict_checkEdges2Join(), NIVissimEdge::getConnectionTo(), NIVissimConnectionCluster::getIncomingContinuation(), NIVissimConnectionCluster::getIncomingContinuationGeometry(), NIVissimConnectionCluster::getOutgoingContinuation(), NIVissimConnectionCluster::getOutgoingContinuationGeometry(), and NIVissimConnectionCluster::removeConnections().
00172 { 00173 return myID; 00174 }
| 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 | ( | ) |
NIVissimAbstractEdge::DictType NIVissimAbstractEdge::myDict [static, private] |
Reimplemented in NIVissimConnection, and NIVissimEdge.
Definition at line 81 of file NIVissimAbstractEdge.h.
Referenced by clearDict(), dictionary(), getWithin(), and splitAndAssignToNodes().
IntVector NIVissimAbstractEdge::myDisturbances [protected] |
Definition at line 76 of file NIVissimAbstractEdge.h.
Referenced by addDisturbance(), and getDisturbances().
Position2DVector NIVissimAbstractEdge::myGeom [protected] |
Definition at line 75 of file NIVissimAbstractEdge.h.
Referenced by NIVissimConnection::buildGeom(), NIVissimEdge::buildNBEdge(), crossesAtPoint(), crossesEdge(), crossesEdgeAtPoint(), NIVissimEdge::getBegin2D(), NIVissimEdge::getEnd2D(), NIVissimEdge::getFromNode(), getGeometry(), getGeomPosition(), NIVissimEdge::getLength(), NIVissimEdge::getToNode(), NIVissimAbstractEdge(), overlapsWith(), and NIVissimEdge::resolveSameNode().
int NIVissimAbstractEdge::myID [protected] |
Definition at line 74 of file NIVissimAbstractEdge.h.
Referenced by NIVissimEdge::buildNBEdge(), NIVissimEdge::getFromNode(), getID(), NIVissimEdge::getToNode(), getWithin(), NIVissimEdge::NIVissimEdge(), NIVissimEdge::resolveSameNode(), and NIVissimEdge::setDistrictSpeed().
int NIVissimAbstractEdge::myNode [protected] |
Definition at line 77 of file NIVissimAbstractEdge.h.
Referenced by hasNodeCluster(), NIVissimEdge::setNodeCluster(), and NIVissimConnection::setNodeCluster().
1.5.6