SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GeomHelper Class Reference

Some static methods performing geometrical operations. More...

#include <GeomHelper.h>

Static Public Member Functions

static SUMOReal Angle2D (SUMOReal x1, SUMOReal y1, SUMOReal x2, SUMOReal y2)
 
static SUMOReal closestDistancePointLine (const Position &point, const Position &lineStart, const Position &lineEnd, Position &outIntersection)
 
static Position crossPoint (const Boundary &b, const PositionVector &v)
 
static SUMOReal distancePointLine (const Position &point, const Position &lineStart, const Position &lineEnd)
 
static Position extrapolate_first (const Position &p1, const Position &p2, SUMOReal length)
 
static Position extrapolate_second (const Position &p1, const Position &p2, SUMOReal length)
 
static void FindLineCircleIntersections (const Position &c, SUMOReal radius, const Position &p1, const Position &p2, std::vector< SUMOReal > &into)
 Returns the positions the given circle is crossed by the given line. More...
 
static SUMOReal getCCWAngleDiff (SUMOReal angle1, SUMOReal angle2)
 Returns the distance of second angle from first angle counter-clockwise. More...
 
static SUMOReal getCWAngleDiff (SUMOReal angle1, SUMOReal angle2)
 Returns the distance of second angle from first angle clockwise. More...
 
static SUMOReal getMaxAngleDiff (SUMOReal angle1, SUMOReal angle2)
 Returns the maximum distance (clockwise/counter-clockwise) between both angles. More...
 
static SUMOReal getMinAngleDiff (SUMOReal angle1, SUMOReal angle2)
 Returns the minimum distance (clockwise/counter-clockwise) between both angles. More...
 
static std::pair< SUMOReal,
SUMOReal
getNormal90D_CW (const Position &beg, const Position &end, SUMOReal length, SUMOReal wanted_offset)
 
static std::pair< SUMOReal,
SUMOReal
getNormal90D_CW (const Position &beg, const Position &end, SUMOReal wanted_offset)
 
static Position interpolate (const Position &p1, const Position &p2, SUMOReal length)
 
static Position intersection_position2D (const Position &p11, const Position &p12, const Position &p21, const Position &p22)
 returns the intersection point of the (infinite) lines p11,p12 and p21,p22. If the given lines are parallel the result will contain NAN-values More...
 
static bool intersects (const Position &p11, const Position &p12, const Position &p21, const Position &p22)
 return whether given lines intersect More...
 
static SUMOReal nearest_offset_on_line_to_point2D (const Position &l1, const Position &l2, const Position &p, bool perpendicular=true)
 
static bool pointOnLine (const Position &p, const Position &from, const Position &to)
 Returns whether the given point lies on the given line. More...
 
static Position transfer_to_side (Position &p, const Position &lineBeg, const Position &lineEnd, SUMOReal amount)
 

Static Private Member Functions

static bool intersects (const SUMOReal x1, const SUMOReal y1, const SUMOReal x2, const SUMOReal y2, const SUMOReal x3, const SUMOReal y3, const SUMOReal x4, const SUMOReal y4, SUMOReal *x, SUMOReal *y, SUMOReal *mu)
 return whether the line segments defined by Line (x1,y1),(x2,y2) and Line (x3,y3),(x4,y4) intersect More...
 

Detailed Description

Some static methods performing geometrical operations.

Definition at line 55 of file GeomHelper.h.

Member Function Documentation

SUMOReal GeomHelper::Angle2D ( SUMOReal  x1,
SUMOReal  y1,
SUMOReal  x2,
SUMOReal  y2 
)
static
SUMOReal GeomHelper::closestDistancePointLine ( const Position point,
const Position lineStart,
const Position lineEnd,
Position outIntersection 
)
static

Return the distance from point to line as well as the intersection point. If intersection does not lie within the line segment, the start or end point of the segment is returned

Definition at line 298 of file GeomHelper.cpp.

References Position::distanceTo2D(), nearest_offset_on_line_to_point2D(), Position::set(), and SUMOReal.

Referenced by PositionVector::distance(), and PositionVector::insertAtClosest().

