Eclipse SUMO - Simulation of Urban MObility
PositionVector Class Reference

A list of positions. More...

#include <PositionVector.h>

Inheritance diagram for PositionVector:
Collaboration diagram for PositionVector:

Data Structures

class  as_poly_cw_sorter
 clase for CW Sorter More...
 
class  increasing_x_y_sorter
 clase for increasing Sorter More...
 

Public Member Functions

void add (const Position &offset)
 
void add (double xoff, double yoff, double zoff)
 
PositionVector added (const Position &offset) const
 
double angleAt2D (int pos) const
 get angle in certain position of position vector More...
 
void append (const PositionVector &v, double sameThreshold=2.0)
 
double area () const
 Returns the area (0 for non-closed) More...
 
bool around (const Position &p, double offset=0) const
 Returns the information whether the position vector describes a polygon lying around the given point. More...
 
double beginEndAngle () const
 returns the angle in radians of the line connecting the first and the last position More...
 
PositionVector bezier (int numPoints)
 return a bezier interpolation More...
 
void closePolygon ()
 ensures that the last position equals the first More...
 
bool crosses (const Position &p1, const Position &p2) const
 Returns whether the AbstractPoly crosses the given line. More...
 
double distance2D (const Position &p, bool perpendicular=false) const
 closest 2D-distance to point p (or -1 if perpendicular is true and the point is beyond this vector) More...
 
std::vector< double > distances (const PositionVector &s, bool perpendicular=false) const
 distances of all my points to s and all of s points to myself More...
 
void extrapolate (const double val, const bool onlyFirst=false, const bool onlyLast=false)
 extrapolate position vector More...
 
void extrapolate2D (const double val, const bool onlyFirst=false)
 extrapolate position vector in two dimensions (Z is ignored) More...
 
Boundary getBoxBoundary () const
 Returns a boundary enclosing this list of lines. More...
 
Position getCentroid () const
 Returns the centroid (closes the polygon if unclosed) More...
 
Position getLineCenter () const
 get line center More...
 
double getMaxGrade (double &maxJump) const
 
PositionVector getOrthogonal (const Position &p, double extend, bool before, double length=1.0) const
 return orthogonal through p (extending this vector if necessary) More...
 
double getOverlapWith (const PositionVector &poly, double zThreshold) const
 Returns the maximum overlaps between this and the given polygon (when not separated by at least zThreshold) More...
 
Position getPolygonCenter () const
 Returns the arithmetic of all corner points. More...
 
PositionVector getSubpart (double beginOffset, double endOffset) const
 get subpart of a position vector More...
 
PositionVector getSubpart2D (double beginOffset, double endOffset) const
 get subpart of a position vector in two dimensions (Z is ignored) More...
 
PositionVector getSubpartByIndex (int beginIndex, int count) const
 get subpart of a position vector using index and a cout More...
 
bool hasElevation () const
 return whether two positions differ in z-coordinate More...
 
int indexOfClosest (const Position &p) const
 index of the closest position to p More...
 
void insert_noDoublePos (const std::vector< Position >::iterator &at, const Position &p)
 insert in front a non double position More...
 
int insertAtClosest (const Position &p, bool interpolateZ)
 inserts p between the two closest positions More...
 
PositionVector interpolateZ (double zStart, double zEnd) const
 returned vector that varies z smoothly over its length More...
 
Position intersectionPosition2D (const Position &p1, const Position &p2, const double withinDist=0.) const
 Returns the position of the intersection. More...
 
Position intersectionPosition2D (const PositionVector &v1) const
 Returns the position of the intersection. More...
 
bool intersects (const Position &p1, const Position &p2) const
 Returns the information whether this list of points interesects the given line. More...
 
bool intersects (const PositionVector &v1) const
 Returns the information whether this list of points interesects one the given lines. More...
 
std::vector< double > intersectsAtLengths2D (const Position &lp1, const Position &lp2) const
 For all intersections between this vector and line, return the 2D-length of the subvector from this vectors start to the intersection. More...
 
std::vector< double > 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. More...
 
bool isClosed () const
 check if PositionVector is closed More...
 
double isLeft (const Position &P0, const Position &P1, const Position &P2) const
 get left More...
 
bool isNAN () const
 check if PositionVector is NAN More...
 
double length () const
 Returns the length. More...
 
double length2D () const
 Returns the length. More...
 
void mirrorX ()
 
