SUMO - Simulation of Urban MObility

PositionVector Class Reference

A list of 2D-positions. More...

#include <PositionVector.h>

Inheritance diagram for PositionVector:
AbstractPoly

Data Structures

class  as_poly_cw_sorter
class  increasing_x_y_sorter

Public Types

typedef std::vector< Position > ContType
 Definition of the list of points.

Public Member Functions

int appendWithCrossingPoint (const PositionVector &v)
SUMOReal area () const
 Returns the area (0 for non-closed)
bool around (const Position &p, SUMOReal offset=0) const
 Returns the information whether the position vector describes a polygon lying around the given point The optional offset is added to the polygon's bounderies.
SUMOReal beginEndAngle () const
void clear ()
 Removes all information from this list.
void closePolygon ()
PositionVector convexHull () const
bool crosses (const Position &p1, const Position &p2) const
SUMOReal distance (const Position &p) const
DoubleVector distances (const PositionVector &s) const
void eraseAt (int i)
void extrapolate (SUMOReal val)
const Position & getBegin () const
 Returns the first position.
Line getBegLine () const
Boundary getBoxBoundary () const
 Returns a boundary enclosing this list of lines.
Position getCentroid () const
 Returns the centroid (closes the polygon if unclosed)
const ContType & getCont () const
const Position & getEnd () const
 Returns the last position.
Line getEndLine () const
Position getLineCenter () const
Position getPolygonCenter () const
 Returns the arithmetic of all corner points.
PositionVector getSubpart (SUMOReal begin, SUMOReal end) const
int indexOfClosest (const Position &p) const
void insertAt (int index, const Position &p)
void insertAtClosest (const Position &p)
PositionVector intersectionPoints2D (const Line &line) const
bool intersects (const PositionVector &v1) const
bool intersects (const Position &p1, const Position &p2) const
DoubleVector intersectsAtLengths2D (const PositionVector &other) const
 For all intersections between this vector and other, return the 2D-length of the subvector from this vectors start to the intersection.
DoubleVector intersectsAtLengths2D (const Line &line) const
 For all intersections between this vector and line, return the 2D-length of the subvector from this vectors start to the intersection.
Position intersectsAtPoint (const Position &p1, const Position &p2) const
Position intersectsAtPoint (const PositionVector &v1) const
bool isClosed () const
SUMOReal isLeft (const Position &P0, const Position &P1, const Position &P2) const
SUMOReal length () const
 Returns the length.
Line lineAt (size_t pos) const
void move2side (SUMOReal amount)
void move2side (SUMOReal amount, int index)
SUMOReal nearest_position_on_line_to_point (const Position &p, bool perpendicular=true) const
bool operator== (const PositionVector &v2) const
 comparing operation
const Position & operator[] (int index) const
 returns the position at the given index !!! exceptions?
Position & operator[] (int index)
bool overlapsWith (const AbstractPoly &poly, SUMOReal offset=0) const
 Returns the information whether the given polygon overlaps with this Again a boundary may be specified.
bool partialWithin (const AbstractPoly &poly, SUMOReal offset=0) const
 Returns the information whether this polygon lies partially within the given polygon.
Position pop_back ()
Position pop_front ()
Position positionAtLengthPosition (SUMOReal pos) const
 Returns the position at the given length.
 PositionVector ()
 Constructor.
 PositionVector (const std::vector< Position > &v)
 Constructor.
void pruneFromBeginAt (const Position &p)
void pruneFromEndAt (const Position &p)
void push_back_noDoublePos (const Position &p)
void push_front (const Position &p)
 Puts the given position at the begin of the list.
void push_front_noDoublePos (const Position &p)
void removeColinearPoints ()
void removeDoublePoints ()
void replaceAt (size_t index, const Position &by)
void reshiftRotate (SUMOReal xoff, SUMOReal yoff, SUMOReal rot)
PositionVector reverse () const
SUMOReal rotationDegreeAtLengthPosition (SUMOReal pos) const
 Returns the position at the given length.
void scaleSize (SUMOReal factor)
 enlarges/shrinks the polygon based at the centroid
void set (size_t pos, const Position &p)
size_t size () const
 returns the number of points making up the line vector
void sortAsPolyCWByAngle ()
void sortByIncreasingXY ()
std::pair< PositionVector,
PositionVector > 
splitAt (SUMOReal where) const
 Returns the two lists made when this list vector is splitted at the given point.
 ~PositionVector ()
 Destructor.
Adding items to the container
void push_back (const Position &p)
 Appends the given position to the list.
