![]() |
Eclipse SUMO - Simulation of Urban MObility
|
A list of positions. More...
#include <PositionVector.h>
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... | |
Position & | operator[] (int index) |
returns the position at the given index More... | |
const Position & | operator[] (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, PositionVector > | splitAt (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< Position > | vp |
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) |
A list of positions.
Definition at line 45 of file PositionVector.h.
|
private |
vector of position
Definition at line 49 of file PositionVector.h.
PositionVector::PositionVector | ( | ) |
Constructor. Creates an empty position vector.
Definition at line 51 of file PositionVector.cpp.
Referenced by getSubpart2D(), and getSubpartByIndex().
PositionVector::PositionVector | ( | const std::vector< Position > & | v | ) |
Copy Constructor. Create a positionVector with the same elements as other positionVector.
[in] | v | The vector to copy |
Definition at line 54 of file PositionVector.cpp.
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.
[in] | beg | The begin iterator for copy |
[in] | end | The end iterator to copy |
Definition at line 59 of file PositionVector.cpp.
Parameter Constructor used for lines.
[in] | p1 | the first position |
[in] | p2 | the second position |
Definition at line 64 of file PositionVector.cpp.
PositionVector::~PositionVector | ( | ) |
Destructor.
Definition at line 70 of file PositionVector.cpp.
void PositionVector::add | ( | const Position & | offset | ) |
Definition at line 639 of file PositionVector.cpp.
References add(), Position::x(), Position::y(), and Position::z().
void PositionVector::add | ( | double | xoff, |
double | yoff, | ||
double | zoff | ||
) |
Definition at line 617 of file PositionVector.cpp.
Referenced by add(), computeSameEnd(), NIImporter_OpenDrive::computeShapes(), NIImporter_OpenDrive::geomFromSpiral(), getOrthogonal(), NBEdge::init(), NIImporter_OpenDrive::loadNetwork(), GeomHelper::makeCircle(), GeomHelper::makeRing(), GNETAZ::moveEntireShape(), GNEPoly::moveEntireShape(), GNEEdge::moveEntireShape(), GNETAZ::moveGeometry(), GNETAZ::moveVertexShape(), GNEPoly::moveVertexShape(), GNEEdge::moveVertexShape(), operator+(), operator-(), NBDistrict::reshiftPosition(), NBNode::reshiftPosition(), NBEdge::reshiftPosition(), GUIPolygon::setShape(), PolygonDynamics::update(), GNEEdge::updateJunctionPosition(), NWWriter_OpenDrive::writeGeomPP3(), and NWWriter_OpenDrive::writeGeomSmooth().
PositionVector PositionVector::added | ( | const Position & | offset | ) | const |
Definition at line 645 of file PositionVector.cpp.
double PositionVector::angleAt2D | ( | int | pos | ) | const |
get angle in certain position of position vector
Definition at line 1221 of file PositionVector.cpp.
References INVALID_DOUBLE.
Referenced by NBNode::bezierControlPoints(), NBEdge::buildInnerEdges(), NBEdge::checkGeometry(), NBEdge::getAngleAtNode(), NBContHelper::edge_opposite_direction_sorter::getEdgeAngleAt(), NBNodeShapeComputer::getSmoothCorner(), NBNodeShapeComputer::joinSameDirectionEdges(), MSLane::incoming_lane_priority_sorter::operator()(), MSLane::outgoing_lane_priority_sorter::operator()(), NWWriter_OpenDrive::writeGeomLines(), NWWriter_OpenDrive::writeGeomPP3(), and NWWriter_OpenDrive::writeRoadObjects().
void PositionVector::append | ( | const PositionVector & | v, |
double | sameThreshold = 2.0 |
||
) |
Definition at line 696 of file PositionVector.cpp.
Referenced by NBEdge::append(), NBNode::buildWalkingAreas(), NBEdgeCont::checkOverlap(), NBNode::computeInternalLaneShape(), NBNodeShapeComputer::computeNodeShapeDefault(), NBEdgeCont::formFactor(), MSTransportable::getBoundingBox(), MSVehicle::getBoundingBox(), NIImporter_OpenDrive::loadNetwork(), NBRequest::oppositeLeftTurnConflict(), GNENet::replaceJunctionByGeometry(), and GNEConnection::updateGeometry().
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().
|
virtual |
Returns the information whether the position vector describes a polygon lying around the given point.
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().
double PositionVector::beginEndAngle | ( | ) | const |
returns the angle in radians of the line connecting the first and the last position
Definition at line 808 of file PositionVector.cpp.
References INVALID_DOUBLE.
Referenced by NBEdge::cutAtIntersection(), NIVissimEdge::dict_checkEdges2Join(), NIVissimConnectionCluster::getIncomingContinuation(), NIVissimConnectionCluster::getIncomingContinuationGeometry(), NIVissimConnectionCluster::getOutgoingContinuation(), NIVissimConnectionCluster::getOutgoingContinuationGeometry(), NIVissimConnectionCluster::isWeakDistrictConnRealisation(), NIVissimConnectionCluster::same_direction_sorter::operator()(), GNELane::setFunctionalColor(), and GUILane::setFunctionalColor().
PositionVector PositionVector::bezier | ( | int | numPoints | ) |
return a bezier interpolation
Definition at line 1682 of file PositionVector.cpp.
References ISNAN(), and Position::x().
Referenced by NBNode::computeSmoothShape(), GNEEdge::smoothShape(), NWWriter_OpenDrive::writeGeomSmooth(), and NWWriter_OpenDrive::writeInternalEdge().
void PositionVector::closePolygon | ( | ) |
ensures that the last position equals the first
Definition at line 1231 of file PositionVector.cpp.
Referenced by GNEPoly::closePolygon(), GNEJunction::drawGL(), GUIJunctionWrapper::drawGL(), NBNode::getCenter(), GNEViewNet::onCmdEditJunctionShape(), NLHandler::openJunction(), NIVissimSingleTypeParser_Knotendefinition::parse(), NIXMLNodesHandler::processNodeType(), GNEPoly::setAttribute(), GNEPolygonFrame::shapeDrawed(), GNETAZFrame::shapeDrawed(), and NBEdge::startShapeAt().
Returns whether the AbstractPoly crosses the given line.
Implements AbstractPoly.
Definition at line 546 of file PositionVector.cpp.
References intersects().
double PositionVector::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)
Definition at line 1259 of file PositionVector.cpp.
References Position::distanceTo2D(), GeomHelper::INVALID_OFFSET, nearest_offset_to_point2D(), and positionAtOffset2D().
Referenced by LaneStoringVisitor::add(), NBNodeShapeComputer::badIntersection(), NWWriter_OpenDrive::checkLaneGeometries(), NBEdge::computeAngle(), NBNode::computeNodeShape(), libsumo::Helper::convertCartesianToRoadMap(), distances(), GNETAZ::drawGL(), GNEPoly::drawGL(), libsumo::Helper::findCloserLane(), NBPTLineCont::findWay(), NBNode::getCenter(), getOverlapWith(), libsumo::Person::moveToXY(), libsumo::Vehicle::moveToXY(), libsumo::Helper::moveToXYMap(), RORouteHandler::parseGeoEdges(), NBEdge::shiftPositionAtNode(), transformToVectorCoordinates(), and NWWriter_OpenDrive::writeRoadObjects().
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
Definition at line 1239 of file PositionVector.cpp.
References distance2D(), and GeomHelper::INVALID_OFFSET.
Referenced by NBNodeShapeComputer::badIntersection(), NBEdgeCont::guessOpposites(), NBEdge::isNearEnough2BeJoined2(), and MSLink::setRequestInformation().
void PositionVector::extrapolate | ( | const double | val, |
const bool | onlyFirst = false , |
||
const bool | onlyLast = false |
||
) |
extrapolate position vector
Definition at line 1042 of file PositionVector.cpp.
References Position::add(), Position::distanceTo(), and Position::sub().
Referenced by NBNode::buildCrossings(), NBEdge::buildInnerEdges(), GUILane::debugDrawFoeIntersections(), GUILane::drawLinkNo(), GUILane::drawLinkRules(), GNECrossing::drawTLSLinkNo(), GUILane::drawTLSLinkNo(), NBEdge::extendGeometryAtNode(), NIVissimAbstractEdge::getGeomPosition(), MSPModel_Striping::initWalkingAreaPaths(), transformToVectorCoordinates(), and GNEConnection::updateGeometry().
void PositionVector::extrapolate2D | ( | const double | val, |
const bool | onlyFirst = false |
||
) |
extrapolate position vector in two dimensions (Z is ignored)
Definition at line 1064 of file PositionVector.cpp.
References Position::add(), Position::distanceTo2D(), and Position::sub().
Referenced by NBNodeShapeComputer::badIntersection(), NBNode::bezierControlPoints(), NBNodeShapeComputer::computeNodeShapeSmall(), computeSameEnd(), getOrthogonal(), NBNodeShapeComputer::joinSameDirectionEdges(), move2side(), libsumo::Helper::moveToXYMap(), NBEdge::setNodeBorder(), and NBEdge::startShapeAt().
Boundary PositionVector::getBoxBoundary | ( | ) | const |
Returns a boundary enclosing this list of lines.
Definition at line 390 of file PositionVector.cpp.
References Boundary::add().
Referenced by PCPolyContainer::add(), NBHeightMapper::addTriangle(), GUIPolygon::checkDraw(), NBEdgeCont::checkOverlap(), libsumo::Helper::collectObjectsInRange(), GNETAZ::drawGL(), MSLane::fill(), GNEConnection::getBoundary(), GNEBusStop::getCenteringBoundary(), GNEContainerStop::getCenteringBoundary(), GNEChargingStation::getCenteringBoundary(), GNEParkingArea::getCenteringBoundary(), GNEVaporizer::getCenteringBoundary(), GNETAZ::getCenteringBoundary(), GNERouteProbe::getCenteringBoundary(), GNEAccess::getCenteringBoundary(), GNEInternalLane::getCenteringBoundary(), GUIPolygon::getCenteringBoundary(), GNECalibrator::getCenteringBoundary(), GNEJunction::getCenteringBoundary(), GUIChargingStation::getCenteringBoundary(), GNEDetector::getCenteringBoundary(), GUIContainerStop::getCenteringBoundary(), GUIBusStop::getCenteringBoundary(), GNEStop::getCenteringBoundary(), GNELane::getCenteringBoundary(), GUIJunctionWrapper::GUIJunctionWrapper(), GUIParkingArea::GUIParkingArea(), NBEdgeCont::ignoreFilterMatch(), NIImporter_OpenDrive::loadNetwork(), GUIE2Collector::MyWrapper::MyWrapper(), GNEViewNetHelper::SelectingArea::processShapeSelection(), NIVissimConnectionCluster::recomputeBoundary(), GNETAZFrame::shapeDrawed(), and GNEPoly::simplifyShape().
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().
Position PositionVector::getLineCenter | ( | ) | const |
get line center
Definition at line 474 of file PositionVector.cpp.
References length(), and positionAtOffset().
Referenced by GNEDetectorE1::drawGL(), GNEDetectorEntryExit::drawGL(), GNEDetectorE1Instant::drawGL(), GNEDetectorE2::drawGL(), GUIBusStop::GUIBusStop(), GUIChargingStation::GUIChargingStation(), GUIContainerStop::GUIContainerStop(), GUIParkingArea::GUIParkingArea(), GNEContainerStop::updateGeometry(), GNEBusStop::updateGeometry(), GNEChargingStation::updateGeometry(), GNEParkingArea::updateGeometry(), GNEVaporizer::updateGeometry(), GNERouteProbe::updateGeometry(), GNEAccess::updateGeometry(), GNEDetectorE1::updateGeometry(), GNEDetectorEntryExit::updateGeometry(), GNEDetectorE1Instant::updateGeometry(), and GNEDetectorE2::updateGeometry().
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().
PositionVector PositionVector::getOrthogonal | ( | const Position & | p, |
double | extend, | ||
bool | before, | ||
double | length = 1.0 |
||
) | const |
return orthogonal through p (extending this vector if necessary)
[in] | p | The point through which to draw the orthogonal |
[in] | extend | how long to extend this vector for finding an orthogonal |
[in] | front | Whether to take the segment before or after the base point in case of ambiguity |
[in] | length | the 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().
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().
Position PositionVector::getPolygonCenter | ( | ) | const |
Returns the arithmetic of all corner points.
Definition at line 400 of file PositionVector.cpp.
References Position::x(), Position::y(), and Position::z().
Referenced by NIVissimNodeCluster::buildNBNode(), NIVissimDistrictConnection::dict_BuildDistrictNodes(), GNETAZ::drawGL(), GUIPolygon::drawInnerPolygon(), NBNode::getCenter(), GNEPoly::getPositionInView(), and NWWriter_OpenDrive::writeRoadObjects().
PositionVector PositionVector::getSubpart | ( | double | beginOffset, |
double | endOffset | ||
) | const |
get subpart of a position vector
Definition at line 706 of file PositionVector.cpp.
References length(), POSITION_EPS, positionAtOffset(), and push_back_noDoublePos().
Referenced by NBNode::computeInternalLaneShape(), NBEdge::cutAtIntersection(), GUIBusStop::GUIBusStop(), GUIChargingStation::GUIChargingStation(), GUIContainerStop::GUIContainerStop(), MSParkingArea::MSParkingArea(), GUIE2Collector::MyWrapper::MyWrapper(), and NWWriter_SUMO::writeLane().
PositionVector PositionVector::getSubpart2D | ( | double | beginOffset, |
double | endOffset | ||
) | const |
get subpart of a position vector in two dimensions (Z is ignored)
Definition at line 746 of file PositionVector.cpp.
References length2D(), POSITION_EPS, positionAtOffset2D(), PositionVector(), and push_back_noDoublePos().
Referenced by NBNodeShapeComputer::badIntersection(), computeSameEnd(), NBEdge::extendGeometryAtNode(), NIImporter_OpenDrive::geomFromArc(), NIImporter_OpenDrive::geomFromParamPoly(), NIImporter_OpenDrive::geomFromPoly(), NIImporter_OpenDrive::geomFromSpiral(), getOrthogonal(), NIImporter_OpenDrive::loadNetwork(), NBEdge::shortenGeometryAtNode(), NBEdge::startShapeAt(), and NWWriter_OpenDrive::writeRoadObjects().
PositionVector PositionVector::getSubpartByIndex | ( | int | beginIndex, |
int | count | ||
) | const |
get subpart of a position vector using index and a cout
Definition at line 789 of file PositionVector.cpp.
References PositionVector().
Referenced by NBNode::buildWalkingAreas(), NBNodeShapeComputer::computeNodeShapeSmall(), NBEdge::getInnerGeometry(), NBEdge::startShapeAt(), and NWWriter_OpenDrive::writeRoadObjects().
bool PositionVector::hasElevation | ( | ) | const |
return whether two positions differ in z-coordinate
Definition at line 1405 of file PositionVector.cpp.
Referenced by NBEdge::computeEdgeShape().
int PositionVector::indexOfClosest | ( | const Position & | p | ) | const |
index of the closest position to p
Definition at line 940 of file PositionVector.cpp.
References Position::distanceTo().
Referenced by NBPTStopCont::computeCrossProductEdgePosition(), NIImporter_OpenDrive::computeShapes(), GNETAZ::deleteGeometryPoint(), GNEEdge::deleteGeometryPoint(), GNEPoly::deleteGeometryPoint(), GNEEdge::editEndpoint(), getOrthogonal(), GNEEdge::getSplitPos(), GNETAZ::getVertexIndex(), GNEPoly::getVertexIndex(), smoothedZFront(), and GUILane::splitAtSegments().
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().
int PositionVector::insertAtClosest | ( | const Position & | p, |
bool | interpolateZ | ||
) |
inserts p between the two closest positions
p | position to be inserted |
interpolateZ | flag to enable/disable interpolation of Z Value between the two closest positions |
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(), GUILane::splitAtSegments(), and NWWriter_OpenDrive::writeGeomSmooth().
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().
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 NBNodeShapeComputer::badIntersection(), NBNode::bezierControlPoints(), NBNodeShapeComputer::computeNodeShapeSmall(), NIVissimAbstractEdge::crossesEdgeAtPoint(), GeomHelper::crossPoint(), intersectionPosition2D(), and move2side().
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.
Returns the information whether this list of points interesects the given line.
Definition at line 159 of file PositionVector.cpp.
Referenced by NGRandomNetBuilder::canConnect(), NBNodeShapeComputer::computeNodeShapeDefault(), NBNodeShapeComputer::computeNodeShapeSmall(), computeSameEnd(), Boundary::crosses(), crosses(), NIVissimAbstractEdge::crossesEdge(), GeomHelper::crossPoint(), MSInternalJunction::indirectBicycleTurn(), intersectionPosition2D(), intersects(), intersectsAtLengths2D(), NIVissimConnectionCluster::isWeakDistrictConnRealisation(), and NBEdge::startShapeAt().
|
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().
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().
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().
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().
bool PositionVector::isClosed | ( | ) | const |
check if PositionVector is closed
Definition at line 1325 of file PositionVector.cpp.
Referenced by area(), getCentroid(), and GNEPoly::simplifyShape().
double PositionVector::isLeft | ( | const Position & | P0, |
const Position & | P1, | ||
const Position & | P2 | ||
) | const |
get left
Definition at line 690 of file PositionVector.cpp.
References Position::x(), and Position::y().
Referenced by transformToVectorCoordinates().
bool PositionVector::isNAN | ( | ) | const |
check if PositionVector is NAN
Definition at line 1331 of file PositionVector.cpp.
Referenced by NBNode::buildCrossings().
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(), NIVissimConnectionCluster::liesOnSameEdgesEnd(), 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().
double PositionVector::length2D | ( | ) | const |
Returns the length.
Definition at line 497 of file PositionVector.cpp.
Referenced by NBEdge::buildInnerEdges(), NBEdge::computeAngle(), NBEdge::computeEdgeShape(), NBNode::computeInternalLaneShape(), NBNodeShapeComputer::computeNodeShapeDefault(), computeSameEnd(), NBEdge::extendGeometryAtNode(), NBEdgeCont::formFactor(), NBEdge::getShapeEndAngle(), NBEdge::getShapeStartAngle(), NBNodeShapeComputer::getSmoothCorner(), getSubpart2D(), interpolateZ(), NIImporter_OpenDrive::loadNetwork(), move2side(), NIImporter_OpenStreetMap::reconstructLayerElevation(), resample(), NBEdge::shortenGeometryAtNode(), smoothedZFront(), GNEEdge::smoothElevation(), GNEEdge::smoothShape(), splitAt(), MSLaneChangerSublane::startChangeSublane(), NBEdge::startShapeAt(), NWWriter_OpenDrive::writeGeomSmooth(), NWWriter_OpenDrive::writeInternalEdge(), and NWWriter_OpenDrive::writeRoadObjects().
void PositionVector::mirrorX | ( | ) |
Definition at line 655 of file PositionVector.cpp.
Referenced by NBDistrict::mirrorX(), NBNode::mirrorX(), NBEdge::mirrorX(), and GNEEdge::setGeometry().
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().
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().
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().
double PositionVector::nearest_offset_to_point2D | ( | const Position & | p, |
bool | perpendicular = true |
||
) | const |
return the nearest offest to point 2D
Definition at line 817 of file PositionVector.cpp.
References Position::distanceTo2D(), INVALID_DOUBLE, GeomHelper::INVALID_OFFSET, GeomHelper::nearest_offset_on_line_to_point2D(), and positionAtOffset2D().
Referenced by MSParkingArea::addLotEntry(), GNEAdditionalFrame::SelectorParentLanes::addSelectedLane(), NBNode::bezierControlPoints(), GNEAdditionalFrame::buildAdditionalOverLane(), NBPTStopCont::computeCrossProductEdgePosition(), distance2D(), GNEGeometry::drawGeometry(), GNETAZ::drawGL(), GNEPoly::drawGL(), GNEGeometry::drawLaneGeometry(), GNEGeometry::drawSegmentGeometry(), GNEEdge::editEndpoint(), NBEdge::extendGeometryAtNode(), NBPTStop::findLaneAndComputeBusStopExtent(), GNEFrameAttributesModuls::NeteditAttributes::getNeteditAttributesAndValues(), getOrthogonal(), getOverlapWith(), GNELane::getPopUpMenu(), GNEAdditional::getPopUpMenu(), GUIEdge::getSegmentAtPosition(), NBNodeShapeComputer::getSmoothCorner(), GNEEdge::getSplitPos(), GNEEdge::getVertexIndex(), GNERide::moveGeometry(), GNEPersonTrip::moveGeometry(), GNEWalk::moveGeometry(), libsumo::Helper::moveToXYMap(), GNEViewNet::onCmdTransformPOI(), GNEPolygonFrame::processClick(), GNEAdditional::BlockIcon::setRotation(), NBEdgeCont::splitAt(), GNENet::splitEdge(), and NWWriter_OpenDrive::writeRoadObjects().
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().
bool PositionVector::operator!= | ( | const PositionVector & | v2 | ) | const |
comparing operation
Definition at line 1372 of file PositionVector.cpp.
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.
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.
bool PositionVector::operator== | ( | const PositionVector & | v2 | ) | const |
comparing operation
Definition at line 1366 of file PositionVector.cpp.
Position & PositionVector::operator[] | ( | int | index | ) |
returns the position at the given index
Definition at line 229 of file PositionVector.cpp.
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.
|
virtual |
Returns the information whether the given polygon overlaps with this.
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().
|
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().
void PositionVector::pop_front | ( | ) |
pop first Position
Definition at line 1285 of file PositionVector.cpp.
|
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().
Position PositionVector::positionAtOffset | ( | double | pos, |
double | lateralOffset = 0 |
||
) | const |
Returns the position at the given length.
Definition at line 248 of file PositionVector.cpp.
References Position::INVALID.
Referenced by MSPModel_Remote::add(), NIXMLEdgesHandler::addSplit(), GNETLSEditorFrame::buildIinternalLanes(), NBRampsComputer::buildOffRamp(), NBRampsComputer::buildOnRamp(), GNEEdge::drawEdgeName(), GUIEdge::drawGL(), GLHelper::drawTriangleAtEnd(), MSLane::geometryPositionAtOffset(), NBEdge::geometryPositionAtOffset(), NIVissimAbstractEdge::getGeomPosition(), MSTransportable::Stage::getLanePosition(), getLineCenter(), GUILane::getPopUpMenu(), MSVehicle::getPosition(), GNECalibrator::getPositionInView(), GNEDetector::getPositionInView(), GNEPerson::getPositionInView(), GNEVehicle::getPositionInView(), MSVTKExport::getSpeed(), GNEEdge::getSplitPos(), getSubpart(), libsumo::InductionLoop::getTree(), GUIBusStop::getWaitPosition(), MSStoppingPlace::getWaitPosition(), GUICalibrator::GUICalibrator(), GUILaneSpeedTrigger::GUILaneSpeedTrigger(), NIImporter_OpenDrive::loadNetwork(), MSParkingArea::MSParkingArea(), GNEViewNet::onCmdTransformPOI(), NIImporter_VISUM::parse_Lanes(), splitAt(), GUILane::splitAtSegments(), libsumo::InductionLoop::storeShape(), transformToVectorCoordinates(), GNEConnection::updateGeometry(), GNELane::updateGeometry(), GNEGeometry::Geometry::updateGeometryPosition(), and NBSign::writeAsPOI().
|
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().
Position PositionVector::positionAtOffset2D | ( | double | pos, |
double | lateralOffset = 0 |
||
) | const |
Returns the position at the given length.
Definition at line 273 of file PositionVector.cpp.
References Position::INVALID.
Referenced by NBNode::bezierControlPoints(), NGRandomNetBuilder::canConnect(), NBEdge::computeAngle(), NBNodeShapeComputer::computeNodeShapeDefault(), computeSameEnd(), GUIBaseVehicle::computeSeats(), NIImporter_OpenDrive::computeShapes(), distance2D(), GNEGeometry::drawGeometry(), GNETAZ::drawGL(), GNEPoly::drawGL(), GNEGeometry::drawLaneGeometry(), GNEGeometry::drawSegmentGeometry(), GNEEdge::editEndpoint(), getOrthogonal(), getOverlapWith(), GNELane::getPopUpMenu(), CState::getPosition(), GUIContainer::getPosition(), NBEdge::getShapeEndAngle(), NBEdge::getShapeStartAngle(), getSubpart2D(), GNEEdge::getVertexIndex(), insertAtClosest(), NIImporter_OpenDrive::loadNetwork(), nearest_offset_to_point25D(), nearest_offset_to_point2D(), NBContHelper::relative_outgoing_edge_sorter::operator()(), NBContHelper::relative_incoming_edge_sorter::operator()(), resample(), smoothedZFront(), GNEEdge::smoothElevation(), GNEEdge::smoothShape(), splitAt(), NBEdge::startShapeAt(), NWWriter_OpenDrive::writeGeomSmooth(), and NWWriter_OpenDrive::writeRoadObjects().
void PositionVector::push_back_noDoublePos | ( | const Position & | p | ) |
insert in back a non double position
Definition at line 1295 of file PositionVector.cpp.
References Position::almostSame().
Referenced by NIVissimNodeCluster::buildNBNode(), NBNode::buildWalkingAreas(), NBNode::computeNodeShape(), NBNodeShapeComputer::computeNodeShapeDefault(), NBNodeShapeComputer::computeNodeShapeSmall(), NIImporter_OpenDrive::computeShapes(), NBEdge::getFinalLength(), NWWriter_DlrNavteq::getGraphLength(), getSubpart(), getSubpart2D(), NBEdge::init(), MSPModel_Striping::initWalkingAreaPaths(), insert_noDoublePos(), PCLoaderArcView::load(), NIImporter_ArcView::load(), PCLoaderOSM::loadIfSet(), NIImporter_Vissim::NIVissimXMLHandler_Streckendefinition::myEndElement(), NIVissimAbstractEdge::NIVissimAbstractEdge(), NIVissimSingleTypeParser_Streckendefinition::parse(), NIVissimSingleTypeParser_Verbindungsdefinition::parse(), GNENet::replaceJunctionByGeometry(), and GNEEdge::setShapeEndPos().
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().
void PositionVector::push_front_noDoublePos | ( | const Position & | p | ) |
insert in front a non double position
Definition at line 1303 of file PositionVector.cpp.
References Position::almostSame(), and push_front().
Referenced by NBNode::buildWalkingAreas(), NBNodeShapeComputer::computeNodeShapeDefault(), NBEdge::getFinalLength(), NWWriter_DlrNavteq::getGraphLength(), NBEdge::init(), insert_noDoublePos(), GNEEdge::setShapeStartPos(), and NBEdge::startShapeAt().
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(), and NWWriter_OpenDrive::writeGeomSmooth().
void PositionVector::removeDoublePoints | ( | double | minDist = POSITION_EPS , |
bool | assertLength = false |
||
) |
Removes positions if too near.
[in] | minDist | The minimum accepted distance; default: POSITION_EPS |
[in] | assertLength | Whether 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().
PositionVector PositionVector::resample | ( | double | maxLength | ) | const |
resample shape with the given number of points (equal spacing)
Definition at line 1633 of file PositionVector.cpp.
References length(), length2D(), POSITION_EPS, and positionAtOffset2D().
Referenced by GLHelper::drawShapeDottedContourAroundClosedShape(), GLHelper::drawShapeDottedContourAroundShape(), GLHelper::drawShapeDottedContourBetweenLanes(), GLHelper::drawShapeDottedContourRectangle(), and GNEEdge::smoothElevation().
PositionVector PositionVector::reverse | ( | ) | const |
reverse position vector
Definition at line 1086 of file PositionVector.cpp.
Referenced by NBRailwayTopologyAnalyzer::addBidiEdge(), GNENet::addReversedEdge(), NBNodeShapeComputer::badIntersection(), GNETLSEditorFrame::buildIinternalLanes(), NBNode::buildWalkingAreas(), NBEdge::computeEdgeShape(), NBNode::computeInternalLaneShape(), NBEdge::cutAtIntersection(), GUILane::drawLinkNo(), GUILane::drawLinkRules(), GLHelper::drawShapeDottedContourAroundShape(), GLHelper::drawShapeDottedContourBetweenLanes(), GNECrossing::drawTLSLinkNo(), GUILane::drawTLSLinkNo(), MSTransportable::getBoundingBox(), MSVehicle::getBoundingBox(), NBNodeShapeComputer::getSmoothCorner(), MSPModel_Striping::initWalkingAreaPaths(), NIImporter_OpenStreetMap::insertEdge(), NBEdge::isBidiRail(), NIImporter_ArcView::load(), NIImporter_OpenDrive::loadNetwork(), MSPerson::MSPersonStage_Access::MSPersonStage_Access(), NBEdge::NBEdge(), NIImporter_VISUM::parse_AreaSubPartElement(), NBEdge::reduceGeometry(), NIImporter_DlrNavteq::EdgesHandler::report(), and GNENet::reverseEdge().
void PositionVector::rotate2D | ( | double | angle | ) |
Definition at line 1503 of file PositionVector.cpp.
Referenced by NIImporter_OpenDrive::geomFromSpiral(), GNEParkingSpace::getCenteringBoundary(), getOrthogonal(), NIImporter_OpenDrive::loadNetwork(), GUIPolygon::setShape(), PolygonDynamics::update(), and NWWriter_OpenDrive::writeGeomPP3().
double PositionVector::rotationAtOffset | ( | double | pos | ) | const |
Returns the rotation at the given length.
Definition at line 294 of file PositionVector.cpp.
References Position::angleTo2D(), Position::distanceTo(), INVALID_DOUBLE, and length().
Referenced by MSDevice_SSM::classifyEncounter(), MSVehicle::computeAngle(), GNEEdge::drawEdgeName(), GUIEdge::drawGL(), GUIEdge::drawMesoVehicles(), MEVehicle::getAngle(), MSPModel_Striping::PState::getAngle(), NIImporter_OpenDrive::loadNetwork(), libsumo::Person::moveToXY(), libsumo::Vehicle::moveToXY(), rotationDegreeAtOffset(), MSLaneChangerSublane::startChangeSublane(), and NWWriter_OpenDrive::writeRoadObjects().
double PositionVector::rotationDegreeAtOffset | ( | double | pos | ) | const |
Returns the rotation at the given length.
Definition at line 319 of file PositionVector.cpp.
References GeomHelper::legacyDegree(), and rotationAtOffset().
Referenced by GUIE3Collector::MyWrapper::buildDefinition(), GNEEdge::drawEdgeName(), GUIEdge::drawGL(), GUIBusStop::GUIBusStop(), GUICalibrator::GUICalibrator(), GUIChargingStation::GUIChargingStation(), GUIContainerStop::GUIContainerStop(), GUILaneSpeedTrigger::GUILaneSpeedTrigger(), GUIParkingArea::GUIParkingArea(), GUITriggeredRerouter::GUITriggeredRerouterEdge::GUITriggeredRerouterEdge(), GUIMEInductLoop::MyWrapper::MyWrapper(), GUIInstantInductLoop::MyWrapper::MyWrapper(), GUIInductLoop::MyWrapper::MyWrapper(), GNEAdditional::BlockIcon::setRotation(), GNELane::updateGeometry(), and GNEGeometry::Geometry::updateGeometryPosition().
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().
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().
|
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().
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().
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().
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().
void PositionVector::sortAsPolyCWByAngle | ( | ) |
short as polygon CV by angle
Definition at line 611 of file PositionVector.cpp.
void PositionVector::sortByIncreasingXY | ( | ) |
shory by increasing X-Y Psitions
Definition at line 672 of file PositionVector.cpp.
std::pair< PositionVector, PositionVector > PositionVector::splitAt | ( | double | where, |
bool | use2D = false |
||
) | const |
Returns the two lists made when this list vector is splitted at the given point.
Definition at line 552 of file PositionVector.cpp.
References length(), length2D(), POSITION_EPS, positionAtOffset(), positionAtOffset2D(), toString(), and WRITE_WARNING.
Referenced by NBEdge::buildInnerEdges(), NBNodeShapeComputer::getSmoothCorner(), NBEdgeCont::splitAt(), GNENet::splitEdge(), and GNEGeometry::Geometry::updateGeometryShape().
void PositionVector::sub | ( | const Position & | offset | ) |
Definition at line 625 of file PositionVector.cpp.
References sub(), Position::x(), Position::y(), and Position::z().
void PositionVector::sub | ( | double | xoff, |
double | yoff, | ||
double | zoff | ||
) |
Definition at line 631 of file PositionVector.cpp.
Referenced by computeSameEnd(), GUIPolygon::setShape(), and sub().
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().
|
friend |
Definition at line 599 of file PositionVector.cpp.
|
static |
empty Vector
Definition at line 73 of file PositionVector.h.
Referenced by NIImporter_SUMO::addConnection(), NIXMLConnectionsHandler::addCrossing(), NIXMLConnectionsHandler::addWalkingArea(), GNECrossingFrame::CreateCrossing::onCmdCreateCrossing(), NIImporter_DlrNavteq::ConnectedLanesHandler::report(), and GNEEdge::smoothShape().