GEOS
3.14.0dev

#include <LineSegment.h>
Public Types  
using  UnorderedSet = std::unordered_set< LineSegment, HashCode > 
Public Member Functions  
LineSegment (const Coordinate &c0, const Coordinate &c1)  
Segment end.  
LineSegment (double x0, double y0, double x1, double y1)  
void  setCoordinates (const Coordinate &c0, const Coordinate &c1) 
void  setCoordinates (const LineSegment &ls) 
const Coordinate &  operator[] (std::size_t i) const 
Coordinate &  operator[] (std::size_t i) 
double  minX () const 
gets the minimum X ordinate value  
double  maxX () const 
gets the maximum X ordinate value  
double  minY () const 
gets the minimum Y ordinate value  
double  maxY () const 
gets the maximum Y ordinate value  
double  getLength () const 
Computes the length of the line segment.  
bool  isHorizontal () const 
bool  isVertical () const 
int  orientationIndex (const LineSegment &seg) const 
int  orientationIndex (const LineSegment *seg) const 
int  orientationIndex (const CoordinateXY &p) const 
int  orientationIndex (const Coordinate &p) const 
Determines the orientation index of a Coordinate relative to this segment. More...  
void  reverse () 
Reverses the direction of the line segment.  
void  normalize () 
Puts the line segment into a normalized form. More...  
double  angle () const 
CoordinateXY  midPoint () const 
Computes the midpoint of the segment. More...  
double  distance (const LineSegment &ls) const 
Computes the distance between this line segment and another one.  
double  distance (const CoordinateXY &p) const 
Computes the distance between this line segment and a point.  
double  distancePerpendicular (const CoordinateXY &p) const 
double  distancePerpendicularOriented (const CoordinateXY &p) const 
void  pointAlong (double segmentLengthFraction, Coordinate &ret) const 
Computes the Coordinate that lies a given fraction along the line defined by this segment. More...  
void  pointAlongOffset (double segmentLengthFraction, double offsetDistance, Coordinate &ret) const 
Computes the Coordinate that lies a given fraction along the line defined by this segment and offset from the segment by a given distance. More...  
LineSegment  offset (double offsetDistance) 
double  projectionFactor (const CoordinateXY &p) const 
Compute the projection factor for the projection of the point p onto this LineSegment. More...  
double  segmentFraction (const CoordinateXY &inputPt) const 
Computes the fraction of distance (in [0.0, 1.0] ) that the projection of a point occurs along this line segment. More...  
void  project (const Coordinate &p, Coordinate &ret) const 
Compute the projection of a point onto the line determined by this line segment. More...  
CoordinateXY  project (const CoordinateXY &p) const 
bool  project (const LineSegment &seg, LineSegment &ret) const 
Project a line segment onto this line segment and return the resulting line segment. More...  
void  closestPoint (const CoordinateXY &p, CoordinateXY &ret) const 
Computes the closest point on this line segment to another point. More...  
bool  equalsTopo (const LineSegment &other) const 
Returns true if other is topologically equal to this LineSegment (e.g. irrespective of orientation). More...  
std::array< Coordinate, 2 >  closestPoints (const LineSegment &line) 
std::array< Coordinate, 2 >  closestPoints (const LineSegment *line) 
Coordinate  intersection (const LineSegment &line) const 
Coordinate  lineIntersection (const LineSegment &line) const 
Computes the intersection point of the lines defined by two segments, if there is one. More...  
std::unique_ptr< LineString >  toGeometry (const GeometryFactory &gf) const 
int  compareTo (const LineSegment &other) const 
Compares this object with the specified object for order. More...  
std::ostream &  operator<< (std::ostream &o) 
bool  operator== (const LineSegment &rhs) const 
bool  operator< (const LineSegment &rhs) const 
bool  operator> (const LineSegment &rhs) const 
Static Public Member Functions  
static CoordinateXY  midPoint (const CoordinateXY &pt0, const CoordinateXY &pt1) 
Public Attributes  
Coordinate  p0 
Coordinate  p1 
Segment start.  
Represents a line segment defined by two Coordinate. Provides methods to compute various geometric properties and relationships of line segments.
This class is designed to be easily mutable (to the extent of having its contained points public). This supports a common pattern of reusing a single LineSegment object as a way of computing segment properties on the segments defined by arrays or lists of Coordinates.
TODO: have this class keep pointers rather then real Coordinates ?

inline 
void geos::geom::LineSegment::closestPoint  (  const CoordinateXY &  p, 
CoordinateXY &  ret  
)  const 
Computes the closest point on this line segment to another point.
p  the point to find the closest point to 
ret  the Coordinate to which the closest point on the line segment to the point p will be written 
std::array<Coordinate, 2> geos::geom::LineSegment::closestPoints  (  const LineSegment &  line  ) 
Computes the closest points on two line segments.
line  the line segment to find the closest points to 

inline 
Compares this object with the specified object for order.
Uses the standard lexicographic ordering for the points in the LineSegment.
other  the LineSegment with which this LineSegment is being compared 
References p1.