void move2side (double amount, double maxExtension=100)
 move position vector to side using certain ammount More...
 
void move2side (std::vector< double > amount, double maxExtension=100)
 move position vector to side using a custom offset for each geometry point More...
 
double nearest_offset_to_point25D (const Position &p, bool perpendicular=true) const
 return the nearest offest to point 2D projected onto the 3D geometry More...
 
double nearest_offset_to_point2D (const Position &p, bool perpendicular=true) const
 return the nearest offest to point 2D More...
 
double offsetAtIndex2D (int index) const
 return the offset at the given index More...
 
bool operator!= (const PositionVector &v2) const
 comparing operation More...
 
PositionVector operator+ (const PositionVector &v2) const
 adds two vectors (requires vectors of the same length) More...
 
PositionVector operator- (const PositionVector &v2) const
 substracts two vectors (requires vectors of the same length) More...
 
bool operator== (const PositionVector &v2) const
 comparing operation More...
 
Positionoperator[] (int index)
 returns the position at the given index More...
 
const Positionoperator[] (int index) const
 returns the constat position at the given index @ToDo !!! exceptions? More...
 
bool overlapsWith (const AbstractPoly &poly, double offset=0) const
 Returns the information whether the given polygon overlaps with this. More...
 
bool partialWithin (const AbstractPoly &poly, double offset=0) const
 Returns the information whether this polygon lies partially within the given polygon. More...
 
void pop_front ()
 pop first Position More...
 
Position positionAtOffset (double pos, double lateralOffset=0) const
 Returns the position at the given length. More...
 
Position positionAtOffset2D (double pos, double lateralOffset=0) const
 Returns the position at the given length. More...
 
 PositionVector ()
 Constructor. Creates an empty position vector. More...
 
 PositionVector (const Position &p1, const Position &p2)
 Parameter Constructor used for lines. More...
 
 PositionVector (const std::vector< Position > &v)
 Copy Constructor. Create a positionVector with the same elements as other positionVector. More...
 
 PositionVector (const std::vector< Position >::const_iterator beg, const std::vector< Position >::const_iterator end)
 Parameter Constructor. Create a positionVector using a part of other positionVector. More...
 
void push_back_noDoublePos (const Position &p)
 insert in back a non double position More...
 
void push_front (const Position &p)
 insert in front a Position More...
 
void push_front_noDoublePos (const Position &p)
 insert in front a non double position More...
 
int removeClosest (const Position &p)
 removes the point closest to p and return the removal index More...
 
void removeDoublePoints (double minDist=POSITION_EPS, bool assertLength=false)
 Removes positions if too near. More...
 
PositionVector resample (double maxLength) const
 resample shape with the given number of points (equal spacing) More...
 
PositionVector reverse () const
 reverse position vector More...
 
void rotate2D (double angle)
 
double rotationAtOffset (double pos) const
 Returns the rotation at the given length. More...
 
double rotationDegreeAtOffset (double pos) const
 Returns the rotation at the given length. More...
 
void scaleAbsolute (double offset)
 enlarges/shrinks the polygon by an absolute offset based at the centroid More...
 
void scaleRelative (double factor)
 enlarges/shrinks the polygon by a factor based at the centroid More...
 
PositionVector simplified () const
 return the same shape with intermediate colinear points removed More...
 
double slopeDegreeAtOffset (double pos) const
 Returns the slope at the given length. More...
 
PositionVector smoothedZFront (double dist=std::numeric_limits< double >::max()) const
 returned vector that is smoothed at the front (within dist) More...
 
void sortAsPolyCWByAngle ()
 short as polygon CV by angle More...
 
void sortByIncreasingXY ()
 shory by increasing X-Y Psitions More...
 
std::pair< PositionVector, PositionVectorsplitAt (double where, bool use2D=false) const
 Returns the two lists made when this list vector is splitted at the given point. More...
 
void sub (const Position &offset)
 
void sub (double xoff, double yoff, double zoff)
 
Position transformToVectorCoordinates (const Position &p, bool extend=false) const
 return position p within the length-wise coordinate system defined by this position vector. The x value is the same as that returned by nearest_offset_to_point2D(p) and the y value is the perpendicular distance to this vector with the sign indicating the side (right is postive). if extend is true, the vector is extended on both sides and the x-coordinate of the result may be below 0 or above the length of the original vector More...
 
 ~PositionVector ()
 Destructor. More...
 