SUMOReal GeomHelper::distancePointLine ( const Position point,
const Position lineStart,
const Position lineEnd 
)
static
Position GeomHelper::extrapolate_first ( const Position p1,
const Position p2,
SUMOReal  length 
)
static
Position GeomHelper::extrapolate_second ( const Position p1,
const Position p2,
SUMOReal  length 
)
static
void GeomHelper::FindLineCircleIntersections ( const Position c,
SUMOReal  radius,
const Position p1,
const Position p2,
std::vector< SUMOReal > &  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
filled]into The list of crossing positions (0-1 along the line's length)
See Also
http://blog.csharphelper.com/2010/03/28/determine-where-a-line-intersects-a-circle-in-c.aspx
http://gamedev.stackexchange.com/questions/18333/circle-line-collision-detection-problem (jazzdawg)

Definition at line 149 of file GeomHelper.cpp.

References pointOnLine(), Position::set(), SUMOReal, Position::x(), and Position::y().

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

SUMOReal GeomHelper::getCCWAngleDiff ( SUMOReal  angle1,
SUMOReal  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 371 of file GeomHelper.cpp.

References SUMOReal.

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

SUMOReal GeomHelper::getCWAngleDiff ( SUMOReal  angle1,
SUMOReal  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 381 of file GeomHelper.cpp.

References SUMOReal.

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

SUMOReal GeomHelper::getMaxAngleDiff ( SUMOReal  angle1,
SUMOReal  angle2 
)
static

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

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

Definition at line 397 of file GeomHelper.cpp.

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

SUMOReal GeomHelper::getMinAngleDiff ( SUMOReal  angle1,
SUMOReal  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 391 of file GeomHelper.cpp.

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

Referenced by NBNodeShapeComputer::compute(), NBEdge::computeEdgeShape(), NBOwnTLDef::getBestCombination(), NBContHelper::edge_opposite_direction_sorter::getDiff(), NBContHelper::edge_similar_direction_sorter::operator()(), MSLane::by_connections_to_sorter::operator()(), and NBEdgePriorityComputer::setPriorityJunctionPriorities().

std::pair< SUMOReal, SUMOReal > GeomHelper::getNormal90D_CW ( const Position beg,
const Position end,
SUMOReal  length,
SUMOReal  wanted_offset 
)
static
std::pair< SUMOReal, SUMOReal > GeomHelper::getNormal90D_CW ( const Position beg,
const Position end,
SUMOReal  wanted_offset 
)
static

Definition at line 351 of file GeomHelper.cpp.

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

Position GeomHelper::interpolate ( const Position p1,
const Position p2,
SUMOReal  length 
)
static

Definition at line 223 of file GeomHelper.cpp.

References Position::distanceTo(), and SUMOReal.

Position GeomHelper::intersection_position2D ( const Position p11,
const Position p12,
const Position p21,
const Position p22 
)
static

returns the intersection point of the (infinite) lines p11,p12 and p21,p22. If the given lines are parallel the result will contain NAN-values

Definition at line 189 of file GeomHelper.cpp.

References intersects(), SUMOReal, Position::x(), Position::y(), and Position::z().

Referenced by NIVissimAbstractEdge::crossesAtPoint(), PositionVector::intersectionPoints2D(), Line::intersectsAt(), Line::intersectsAtLength2D(), PositionVector::intersectsAtLengths2D(), and PositionVector::intersectsAtPoint().

bool GeomHelper::intersects ( const Position p11,
const Position p12,
const Position p21,
const Position p22 
)
static

return whether given lines intersect

Parameters
[in]p11The begin position of the first line
[in]p12The end position of the first line
[in]p21The begin position of the second line
[in]p22The end position of the second line
Returns
Whether both lines intersect

Definition at line 131 of file GeomHelper.cpp.

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

Referenced by NGRandomNetBuilder::canConnect(), Boundary::crosses(), intersection_position2D(), PositionVector::intersectionPoints2D(), Line::intersects(), PositionVector::intersects(), PositionVector::intersectsAtLengths2D(), and PositionVector::intersectsAtPoint().

bool GeomHelper::intersects ( const SUMOReal  x1,
const SUMOReal  y1,
const SUMOReal  x2,
const SUMOReal  y2,
const SUMOReal  x3,
const SUMOReal  y3,
const SUMOReal  x4,
const SUMOReal  y4,
SUMOReal x,
SUMOReal y,
SUMOReal mu 
)
staticprivate

return whether the line segments defined by Line (x1,y1),(x2,y2) and Line (x3,y3),(x4,y4) intersect

Definition at line 53 of file GeomHelper.cpp.

References SUMOReal.

bool GeomHelper::pointOnLine ( const Position p,
const Position from,
const Position to 
)
static

Returns whether the given point lies on the given line.

Parameters
[in]pThe position
[in]fromThe begin position of the line
[in]toThe end position of the line
Returns
Whether the point lies on the line

Definition at line 139 of file GeomHelper.cpp.

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

Referenced by FindLineCircleIntersections().

Position GeomHelper::transfer_to_side ( Position p,
const Position lineBeg,
const Position lineEnd,
SUMOReal  amount 
)
static

Definition at line 310 of file GeomHelper.cpp.

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


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