void push_back (const PositionVector &p)
 Appends all positions from the given vector.

Static Public Member Functions

static Position positionAtLengthPosition (const Position &p1, const Position &p2, SUMOReal pos)
 Returns the position between the two given point at the specified position */.

Private Attributes

ContType myCont
 The list of points.

Friends

std::ostream & operator<< (std::ostream &os, const PositionVector &geom)
 Output operator.

Detailed Description

A list of 2D-positions.

Definition at line 52 of file PositionVector.h.


Member Typedef Documentation

typedef std::vector<Position> PositionVector::ContType

Definition of the list of points.

Definition at line 56 of file PositionVector.h.


Constructor & Destructor Documentation

PositionVector::PositionVector ( )

Constructor.

Creates an empty position vector

Definition at line 59 of file PositionVector.cpp.

PositionVector::PositionVector ( const std::vector< Position > &  v)

Constructor.

Parameters:
[in]vThe vector to copy

Definition at line 62 of file PositionVector.cpp.

References myCont.

PositionVector::~PositionVector ( )

Destructor.

Definition at line 67 of file PositionVector.cpp.


Member Function Documentation

int PositionVector::appendWithCrossingPoint ( const PositionVector &  v)
SUMOReal PositionVector::area ( ) const

Returns the area (0 for non-closed)

Definition at line 349 of file PositionVector.cpp.

References isClosed(), push_back(), size(), and SUMOReal.

Referenced by getCentroid().

bool PositionVector::around ( const Position &  p,
SUMOReal  offset = 0 
) const [virtual]

Returns the information whether the position vector describes a polygon lying around the given point The optional offset is added to the polygon's bounderies.

Implements AbstractPoly.

Definition at line 90 of file PositionVector.cpp.

References GeomHelper::Angle2D(), myCont, PI, SUMOReal, Position::x(), and Position::y().

Referenced by NIImporter_SUMO::addJunction(), and NIVissimTL::NIVissimTLSignal::isWithin().

void PositionVector::clear ( )

Removes all information from this list.

Definition at line 185 of file PositionVector.cpp.

References myCont.

Referenced by NBEdge::init(), PCLoaderVisum::load(), PCLoaderDlrNavteq::loadPolyFile(), and NBEdge::splitGeometry().

void PositionVector::closePolygon ( )

Definition at line 971 of file PositionVector.cpp.

References myCont, and push_back().

PositionVector PositionVector::convexHull ( ) const

Definition at line 504 of file PositionVector.cpp.

References simpleHull_2D(), and sortAsPolyCWByAngle().

bool PositionVector::crosses ( const Position &  p1,
const Position &  p2 
) const [virtual]

Implements AbstractPoly.

Definition at line 380 of file PositionVector.cpp.

References intersects().

SUMOReal PositionVector::distance ( const Position &  p) const
DoubleVector PositionVector::distances ( const PositionVector &  s) const

Definition at line 980 of file PositionVector.cpp.

References distance(), and myCont.

Referenced by NBEdge::isNearEnough2BeJoined2().

void PositionVector::eraseAt ( int  i)

Definition at line 693 of file PositionVector.cpp.

References myCont.

Referenced by NBEdge::startShapeAt().

Position PositionVector::getCentroid ( ) const

Returns the centroid (closes the polygon if unclosed)

Definition at line 286 of file PositionVector.cpp.

References area(), isClosed(), length(), push_back(), size(), and SUMOReal.

Referenced by scaleSize().

const ContType& PositionVector::getCont ( ) const [inline]
Line PositionVector::getEndLine ( ) const
Position PositionVector::getLineCenter ( ) const

Definition at line 330 of file PositionVector.cpp.

References length(), myCont, positionAtLengthPosition(), and SUMOReal.

Referenced by GUIBusStop::GUIBusStop().

Position PositionVector::getPolygonCenter ( ) const

Returns the arithmetic of all corner points.

Note:
: this is different from the centroid!

Definition at line 274 of file PositionVector.cpp.

References myCont, and SUMOReal.

Referenced by NIVissimNodeCluster::buildNBNode(), and NIVissimDistrictConnection::dict_BuildDistrictNodes().

int PositionVector::indexOfClosest ( const Position &  p) const

Definition at line 725 of file PositionVector.cpp.

References Position::distanceTo(), max, myCont, size(), and SUMOReal.

void PositionVector::insertAt ( int  index,
const Position &  p 
)
void PositionVector::insertAtClosest ( const Position &  p)
PositionVector PositionVector::intersectionPoints2D ( const Line &  line) const