Static Public Member Functions

static Position positionAtOffset (const Position &p1, const Position &p2, double pos, double lateralOffset=0.)
 Returns the position between the two given point at the specified position. More...
 
static Position positionAtOffset2D (const Position &p1, const Position &p2, double pos, double lateralOffset=0.)
 Returns the position between the two given point at the specified position. More...
 
static Position sideOffset (const Position &beg, const Position &end, const double amount)
 get a side position of position vector using a offset More...
 

Static Public Attributes

static const PositionVector EMPTY
 empty Vector More...
 

Private Types

typedef std::vector< Positionvp
 vector of position More...
 

Static Private Member Functions

static bool intersects (const Position &p11, const Position &p12, const Position &p21, const Position &p22, const double withinDist=0., double *x=0, double *y=0, double *mu=0)
 return whether the line segments defined by Line p11,p12 and Line p21,p22 intersect More...
 

Friends

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

Detailed Description

A list of positions.

Definition at line 45 of file PositionVector.h.

Member Typedef Documentation

◆ vp

typedef std::vector<Position> PositionVector::vp
private

vector of position

Definition at line 49 of file PositionVector.h.

Constructor & Destructor Documentation

◆ PositionVector() [1/4]

PositionVector::PositionVector ( )

Constructor. Creates an empty position vector.

Definition at line 51 of file PositionVector.cpp.

Referenced by getSubpart2D(), and getSubpartByIndex().

◆ PositionVector() [2/4]

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

Copy Constructor. Create a positionVector with the same elements as other positionVector.

Parameters
[in]vThe vector to copy

Definition at line 54 of file PositionVector.cpp.

◆ PositionVector() [3/4]

PositionVector::PositionVector ( const std::vector< Position >::const_iterator  beg,
const std::vector< Position >::const_iterator  end 
)

Parameter Constructor. Create a positionVector using a part of other positionVector.

Parameters
[in]begThe begin iterator for copy
[in]endThe end iterator to copy

Definition at line 59 of file PositionVector.cpp.

◆ PositionVector() [4/4]

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

Parameter Constructor used for lines.

Parameters
[in]p1the first position
[in]p2the second position

Definition at line 64 of file PositionVector.cpp.

◆ ~PositionVector()

PositionVector::~PositionVector ( )

Destructor.

Definition at line 70 of file PositionVector.cpp.

Member Function Documentation

◆ add() [1/2]

void PositionVector::add ( const Position offset)

Definition at line 639 of file PositionVector.cpp.

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

◆ add() [2/2]

◆ added()

PositionVector PositionVector::added ( const Position offset) const

Definition at line 645 of file PositionVector.cpp.

◆ angleAt2D()

◆ append()

◆ area()

double PositionVector::area ( ) const

Returns the area (0 for non-closed)

Definition at line 510 of file PositionVector.cpp.

References isClosed().

Referenced by GNEJunction::drawGL(), NBEdgeCont::formFactor(), getCentroid(), and GNEGeometry::Lane2laneConnection::updateLane2laneConnection().

◆ around()

bool PositionVector::around ( const Position p,
double  offset = 0 
) const
virtual

Returns the information whether the position vector describes a polygon lying around the given point.

Note
The optional offset is added to the polygon's boundaries

Implements AbstractPoly.

Definition at line 74 of file PositionVector.cpp.

References GeomHelper::angle2D(), around(), M_PI, scaleAbsolute(), Position::x(), and Position::y().

Referenced by around(), NBEdge::computeAngle(), NBNode::computeNodeShape(), GNEJunction::drawGL(), GNEPoly::drawGL(), NBNode::getCenter(), getOverlapWith(), and NIVissimTL::NIVissimTLSignal::isWithin().

◆ beginEndAngle()

◆ bezier()

PositionVector PositionVector::bezier ( int  numPoints)

◆ closePolygon()

◆ crosses()

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

Returns whether the AbstractPoly crosses the given line.

Implements AbstractPoly.

Definition at line 546 of file PositionVector.cpp.

References intersects().

◆ distance2D()

◆ distances()

std::vector< double > PositionVector::distances ( const PositionVector s,
bool  perpendicular = false 
) const

distances of all my points to s and all of s points to myself

Note
if perpendicular is set to true, only the perpendicular distances are returned

Definition at line 1239 of file PositionVector.cpp.