inline 
Computes the perpendicular distance between the (infinite) line defined by this line segment and a point. If the segment has zero length this returns the distance between the segment and the point.
p  the point to compute the distance to 
References geos::algorithm::Distance::pointToLinePerpendicular().
double geos::geom::LineSegment::distancePerpendicularOriented  (  const CoordinateXY &  p  )  const 
Computes the oriented perpendicular distance between the (infinite) line defined by this line segment and a point. The oriented distance is positive if the point on the left of the line, and negative if it is on the right. If the segment has zero length this returns the distance between the segment and the point.
p  the point to compute the distance to 
bool geos::geom::LineSegment::equalsTopo  (  const LineSegment &  other  )  const 
Returns true
if other
is topologically equal to this LineSegment (e.g. irrespective of orientation).
other  a LineSegment with which to do the comparison. 
Coordinate geos::geom::LineSegment::intersection  (  const LineSegment &  line  )  const 
Computes an intersection point between two segments, if there is one. There may be 0, 1 or many intersection points between two segments. If there are 0, null is returned. If there is 1 or more, a single one is returned (chosen at the discretion of the algorithm). If more information is required about the details of the intersection, the LineIntersector class should be used.
line 

inline 
Tests whether the segment is horizontal.
true
if the segment is horizontal

inline 
Tests whether the segment is vertical.
true
if the segment is vertical Coordinate geos::geom::LineSegment::lineIntersection  (  const LineSegment &  line  )  const 
Computes the intersection point of the lines defined by two segments, if there is one.
There may be 0, 1 or an infinite number of intersection points between two lines. If there is a unique intersection point, it is returned. Otherwise, null
is returned. If more information is required about the details of the intersection, the algorithms::LineIntersector class should be used.
line  a line segment defining a straight line 

inline 
Computes the midpoint of the segment.

inline 
Puts the line segment into a normalized form.
This is useful for using line segments in maps and indexes when topological equality rather than exact equality is desired.
LineSegment geos::geom::LineSegment::offset  (  double  offsetDistance  ) 
Computes the LineSegment that is offset from the segment by a given distance. The computed segment is offset to the left of the line if the offset distance is positive, to the right if negative.
offsetDistance  the distance the point is offset from the segment (positive is to the left, negative is to the right) 
IllegalStateException  if the segment has zero length 

inline 
Determines the orientation index of a Coordinate relative to this segment.
The orientation index is as defined in Orientation::index.
p  the Coordinate to compare 
p
is to the left of this segment p
is to the right of this segment p
is collinear with this segmentReferences geos::algorithm::Orientation::index().

inline 
Determines the orientation index of a Coordinate relative to this segment. The orientation index is as defined in Orientation::index(Coordinate, Coordinate, Coordinate).
p  the coordinate to compare 
References geos::algorithm::Orientation::index().
int geos::geom::LineSegment::orientationIndex  (  const LineSegment &  seg  )  const 
Determines the orientation of a LineSegment relative to this segment. The concept of orientation is specified as follows: Given two line segments A and L,
seg  the LineSegment to compare 

inline 
Computes the Coordinate that lies a given fraction along the line defined by this segment.
A fraction of 0.0
returns the start point of the segment; a fraction of 1.0
returns the end point of the segment. If the fraction is < 0.0 or > 1.0 the point returned will lie before the start or beyond the end of the segment.
segmentLengthFraction  the fraction of the segment length along the line 
ret  will be set to the point at that distance 
References geos::geom::Coordinate::z.
void geos::geom::LineSegment::pointAlongOffset  (  double  segmentLengthFraction, 
double  offsetDistance,  
Coordinate &  ret  
)  const 
Computes the Coordinate that lies a given fraction along the line defined by this segment and offset from the segment by a given distance.
A fraction of 0.0
offsets from the start point of the segment; a fraction of 1.0
offsets from the end point of the segment.
The computed point is offset to the left of the line if the offset distance is positive, to the right if negative.
segmentLengthFraction  the fraction of the segment length along the line 
offsetDistance  the distance the point is offset from the segment (positive is to the left, negative is to the right) 
ret  will be set to the point at that distance and offset 
IllegalStateException  if the segment has zero length 
void geos::geom::LineSegment::project  (  const Coordinate &  p, 
Coordinate &  ret  
)  const 
Compute the projection of a point onto the line determined by this line segment.
Note that the projected point may lie outside the line segment. If this is the case, the projection factor will lie outside the range [0.0, 1.0].
bool geos::geom::LineSegment::project  (  const LineSegment &  seg, 
LineSegment &  ret  
)  const 
Project a line segment onto this line segment and return the resulting line segment.
The returned line segment will be a subset of the target line line segment. This subset may be null, if the segments are oriented in such a way that there is no projection.
Note that the returned line may have zero length (i.e. the same endpoints). This can happen for instance if the lines are perpendicular to one another.
seg  the line segment to project 
ret  the projected line segment 
double geos::geom::LineSegment::projectionFactor  (  const CoordinateXY &  p  )  const 
Compute the projection factor for the projection of the point p onto this LineSegment.
The projection factor is the constant r by which the vector for this segment must be multiplied to equal the vector for the projection of p on the line defined by this segment.
The projection factor returned will be in the range (inf, +inf)
p  the point to compute the factor for 
double geos::geom::LineSegment::segmentFraction  (  const CoordinateXY &  inputPt  )  const 
Computes the fraction of distance (in [0.0, 1.0]
) that the projection of a point occurs along this line segment.
If the point is beyond either ends of the line segment, the closest fractional value (0.0
or 1.0
) is returned.
Essentially, this is the projectionFactor clamped to the range [0.0, 1.0]
.
inputPt  the point 
std::unique_ptr<LineString> geos::geom::LineSegment::toGeometry  (  const GeometryFactory &  gf  )  const 
Creates a LineString with the same coordinates as this segment
gf  the geometery factory to use 