SUMO - Simulation of Urban MObility
GeomHelper Class Reference

Some static methods performing geometrical operations. More...

#include <GeomHelper.h>

Collaboration diagram for GeomHelper:
Collaboration graph

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. More...
 
static double angleDiff (const double angle1, const double angle2)
 Returns the difference of the second angle to the first angle in radiants. More...
 
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. More...
 
static double getCCWAngleDiff (double angle1, double angle2)
 Returns the distance of second angle from first angle counter-clockwise. More...
 
static double getCWAngleDiff (double angle1, double angle2)
 Returns the distance of second angle from first angle clockwise. More...
 
static double getMinAngleDiff (double angle1, double angle2)
 Returns the minimum distance (clockwise/counter-clockwise) between both angles. More...
 
static double legacyDegree (const double angle, const bool positive=false)
 
static double naviDegree (const double angle)
 
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()] More...
 

Detailed Description

Some static methods performing geometrical operations.

Definition at line 55 of file GeomHelper.h.

Member Function Documentation

◆ angle2D()

double GeomHelper::angle2D ( const Position p1,
const Position p2 
)
static

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 90 of file GeomHelper.cpp.

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

Referenced by PositionVector::around(), and NGRandomNetBuilder::checkAngles().

◆ angleDiff()

double GeomHelper::angleDiff ( const double  angle1,
const double  angle2 
)
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.

Parameters
[in]angle1The first angle
[in]angle2The second angle
Returns
angle starting from first to second angle

Definition at line 174 of file GeomHelper.cpp.

References M_PI.

Referenced by angle2D(), NBNode::bezierControlPoints(), NBEdge::checkGeometry(), NBEdge::cutAtIntersection(), NIVissimEdge::dict_checkEdges2Join(), NBContHelper::edge_opposite_direction_sorter::getDiff(), NIVissimConnectionCluster::isWeakDistrictConnRealisation(), NBNodeShapeComputer::joinSameDirectionEdges(), MSDevice_Battery::notifyMove(), NIVissimConnectionCluster::same_direction_sorter::operator()(), MSLane::by_connections_to_sorter::operator()(), MSLane::incoming_lane_priority_sorter::operator()(), MSLane::outgoing_lane_priority_sorter::operator()(), and NWWriter_OpenDrive::writeGeomSmooth().

◆ crossPoint()

◆ findLineCircleIntersections()

void GeomHelper::findLineCircleIntersections ( const Position c,
double  radius,
const Position p1,
const Position p2,
std::vector< double > &  into 
)
static

Returns the positions the given circle is crossed by the given line.

Parameters
[in]cThe center position of the circle
[in]radiusThe radius of the circle
[in]p1The begin of the line
[in]p2The end of the line

Definition at line 54 of file GeomHelper.cpp.

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

Referenced by MSDevice_BTreceiver::BTreceiverUpdate::updateVisibility().

◆ getCCWAngleDiff()

double GeomHelper::getCCWAngleDiff ( double  angle1,
double  angle2 
)
static

Returns the distance of second angle from first angle counter-clockwise.

Parameters
[in]angle1The first angle
[in]angle2The second angle
Returns
Angle (counter-clockwise) starting from first to second angle

Definition at line 148 of file GeomHelper.cpp.

Referenced by NBNode::computeLanes2Lanes(), getMinAngleDiff(), and NBNode::isLeftMover().

◆ getCWAngleDiff()

double GeomHelper::getCWAngleDiff ( double  angle1,
double  angle2 
)
static

Returns the distance of second angle from first angle clockwise.

Parameters
[in]angle1The first angle
[in]angle2The second angle
Returns
Angle (clockwise) starting from first to second angle

Definition at line 158 of file GeomHelper.cpp.

Referenced by NBNode::computeLanes2Lanes(), getMinAngleDiff(), NBNode::isLeftMover(), and NBNode::rightTurnConflict().

◆ getMinAngleDiff()

double GeomHelper::getMinAngleDiff ( double  angle1,
double  angle2 
)
static

Returns the minimum distance (clockwise/counter-clockwise) between both angles.

Parameters
[in]angle1The first angle
[in]angle2The second angle
Returns
The minimum distance between both angles

Definition at line 168 of file GeomHelper.cpp.

References getCCWAngleDiff(), getCWAngleDiff(), and MIN2().

Referenced by NBNodeShapeComputer::compute(), NBOwnTLDef::getBestCombination(), NBContHelper::edge_similar_direction_sorter::operator()(), NBEdgePriorityComputer::setPriorityJunctionPriorities(), and TraCIServerAPI_Vehicle::vtdMap().

◆ legacyDegree()

double GeomHelper::legacyDegree ( const double  angle,
const bool  positive = false 
)
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).

Parameters
[in]angleThe angle in radians to convert
Returns
the angle in degrees

Definition at line 200 of file GeomHelper.cpp.

References M_PI, and RAD2DEG.

Referenced by NBEdge::computeAngle(), NBEdge::getAngleAtNode(), NBEdge::getShapeEndAngle(), NBEdge::getShapeStartAngle(), NBContHelper::relative_outgoing_edge_sorter::operator()(), NBContHelper::straightness_sorter::operator()(), NBContHelper::relative_incoming_edge_sorter::operator()(), and PositionVector::rotationDegreeAtOffset().

◆ naviDegree()

double GeomHelper::naviDegree ( const double  angle)
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).

Parameters
[in]angleThe angle in radians to convert
Returns
the angle in degrees

Definition at line 187 of file GeomHelper.cpp.

References M_PI, and RAD2DEG.

Referenced by GUIPerson::drawAction_drawAsPoly(), GLHelper::drawTriangleAtEnd(), TraCI_Vehicle::getAngle(), GUIBaseVehicle::getNaviDegree(), GUIPerson::getNaviDegree(), TraCIServerAPI_Person::processGet(), TraCIServerAPI_Vehicle::processSet(), GUIEdge::setFunctionalColor(), GUIContainer::setFunctionalColor(), GUIPerson::setFunctionalColor(), GNELane::setFunctionalColor(), GUILane::setFunctionalColor(), TraCIServerAPI_Vehicle::vtdMap(), MSEmissionExport::write(), MSFCDExport::write(), MSFCDExport::writeTransportable(), MSXMLRawOut::writeTransportable(), and MSFullExport::writeVehicles().

◆ nearest_offset_on_line_to_point2D()

Field Documentation

◆ INVALID_OFFSET


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