References distance2D(), and GeomHelper::INVALID_OFFSET.

Referenced by NBEdgeCont::guessOpposites(), NBEdge::isNearEnough2BeJoined2(), and MSLink::setRequestInformation().

◆ extrapolate()

◆ extrapolate2D()

void PositionVector::extrapolate2D ( const double  val,
const bool  onlyFirst = false 
)

◆ getBoxBoundary()

◆ getCentroid()

Position PositionVector::getCentroid ( ) const

Returns the centroid (closes the polygon if unclosed)

Definition at line 414 of file PositionVector.cpp.

References area(), Position::INVALID, isClosed(), and length().

Referenced by NBEdge::computeAngle(), GUILane::drawLane2LaneConnections(), GNETAZ::getPositionInView(), scaleAbsolute(), scaleRelative(), and GUIPolygon::setShape().

◆ getLineCenter()

◆ getMaxGrade()

double PositionVector::getMaxGrade ( double &  maxJump) const

Definition at line 1664 of file PositionVector.cpp.

References Position::distanceTo2D(), MAX2(), and Position::z().

Referenced by NBEdgeCont::checkGrade().

◆ getOrthogonal()

PositionVector PositionVector::getOrthogonal ( const Position p,
double  extend,
bool  before,
double  length = 1.0 
) const

return orthogonal through p (extending this vector if necessary)

Parameters
[in]pThe point through which to draw the orthogonal
[in]extendhow long to extend this vector for finding an orthogonal
[in]frontWhether to take the segment before or after the base point in case of ambiguity
[in]lengththe length of the orthogonal

Definition at line 1543 of file PositionVector.cpp.

References add(), DEG2RAD, extrapolate2D(), getSubpart2D(), indexOfClosest(), GeomHelper::INVALID_OFFSET, length(), nearest_offset_to_point2D(), NUMERICAL_EPS, offsetAtIndex2D(), positionAtOffset2D(), and rotate2D().

Referenced by NBNode::computeInternalLaneShape(), GUILane::debugDrawFoeIntersections(), NBEdge::setNodeBorder(), and GNEConnection::updateGeometry().

◆ getOverlapWith()

double PositionVector::getOverlapWith ( const PositionVector poly,
double  zThreshold 
) const

Returns the maximum overlaps between this and the given polygon (when not separated by at least zThreshold)

Definition at line 131 of file PositionVector.cpp.

References around(), distance2D(), MAX2(), nearest_offset_to_point2D(), positionAtOffset2D(), and Position::z().

Referenced by NBEdgeCont::checkOverlap().

◆ getPolygonCenter()

Position PositionVector::getPolygonCenter ( ) const

◆ getSubpart()

◆ getSubpart2D()

◆ getSubpartByIndex()

PositionVector PositionVector::getSubpartByIndex ( int  beginIndex,
int  count 
) const

◆ hasElevation()

bool PositionVector::hasElevation ( ) const

return whether two positions differ in z-coordinate

Definition at line 1405 of file PositionVector.cpp.

Referenced by NBEdge::computeEdgeShape().

◆ indexOfClosest()

◆ insert_noDoublePos()

void PositionVector::insert_noDoublePos ( const std::vector< Position >::iterator &  at,
const Position p 
)

insert in front a non double position

Definition at line 1311 of file PositionVector.cpp.

References Position::almostSame(), push_back_noDoublePos(), and push_front_noDoublePos().

◆ insertAtClosest()

int PositionVector::insertAtClosest ( const Position p,
bool  interpolateZ 
)

inserts p between the two closest positions

Parameters
pposition to be inserted
interpolateZflag to enable/disable interpolation of Z Value between the two closest positions
Returns
the insertion index

Definition at line 959 of file PositionVector.cpp.

References Position::distanceTo2D(), interpolateZ(), length(), GeomHelper::nearest_offset_on_line_to_point2D(), positionAtOffset2D(), Position::x(), and Position::y().

Referenced by NIImporter_OpenDrive::computeShapes(), GNETAZ::getVertexIndex(), GNEEdge::getVertexIndex(), GNEPoly::getVertexIndex(), smoothedZFront(), and GUILane::splitAtSegments().

◆ interpolateZ()

PositionVector PositionVector::interpolateZ ( double  zStart,
double  zEnd 
) const

returned vector that varies z smoothly over its length

Definition at line 1614 of file PositionVector.cpp.

References length(), and length2D().

