SUMO - Simulation of Urban MObility
Line.h
Go to the documentation of this file.
1 /****************************************************************************/
9 //
10 /****************************************************************************/
11 // SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
12 // Copyright (C) 2001-2014 DLR (http://www.dlr.de/) and contributors
13 /****************************************************************************/
14 //
15 // This file is part of SUMO.
16 // SUMO is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 /****************************************************************************/
22 #ifndef Line_h
23 #define Line_h
24 
25 
26 // ===========================================================================
27 // included modules
28 // ===========================================================================
29 #ifdef _MSC_VER
30 #include <windows_config.h>
31 #else
32 #include <config.h>
33 #endif
34 
35 #include "Position.h"
37 
38 
39 // ===========================================================================
40 // class declarations
41 // ===========================================================================
42 class PositionVector;
43 
44 
45 // ===========================================================================
46 // class definitions
47 // ===========================================================================
51 class Line {
52 public:
53  Line();
54  Line(const Position& p1, const Position& p2);
55  ~Line();
57  void extrapolateFirstBy(SUMOReal length);
58  void extrapolateSecondBy(SUMOReal length);
59  const Position& p1() const;
60  const Position& p2() const;
63  void move2side(SUMOReal amount);
64  std::vector<SUMOReal> intersectsAtLengths2D(const PositionVector& v);
65 
68 
69  SUMOReal atan2Angle() const;
70  SUMOReal atan2DegreeAngle() const;
72  SUMOReal atan2DegreeSlope() const;
73  bool intersects(const Line& l) const;
74  Position intersectsAt(const Line& l) const;
75  SUMOReal length() const;
76  SUMOReal length2D() const;
77  void add(SUMOReal x, SUMOReal y);
78  void add(const Position& p);
79  void sub(SUMOReal x, SUMOReal y);
80  Line& reverse();
81  void rotateAtP1(SUMOReal rot);
82 
83 private:
85 };
86 
87 
88 #endif
89 
90 /****************************************************************************/
91 
SUMOReal length2D() const
Definition: Line.cpp:177
SUMOReal atan2PositiveAngle() const
Definition: Line.cpp:149
SUMOReal atan2DegreeAngle() const
Definition: Line.cpp:143
const Position & p2() const
Definition: Line.cpp:86
Position myP2
Definition: Line.h:84
SUMOReal intersectsAtLength2D(const Line &v)
returns distance between myP1 and intersection or -1 if line segments do not intersect ...
Definition: Line.cpp:220
SUMOReal atan2DegreeSlope() const
Definition: Line.cpp:159
Position getPositionAtDistance2D(SUMOReal offset) const
Definition: Line.cpp:105
void rotateAtP1(SUMOReal rot)
Definition: Line.cpp:228
void extrapolateFirstBy(SUMOReal length)
Definition: Line.cpp:69
Position getPositionAtDistance(SUMOReal offset) const
Definition: Line.cpp:92
const Position & p1() const
Definition: Line.cpp:80
~Line()
Definition: Line.cpp:56
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
A list of positions.
void move2side(SUMOReal amount)
Definition: Line.cpp:118
Definition: Line.h:51
Line & reverse()
Definition: Line.cpp:211
SUMOReal atan2Angle() const
Definition: Line.cpp:137
bool intersects(const Line &l) const
Definition: Line.cpp:171
void extrapolateBy(SUMOReal length)
Definition: Line.cpp:60
void extrapolateSecondBy(SUMOReal length)
Definition: Line.cpp:75
SUMOReal length() const
Definition: Line.cpp:183
void sub(SUMOReal x, SUMOReal y)
Definition: Line.cpp:203
Position myP1
Definition: Line.h:84
Line()
Definition: Line.cpp:49
#define SUMOReal
Definition: config.h:215
std::vector< SUMOReal > intersectsAtLengths2D(const PositionVector &v)
Definition: Line.cpp:126
Position intersectsAt(const Line &l) const
Definition: Line.cpp:165
void add(SUMOReal x, SUMOReal y)
Definition: Line.cpp:189