Returns any intersection Points with the given line (ignoring z-coordinates)

Definition at line 518 of file PositionVector.cpp.

References GeomHelper::intersection_position(), GeomHelper::intersects(), myCont, Line::p1(), Line::p2(), and push_back_noDoublePos().

Referenced by Line::intersectsAtLengths2D().

bool PositionVector::intersects ( const Position &  p1,
const Position &  p2 
) const
bool PositionVector::intersects ( const PositionVector &  v1) const

Returns the information whether this list of points interesects one the given lines

Definition at line 142 of file PositionVector.cpp.

References intersects(), myCont, and size().

DoubleVector PositionVector::intersectsAtLengths2D ( const PositionVector &  other) const

For all intersections between this vector and other, return the 2D-length of the subvector from this vectors start to the intersection.

Definition at line 771 of file PositionVector.cpp.

References myCont.

Referenced by NBEdge::buildInnerEdges(), computeSameEnd(), and NBEdge::startShapeAt().

DoubleVector PositionVector::intersectsAtLengths2D ( const Line &  line) const

For all intersections between this vector and line, return the 2D-length of the subvector from this vectors start to the intersection.

Definition at line 782 of file PositionVector.cpp.

References Position::distanceTo2D(), GeomHelper::intersection_position(), GeomHelper::intersects(), Line::length2D(), myCont, Line::p1(), Line::p2(), and SUMOReal.

Position PositionVector::intersectsAtPoint ( const Position &  p1,
const Position &  p2 
) const

Returns the position of the intersection

Definition at line 157 of file PositionVector.cpp.

References GeomHelper::intersection_position(), GeomHelper::intersects(), and myCont.

Referenced by NIVissimAbstractEdge::crossesEdgeAtPoint(), GeomHelper::crossPoint(), and intersectsAtPoint().

Position PositionVector::intersectsAtPoint ( const PositionVector &  v1) const

Returns the position of the intersection

Definition at line 169 of file PositionVector.cpp.

References intersects(), intersectsAtPoint(), and myCont.

bool PositionVector::isClosed ( ) const

Definition at line 1043 of file PositionVector.cpp.

References myCont.

Referenced by area(), and getCentroid().

SUMOReal PositionVector::isLeft ( const Position &  P0,
const Position &  P1,
const Position &  P2 
) const

Definition at line 497 of file PositionVector.cpp.

References Position::x(), and Position::y().

Line PositionVector::lineAt ( size_t  pos) const
void PositionVector::move2side ( SUMOReal  amount,
int  index 
)
SUMOReal PositionVector::nearest_position_on_line_to_point ( const Position &  p,
bool  perpendicular = true 
) const
bool PositionVector::operator== ( const PositionVector &  v2) const

comparing operation

Definition at line 1081 of file PositionVector.cpp.

References size().

Position & PositionVector::operator[] ( int  index)

Definition at line 201 of file PositionVector.cpp.

References myCont.

const Position & PositionVector::operator[] ( int  index) const

returns the position at the given index !!! exceptions?

Definition at line 191 of file PositionVector.cpp.

References myCont.

bool PositionVector::overlapsWith ( const AbstractPoly &  poly,
SUMOReal  offset = 0 
) const [virtual]

Returns the information whether the given polygon overlaps with this Again a boundary may be specified.

Implements AbstractPoly.

Definition at line 116 of file PositionVector.cpp.

References AbstractPoly::around(), and myCont.

Referenced by NIVissimAbstractEdge::overlapsWith().

bool PositionVector::partialWithin ( const AbstractPoly &  poly,
SUMOReal  offset = 0 
) const [virtual]

Returns the information whether this polygon lies partially within the given polygon.

Implements AbstractPoly.

Definition at line 368 of file PositionVector.cpp.

References AbstractPoly::around(), and myCont.

Position PositionVector::pop_back ( )
Position PositionVector::pop_front ( )

Definition at line 1002 of file PositionVector.cpp.

References myCont.

Referenced by NBNodeCont::buildOffRamp(), and NBEdge::getInnerGeometry().

Position PositionVector::positionAtLengthPosition ( const Position &  p1,
const Position &  p2,
SUMOReal  pos 
) [static]

Returns the position between the two given point at the specified position */.

Definition at line 250 of file PositionVector.cpp.

References Position::distanceTo(), SUMOReal, Position::x(), and Position::y().

void PositionVector::push_back ( const PositionVector &  p)