Referenced by NBNodeShapeComputer::getSmoothCorner(), insertAtClosest(), and GNEEdge::straightenElevation().

◆ intersectionPosition2D() [1/2]

Position PositionVector::intersectionPosition2D ( const Position p1,
const Position p2,
const double  withinDist = 0. 
) const

Returns the position of the intersection.

Definition at line 187 of file PositionVector.cpp.

References intersects(), and Position::INVALID.

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

◆ intersectionPosition2D() [2/2]

Position PositionVector::intersectionPosition2D ( const PositionVector v1) const

Returns the position of the intersection.

Definition at line 199 of file PositionVector.cpp.

References intersectionPosition2D(), intersects(), and Position::INVALID.

◆ intersects() [1/3]

◆ intersects() [2/3]

bool PositionVector::intersects ( const Position p11,
const Position p12,
const Position p21,
const Position p22,
const double  withinDist = 0.,
double *  x = 0,
double *  y = 0,
double *  mu = 0 
)
staticprivate

return whether the line segments defined by Line p11,p12 and Line p21,p22 intersect

Definition at line 1419 of file PositionVector.cpp.

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

◆ intersects() [3/3]

bool PositionVector::intersects ( const PositionVector v1) const

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

Definition at line 173 of file PositionVector.cpp.

References intersects().

◆ intersectsAtLengths2D() [1/2]

std::vector< double > PositionVector::intersectsAtLengths2D ( const Position lp1,
const Position lp2 
) 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 1022 of file PositionVector.cpp.

References Position::distanceTo2D(), and intersects().

◆ intersectsAtLengths2D() [2/2]

std::vector< double > 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 1008 of file PositionVector.cpp.

Referenced by NBNodeShapeComputer::closestIntersection(), NBNodeShapeComputer::computeNodeShapeDefault(), computeSameEnd(), MSLink::contIntersect(), NBEdge::firstIntersection(), MSLink::setRequestInformation(), and NBEdge::startShapeAt().

◆ isClosed()

bool PositionVector::isClosed ( ) const

check if PositionVector is closed

Definition at line 1325 of file PositionVector.cpp.

Referenced by area(), getCentroid(), and GNEPoly::simplifyShape().

◆ isLeft()

double PositionVector::isLeft ( const Position P0,
const Position P1,
const Position P2 
) const

get left

Note
previously marked with "!!!"

Definition at line 690 of file PositionVector.cpp.

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

Referenced by transformToVectorCoordinates().

◆ isNAN()

bool PositionVector::isNAN ( ) const

check if PositionVector is NAN

Definition at line 1331 of file PositionVector.cpp.

Referenced by NBNode::buildCrossings().

◆ length()

double PositionVector::length ( ) const

Returns the length.

Definition at line 484 of file PositionVector.cpp.

Referenced by NIXMLEdgesHandler::addSplit(), GNEGeometry::adjustStartPosGeometricPath(), NBNodeShapeComputer::badIntersection(), NBEdge::bothLeftIntersect(), GNETLSEditorFrame::buildIinternalLanes(), NBEdge::buildInnerEdges(), NBRampsComputer::buildOffRamp(), NBRampsComputer::buildOnRamp(), NGRandomNetBuilder::canConnect(), NBEdge::computeAngle(), NBNode::computeInternalLaneShape(), NBEdge::cutAtIntersection(), GUILane::debugDrawFoeIntersections(), NIVissimEdge::dict_checkEdges2Join(), GUIVehicle::drawBestLanes(), GNEEdge::drawEdgeName(), GUIEdge::drawGL(), NBEdge::firstIntersection(), getCentroid(), GNELane::getColorValue(), NBEdge::getFinalLength(), NIVissimAbstractEdge::getGeomPosition(), NWWriter_DlrNavteq::getGraphLength(), GNELane::getLaneShapeLength(), NIVissimEdge::getLength(), NBEdge::Connection::getLength(), GNELane::getLengthGeometryFactor(), getLineCenter(), getOrthogonal(), GNECalibrator::getPositionInView(), GNEPerson::getPositionInView(), GNEVehicle::getPositionInView(), NBEdge::getShapeEndAngle(), getSubpart(), NIVissimEdge::getToNode(), GUIBusStop::GUIBusStop(), GUIChargingStation::GUIChargingStation(), GUIContainerStop::GUIContainerStop(), GUILane::GUILane(), GUIParkingArea::GUIParkingArea(), GUITriggeredRerouter::GUITriggeredRerouterEdge::GUITriggeredRerouterEdge(), insertAtClosest(), interpolateZ(), GNECalibrator::isValid(), NIImporter_Vissim::NIVissimXMLHandler_Streckendefinition::myEndElement(), NIImporter_OpenStreetMap::RelationHandler::myEndElement(), NBContHelper::relative_incoming_edge_sorter::operator()(), operator+(), operator-(), NBRequest::oppositeLeftTurnConflict(), NBEdgeCont::processSplits(), resample(), NIVissimEdge::resolveSameNode(), rotationAtOffset(), splitAt(), NBEdgeCont::splitAt(), GNEConnection::updateGeometry(), GNEVaporizer::updateGeometry(), GNERouteProbe::updateGeometry(), GNEGeometry::Geometry::updateGeometryPosition(), GNEGeometry::Geometry::updateGeometryShape(), and NWWriter_SUMO::writeLane().

