Eclipse SUMO - Simulation of Urban MObility
|
Some static methods performing geometrical operations. More...
#include <GeomHelper.h>
Static Public Member Functions | |
static double | angle2D (const Position &p1, const Position &p2) |
Returns the angle between two vectors on a plane The angle is from vector 1 to vector 2, positive anticlockwise The result is between -pi and pi. | |
static double | angleDiff (const double angle1, const double angle2) |
Returns the difference of the second angle to the first angle in radiants. | |
static double | calculateLotSpaceAngle (const PositionVector &shape, const int index, const double spaceDim, const double angle) |
calculate lotSpace angle | |
static const Position | calculateLotSpacePosition (const PositionVector &shape, const int index, const double spaceDim, const double angle, const double width, const double length) |
calculate lotSpace position | |
static double | calculateLotSpaceSlope (const PositionVector &shape, const int index, const double spaceDim) |
calculate lotSpace slope | |
static Position | crossPoint (const Boundary &b, const PositionVector &v) |
static void | findLineCircleIntersections (const Position &c, double radius, const Position &p1, const Position &p2, std::vector< double > &into) |
Returns the positions the given circle is crossed by the given line. | |
static double | fromNaviDegree (const double angle) |
static double | getCCWAngleDiff (double angle1, double angle2) |
Returns the distance of second angle from first angle counter-clockwise. | |
static double | getCWAngleDiff (double angle1, double angle2) |
Returns the distance of second angle from first angle clockwise. | |
static double | getMinAngleDiff (double angle1, double angle2) |
Returns the minimum distance (clockwise/counter-clockwise) between both angles. | |
static double | legacyDegree (const double angle, const bool positive=false) |
static PositionVector | makeCircle (const double radius, const Position ¢er, unsigned int nPoints) |
static PositionVector | makeRing (const double radius1, const double radius2, const Position ¢er, unsigned int nPoints) |
static double | naviDegree (const double angle) |
static double | nearest_offset_on_line_to_point25D (const Position &lineStart, const Position &lineEnd, const Position &p, bool perpendicular=true) |
static double | nearest_offset_on_line_to_point2D (const Position &lineStart, const Position &lineEnd, const Position &p, bool perpendicular=true) |
Static Public Attributes | |
static const double | INVALID_OFFSET = -1 |
a value to signify offsets outside the range of [0, Line.length()] | |
Some static methods performing geometrical operations.
Definition at line 46 of file GeomHelper.h.
Returns the angle between two vectors on a plane The angle is from vector 1 to vector 2, positive anticlockwise The result is between -pi and pi.
Definition at line 82 of file GeomHelper.cpp.
References angleDiff(), Position::x(), and Position::y().
Referenced by PositionVector::around(), and NGRandomNetBuilder::checkAngles().
|
static |
Returns the difference of the second angle to the first angle in radiants.
The results are always between -pi and pi. Positive values denote that the second angle is counter clockwise closer, negative values mean it is clockwise closer.
[in] | angle1 | The first angle |
[in] | angle2 | The second angle |
Definition at line 178 of file GeomHelper.cpp.
References M_PI.
Referenced by angle2D(), libsumo::Helper::applySubscriptionFilterFieldOfVision(), NBNodeShapeComputer::badIntersection(), NBNode::bezierControlPoints(), NBEdge::buildInnerEdges(), NBNode::buildWalkingAreas(), NBEdge::checkGeometry(), NBNodeShapeComputer::computeNodeShapeDefault(), GNENet::createRoundabout(), NBEdge::cutAtIntersection(), NIVissimEdge::dict_checkEdges2Join(), EnergyParams::getAngleDiff(), NBNodeShapeComputer::getDefaultRadius(), NBContHelper::edge_opposite_direction_sorter::getDiff(), NBNodeShapeComputer::getSmoothCorner(), MSLane::handleCollisionBetween(), MSLink::isInFront(), MSLink::isOnComingPed(), NIVissimConnectionCluster::isWeakDistrictConnRealisation(), NBNodeShapeComputer::joinSameDirectionEdges(), PositionVector::localAngle(), MSLane::incoming_lane_priority_sorter::operator()(), MSLane::by_connections_to_sorter::operator()(), MSLane::outgoing_lane_priority_sorter::operator()(), NIVissimConnectionCluster::same_direction_sorter::operator()(), MSLink::setRequestInformation(), NBRailwayGeometryHelper::straigthenCorrdidor(), and NWWriter_OpenDrive::writeGeomSmooth().
|
static |
calculate lotSpace angle
Definition at line 319 of file GeomHelper.cpp.
References M_PI, PositionVector::positionAtOffset(), Position::x(), and Position::y().
Referenced by MSParkingArea::setRoadsideCapacity(), and GNEParkingArea::updateGeometry().
|
static |
calculate lotSpace position
Definition at line 280 of file GeomHelper.cpp.
References M_PI, PositionVector::positionAtOffset(), Position::setx(), Position::sety(), Position::setz(), Position::x(), Position::y(), and Position::z().
Referenced by MSParkingArea::setRoadsideCapacity(), and GNEParkingArea::updateGeometry().
|
static |
calculate lotSpace slope
Definition at line 329 of file GeomHelper.cpp.
References PositionVector::slopeDegreeAtOffset().
Referenced by MSParkingArea::setRoadsideCapacity().
|
static |
Definition at line 127 of file GeomHelper.cpp.
References PositionVector::intersectionPosition2D(), PositionVector::intersects(), Boundary::xmax(), Boundary::xmin(), Boundary::ymax(), and Boundary::ymin().
Referenced by NIVissimConnectionCluster::getPositionForEdge().
|
static |
Returns the positions the given circle is crossed by the given line.
[in] | c | The center position of the circle |
[in] | radius | The radius of the circle |
[in] | p1 | The begin of the line |
[in] | p2 | The end of the line |
[filled] | into The list of crossing positions (0-1 along the line's length) |
Definition at line 46 of file GeomHelper.cpp.
References Position::x(), and Position::y().
Referenced by MSDevice_BTreceiver::BTreceiverUpdate::updateVisibility().
|
static |
Converts an angle from navigational degrees to mathematical radians.
[in] | angle | The angle in degree to convert |
Definition at line 208 of file GeomHelper.cpp.
Referenced by MSVehicle::loadState(), MSPModel_Striping::PState::moveToXY(), and MSVehicle::Influencer::postProcessRemoteControl().
|
static |
Returns the distance of second angle from first angle counter-clockwise.
[in] | angle1 | The first angle |
[in] | angle2 | The second angle |
Definition at line 152 of file GeomHelper.cpp.
Referenced by NBNode::computeLanes2Lanes(), getMinAngleDiff(), and NBNode::isLeftMover().
|
static |
Returns the distance of second angle from first angle clockwise.
[in] | angle1 | The first angle |
[in] | angle2 | The second angle |
Definition at line 162 of file GeomHelper.cpp.
Referenced by NBNode::computeLanes2Lanes(), getMinAngleDiff(), NBNode::isLeftMover(), and NBNode::rightTurnConflict().
|
static |
Returns the minimum distance (clockwise/counter-clockwise) between both angles.
[in] | angle1 | The first angle |
[in] | angle2 | The second angle |
Definition at line 172 of file GeomHelper.cpp.
References getCCWAngleDiff(), getCWAngleDiff(), and MIN2().
Referenced by NBOwnTLDef::getBestCombination(), NBEdgeCont::joinTramEdges(), NBEdgePriorityComputer::markBestParallel(), MSPModel_Striping::PState::moveToXY(), libsumo::Helper::moveToXYMap(), NBEdgePriorityComputer::setPriorityJunctionPriorities(), and MSLink::setRequestInformation().
|
static |
Converts an angle from mathematical radians where 0 is to the right and positive angles are counterclockwise to the legacy degrees used in sumo where 0 is down and positive means clockwise. If positive is true the result is in the range [0, 360), otherwise in the range [-180, 180).
[in] | angle | The angle in radians to convert |
Definition at line 214 of file GeomHelper.cpp.
Referenced by NBEdge::computeAngle(), NBEdge::getAngleAtNode(), NBEdge::getAngleAtNodeNormalized(), NBTurningDirectionsComputer::getFarAngleAtNode(), NBEdge::getShapeEndAngle(), NBEdge::getShapeStartAngle(), NBEdgeCont::joinTramEdges(), NBContHelper::relative_outgoing_edge_sorter::operator()(), NBContHelper::relative_incoming_edge_sorter::operator()(), and PositionVector::rotationDegreeAtOffset().
|
static |
Creates a circular polygon
[in] | radius | Radius of the circle |
[in] | center | Position of the circle's center |
[in] | nPoints | Number of points of the circle (Polygon's shape will have noPoints+1 points), must be >=3 |
Definition at line 235 of file GeomHelper.cpp.
References PositionVector::add(), M_PI, TL, and WRITE_ERROR.
|
static |
Creates a circular polygon
[in] | radius1 | Inner radius of the ring |
[in] | radius2 | Outer radius of the ring |
[in] | center | Position of the circle's center |
[in] | nPoints | Number of points of the circle (Polygon's shape will have noPoints+1 points), must be >=3 |
Definition at line 252 of file GeomHelper.cpp.
References PositionVector::add(), M_PI, and WRITE_ERROR.
Referenced by LIBSUMO_NAMESPACE::POI::highlight(), and LIBSUMO_NAMESPACE::Vehicle::highlight().
|
static |
Converts an angle from mathematical radians where 0 is to the right and positive angles are counterclockwise to navigational degrees where 0 is up and positive means clockwise. The result is always in the range [0, 360).
[in] | angle | The angle in radians to convert |
Definition at line 191 of file GeomHelper.cpp.
Referenced by MSVehicle::computeAngle(), GLHelper::drawTriangleAtEnd(), NIImporter_OpenDrive::geomFromSpiral(), LIBSUMO_NAMESPACE::Lane::getAngle(), LIBSUMO_NAMESPACE::Person::getAngle(), LIBSUMO_NAMESPACE::Vehicle::getAngle(), GUILane::getColorValueWithFunctional(), GUIBaseVehicle::getNaviDegree(), GUIPerson::getNaviDegree(), GNELane::getPopUpMenu(), MSPModel_Striping::PState::moveTo(), LIBSUMO_NAMESPACE::Person::moveToXY(), LIBSUMO_NAMESPACE::Vehicle::moveToXY(), MSPModel_Striping::PState::moveToXY(), libsumo::Helper::moveToXYMap(), MSVehicle::saveState(), GUILane::setFunctionalColor(), GUIContainer::setFunctionalColor(), GUIBaseVehicle::setFunctionalColor(), GUIPerson::setFunctionalColor(), GNELane::setFunctionalColor(), MSLink::setRequestInformation(), MSFCDExport::write(), MSEmissionExport::write(), NBSign::writeAsPOI(), MSFCDExport::writeTransportable(), MSXMLRawOut::writeTransportable(), and MSFullExport::writeVehicles().
|
static |
Definition at line 114 of file GeomHelper.cpp.
References Position::distanceTo(), Position::distanceTo2D(), INVALID_OFFSET, and nearest_offset_on_line_to_point2D().
|
static |
Definition at line 88 of file GeomHelper.cpp.
References Position::distanceTo2D(), INVALID_OFFSET, Position::x(), and Position::y().
Referenced by NGRandomNetBuilder::canConnect(), NIVissimConnectionCluster::getPositionForEdge(), PositionVector::insertAtClosest(), NIVissimConnectionCluster::liesOnSameEdgesEnd(), nearest_offset_on_line_to_point25D(), PositionVector::nearest_offset_to_point25D(), PositionVector::nearest_offset_to_point2D(), NBEdgeCont::splitAt(), and PositionVector::transformToVectorCoordinates().
|
static |
a value to signify offsets outside the range of [0, Line.length()]
Definition at line 50 of file GeomHelper.h.
Referenced by libsumo::Helper::applySubscriptionFilterLateralDistanceSinglePass(), NGRandomNetBuilder::canConnect(), PositionVector::distance2D(), PositionVector::distances(), GNEEdge::editEndpoint(), NBEdge::extendGeometryAtNode(), PositionVector::getOrthogonal(), NBEdgeCont::joinTramEdges(), NWWriter_OpenDrive::mapmatchRoadObjects(), LIBSUMO_NAMESPACE::Person::moveToXY(), LIBSUMO_NAMESPACE::Vehicle::moveToXY(), libsumo::Helper::moveToXYMap(), nearest_offset_on_line_to_point25D(), nearest_offset_on_line_to_point2D(), PositionVector::nearest_offset_to_point25D(), PositionVector::nearest_offset_to_point2D(), PositionVector::offsetAtIndex2D(), PositionVector::transformToVectorCoordinates(), NWWriter_OpenDrive::writeRoadObjectPOI(), and NWWriter_OpenDrive::writeRoadObjectPoly().