Appends all positions from the given vector.

Parameters:
[in]pThe vector from which values shall be appended

Definition at line 78 of file PositionVector.cpp.

References myCont.

void PositionVector::push_front ( const Position &  p)

Puts the given position at the begin of the list.

Definition at line 84 of file PositionVector.cpp.

References myCont.

Referenced by NBNodeCont::buildOffRamp(), extrapolate(), NBEdge::init(), NIImporter_DlrNavteq::EdgesHandler::report(), and NBEdge::setGeometry().

void PositionVector::push_front_noDoublePos ( const Position &  p)
void PositionVector::removeColinearPoints ( )

Definition at line 1065 of file PositionVector.cpp.

References GeomHelper::distancePointLine(), and myCont.

void PositionVector::removeDoublePoints ( )

Definition at line 1049 of file PositionVector.cpp.

References myCont.

Referenced by NBEdge::init().

void PositionVector::replaceAt ( size_t  index,
const Position &  by 
)
void PositionVector::reshiftRotate ( SUMOReal  xoff,
SUMOReal  yoff,
SUMOReal  rot 
)
void PositionVector::scaleSize ( SUMOReal  factor)

enlarges/shrinks the polygon based at the centroid

Definition at line 321 of file PositionVector.cpp.

References getCentroid(), myCont, and size().

void PositionVector::set ( size_t  pos,
const Position &  p 
)

Definition at line 512 of file PositionVector.cpp.

References myCont.

size_t PositionVector::size ( ) const

returns the number of points making up the line vector

Definition at line 211 of file PositionVector.cpp.

References myCont.

Referenced by NIImporter_SUMO::_loadNetwork(), NIXMLEdgesHandler::addEdge(), NLHandler::addLane(), area(), NIVissimConnection::buildGeom(), NBEdge::buildInnerEdges(), NIVissimNodeCluster::buildNBNode(), NBNodeShapeComputer::compute(), NBEdge::computeEdgeShape(), NBNode::computeInternalLaneShape(), NIImporter_OpenDrive::computeShapes(), GLHelper::drawBoxLines(), GLHelper::drawFilledPoly(), GUIPolygon::drawGL(), GLHelper::drawLine(), GUILaneWrapper::drawMarkings(), Distribution_Points::getAreaNo(), Distribution_Points::getAreaPerc(), GUIEdge::getBoundary(), getCentroid(), Distribution_Points::getMax(), GUIBusStop::GUIBusStop(), GUIJunctionWrapper::GUIJunctionWrapper(), GUILaneWrapper::GUILaneWrapper(), NBEdge::hasDefaultGeometry(), NBEdgeCont::ignoreFilterMatch(), indexOfClosest(), NBEdge::init(), insertAtClosest(), intersects(), Line::intersectsAtLengths2D(), NIImporter_OpenDrive::loadNetwork(), PCLoaderDlrNavteq::loadPolyFile(), operator==(), TraCIServerAPI_Polygon::processGet(), TraCIServerAPI_Lane::processGet(), push_back_noDoublePos(), push_front_noDoublePos(), NIVissimConnectionCluster::recomputeBoundary(), NIImporter_SUMO::reconstructEdgeShape(), replaceAt(), NBNodeShapeComputer::replaceLastChecking(), reshiftRotate(), scaleSize(), simpleHull_2D(), splitAt(), NBEdge::splitGeometry(), NILoader::transformCoordinates(), NWWriter_SUMO::writeDistrict(), NWWriter_XML::writeEdgesAndConnections(), and NWWriter_OpenDrive::writePlanView().

void PositionVector::sortAsPolyCWByAngle ( )

Definition at line 453 of file PositionVector.cpp.

References myCont.

Referenced by convexHull().

void PositionVector::sortByIncreasingXY ( )

Definition at line 475 of file PositionVector.cpp.

References myCont.

std::pair< PositionVector, PositionVector > PositionVector::splitAt ( SUMOReal  where) const

Returns the two lists made when this list vector is splitted at the given point.

Definition at line 399 of file PositionVector.cpp.

References Position::distanceTo(), getBegin(), getEnd(), length(), myCont, POSITION_EPS, push_back(), size(), SUMOReal, toString(), and WRITE_WARNING.

Referenced by NBEdge::buildInnerEdges(), and NBEdgeCont::splitAt().


Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const PositionVector &  geom 
) [friend]

Output operator.

Definition at line 441 of file PositionVector.cpp.


Field Documentation


The documentation for this class was generated from the following files:
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Defines