◆ length2D()

◆ mirrorX()

void PositionVector::mirrorX ( )

◆ move2side() [1/2]

void PositionVector::move2side ( double  amount,
double  maxExtension = 100 
)

move position vector to side using certain ammount

Definition at line 1103 of file PositionVector.cpp.

References Position::distanceTo2D(), extrapolate2D(), intersectionPosition2D(), Position::INVALID, length2D(), POSITION_EPS, removeDoublePoints(), sideOffset(), and Position::z().

Referenced by NBEdge::addRestrictedLane(), GNENet::addReversedEdge(), NBNodeShapeComputer::badIntersection(), NBNode::buildCrossings(), GNETLSEditorFrame::buildIinternalLanes(), NBNode::buildWalkingAreas(), NBEdge::computeAngle(), NBEdge::computeLaneShape(), NBNode::displaceShapeAtWidthChange(), GUIVehicle::drawBestLanes(), GNEConnection::drawGL(), GNELane::drawGL(), GUILane::drawGL(), GLHelper::drawShapeDottedContourAroundShape(), GLHelper::drawShapeDottedContourBetweenLanes(), NBEdge::firstIntersection(), MSTransportable::getBoundingBox(), MSVehicle::getBoundingBox(), MSVehicle::getBoundingPoly(), NBEdge::getCCWBoundaryLine(), NBEdge::getCWBoundaryLine(), NWWriter_OpenDrive::getLeftLaneBorder(), MSVehicle::getPosition(), GUIBusStop::GUIBusStop(), GUIChargingStation::GUIChargingStation(), GUIContainerStop::GUIContainerStop(), GUIParkingArea::GUIParkingArea(), MSPModel_Remote::handlePedestrianLane(), NIImporter_OpenDrive::loadNetwork(), NBRampsComputer::moveRampRight(), libsumo::Person::moveToXY(), libsumo::Vehicle::moveToXY(), MSLink::MSLink(), MSParkingArea::MSParkingArea(), NBRampsComputer::patchRampGeometry(), NBEdgeCont::processSplits(), GNEStoppingPlace::setStoppingPlaceGeometry(), NBEdge::shiftPositionAtNode(), NGNet::toNB(), GNEBusStop::updateGeometry(), GNEContainerStop::updateGeometry(), GNEChargingStation::updateGeometry(), GNEParkingArea::updateGeometry(), NBSign::writeAsPOI(), NWWriter_DlrNavteq::writeNodesUnsplitted(), and NWWriter_OpenDrive::writeRoadObjects().

◆ move2side() [2/2]

void PositionVector::move2side ( std::vector< double >  amount,
double  maxExtension = 100 
)

move position vector to side using a custom offset for each geometry point

Definition at line 1161 of file PositionVector.cpp.

References Position::distanceTo2D(), extrapolate2D(), intersectionPosition2D(), Position::INVALID, length2D(), POSITION_EPS, sideOffset(), toString(), and Position::z().

◆ nearest_offset_to_point25D()

double PositionVector::nearest_offset_to_point25D ( const Position p,
bool  perpendicular = true 
) const

return the nearest offest to point 2D projected onto the 3D geometry

Definition at line 853 of file PositionVector.cpp.

References Position::distanceTo2D(), INVALID_DOUBLE, GeomHelper::INVALID_OFFSET, GeomHelper::nearest_offset_on_line_to_point2D(), and positionAtOffset2D().

Referenced by GUILane::getPopUpMenu(), and libsumo::Helper::moveToXYMap().

◆ nearest_offset_to_point2D()

◆ offsetAtIndex2D()

double PositionVector::offsetAtIndex2D ( int  index) const

return the offset at the given index

Definition at line 1651 of file PositionVector.cpp.

References GeomHelper::INVALID_OFFSET.

Referenced by NBPTStopCont::computeCrossProductEdgePosition(), getOrthogonal(), and smoothedZFront().

◆ operator!=()

bool PositionVector::operator!= ( const PositionVector v2) const

comparing operation

Definition at line 1372 of file PositionVector.cpp.

◆ operator+()

PositionVector PositionVector::operator+ ( const PositionVector v2) const

adds two vectors (requires vectors of the same length)

Definition at line 1391 of file PositionVector.cpp.

References add(), length(), and WRITE_ERROR.

◆ operator-()

PositionVector PositionVector::operator- ( const PositionVector v2) const

substracts two vectors (requires vectors of the same length)

Definition at line 1377 of file PositionVector.cpp.

References add(), length(), and WRITE_ERROR.

◆ operator==()

bool PositionVector::operator== ( const PositionVector v2) const

comparing operation

Definition at line 1366 of file PositionVector.cpp.

◆ operator[]() [1/2]

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

returns the position at the given index

Definition at line 229 of file PositionVector.cpp.

◆ operator[]() [2/2]

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

returns the constat position at the given index @ToDo !!! exceptions?

Definition at line 210 of file PositionVector.cpp.

◆ overlapsWith()

bool PositionVector::overlapsWith ( const AbstractPoly poly,
double  offset = 0 
) const
virtual

Returns the information whether the given polygon overlaps with this.

Note
Again a boundary may be specified

Implements AbstractPoly.

Definition at line 108 of file PositionVector.cpp.

References AbstractPoly::crosses(), AbstractPoly::partialWithin(), and partialWithin().

Referenced by MSLane::detectCollisions(), MSLane::detectPedestrianJunctionCollision(), and NIVissimAbstractEdge::overlapsWith().

◆ partialWithin()

bool PositionVector::partialWithin ( const AbstractPoly poly,
double  offset = 0 
) const
virtual

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

Implements AbstractPoly.

Definition at line 532 of file PositionVector.cpp.

References AbstractPoly::around().

Referenced by overlapsWith().

◆ pop_front()

void PositionVector::pop_front ( )

pop first Position

Definition at line 1285 of file PositionVector.cpp.

◆ positionAtOffset() [1/2]

Position PositionVector::positionAtOffset ( const Position p1,
const Position p2,
double  pos,
double  lateralOffset = 0. 
)
static

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

Definition at line 347 of file PositionVector.cpp.

References Position::distanceTo(), Position::INVALID, and sideOffset().

◆ positionAtOffset() [2/2]

◆ positionAtOffset2D() [1/2]

Position PositionVector::positionAtOffset2D ( const Position p1,
const Position p2,
double  pos,
double  lateralOffset = 0. 
)
static

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

Definition at line 370 of file PositionVector.cpp.

References Position::distanceTo2D(), Position::INVALID, and sideOffset().

◆ positionAtOffset2D() [2/2]

◆ push_back_noDoublePos()

◆ push_front()

void PositionVector::push_front ( const Position p)

insert in front a Position

Definition at line 1275 of file PositionVector.cpp.

Referenced by push_front_noDoublePos().

◆ push_front_noDoublePos()

◆ removeClosest()

int PositionVector::removeClosest ( const Position p)

removes the point closest to p and return the removal index

Definition at line 989 of file PositionVector.cpp.

References Position::distanceTo2D().

Referenced by GNEEdge::commitShapeChange().

◆ removeDoublePoints()

void PositionVector::removeDoublePoints ( double  minDist = POSITION_EPS,
bool  assertLength = false 
)

Removes positions if too near.

Parameters
[in]minDistThe minimum accepted distance; default: POSITION_EPS
[in]assertLengthWhether the result must at least contain two points (be a line); default: false, to ensure original behaviour

Definition at line 1344 of file PositionVector.cpp.

Referenced by GNETAZ::commitShapeChange(), GNEPoly::commitShapeChange(), GNEEdge::commitShapeChange(), NIImporter_OpenDrive::computeShapes(), NBEdge::init(), move2side(), and NBEdge::reduceGeometry().

◆ resample()

PositionVector PositionVector::resample ( double  maxLength) const

◆ reverse()

◆ rotate2D()

◆ rotationAtOffset()

◆ rotationDegreeAtOffset()

◆ scaleAbsolute()

void PositionVector::scaleAbsolute ( double  offset)

enlarges/shrinks the polygon by an absolute offset based at the centroid

Definition at line 465 of file PositionVector.cpp.

References getCentroid().

Referenced by around().

◆ scaleRelative()

void PositionVector::scaleRelative ( double  factor)

enlarges/shrinks the polygon by a factor based at the centroid

Definition at line 456 of file PositionVector.cpp.

References getCentroid().

Referenced by GNEJunction::drawGL(), GUIJunctionWrapper::drawGL(), and MSVehicle::getBoundingPoly().

◆ sideOffset()

Position PositionVector::sideOffset ( const Position beg,
const Position end,
const double  amount 
)
static

get a side position of position vector using a offset

Definition at line 1096 of file PositionVector.cpp.

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

Referenced by NWWriter_OpenDrive::checkLaneGeometries(), move2side(), positionAtOffset(), and positionAtOffset2D().

◆ simplified()

PositionVector PositionVector::simplified ( ) const

return the same shape with intermediate colinear points removed

Definition at line 1518 of file PositionVector.cpp.

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

Referenced by NWWriter_SUMO::writeJunction().

◆ slopeDegreeAtOffset()

double PositionVector::slopeDegreeAtOffset ( double  pos) const

Returns the slope at the given length.

Definition at line 325 of file PositionVector.cpp.

References Position::distanceTo(), Position::distanceTo2D(), INVALID_DOUBLE, RAD2DEG, and Position::z().

Referenced by libsumo::Person::getSlope(), MEVehicle::getSlope(), and MSVehicle::getSlope().

◆ smoothedZFront()

PositionVector PositionVector::smoothedZFront ( double  dist = std::numeric_limits<double>::max()) const

returned vector that is smoothed at the front (within dist)

Definition at line 1582 of file PositionVector.cpp.

References Position::distanceTo2D(), indexOfClosest(), insertAtClosest(), length2D(), MIN2(), offsetAtIndex2D(), POSITION_EPS, and positionAtOffset2D().

Referenced by NBEdge::computeEdgeShape(), and NBNode::computeSmoothShape().

◆ sortAsPolyCWByAngle()

void PositionVector::sortAsPolyCWByAngle ( )

short as polygon CV by angle

Definition at line 611 of file PositionVector.cpp.

◆ sortByIncreasingXY()

void PositionVector::sortByIncreasingXY ( )

shory by increasing X-Y Psitions

Definition at line 672 of file PositionVector.cpp.

◆ splitAt()

std::pair< PositionVector, PositionVector > PositionVector::splitAt ( double  where,
bool  use2D = false 
) const

◆ sub() [1/2]

void PositionVector::sub ( const Position offset)

Definition at line 625 of file PositionVector.cpp.

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

◆ sub() [2/2]

void PositionVector::sub ( double  xoff,
double  yoff,
double  zoff 
)

Definition at line 631 of file PositionVector.cpp.

Referenced by computeSameEnd(), GUIPolygon::setShape(), and sub().

◆ transformToVectorCoordinates()

Position PositionVector::transformToVectorCoordinates ( const Position p,
bool  extend = false 
) const

return position p within the length-wise coordinate system defined by this position vector. The x value is the same as that returned by nearest_offset_to_point2D(p) and the y value is the perpendicular distance to this vector with the sign indicating the side (right is postive). if extend is true, the vector is extended on both sides and the x-coordinate of the result may be below 0 or above the length of the original vector

Definition at line 890 of file PositionVector.cpp.

References distance2D(), Position::distanceTo2D(), extrapolate(), Position::INVALID, GeomHelper::INVALID_OFFSET, isLeft(), GeomHelper::nearest_offset_on_line_to_point2D(), positionAtOffset(), and transformToVectorCoordinates().

Referenced by MSParkingArea::addLotEntry(), MSPModel_Striping::getNextLaneObstacles(), MSPModel_Striping::moveInDirection(), and transformToVectorCoordinates().

Friends And Related Function Documentation

◆ operator<<

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

Definition at line 599 of file PositionVector.cpp.

Field Documentation

◆ EMPTY


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