libpysal.cg.LineSegment¶
- class libpysal.cg.LineSegment(start_pt, end_pt)[source]¶
Geometric representation of line segment objects.
- Parameters:
- start_pt
libpysal.cg.Point The point where the segment begins.
- end_pt
libpysal.cg.Point The point where the segment ends.
- start_pt
- Attributes:
p1libpysal.cg.PointHELPER METHOD. DO NOT CALL.
p2PointHELPER METHOD. DO NOT CALL.
bounding_boxlibpysal.cg.RectangleReturns the minimum bounding box of a
LineSegmentobject.lenfloatReturns the length of a
LineSegmentobject.linelibpysal.cg.LineReturns a
Lineobject of the line on which the segment lies.
Examples
>>> ls = LineSegment(Point((1, 2)), Point((5, 6)))
Methods
__init__(start_pt, end_pt)get_swap()Returns a
LineSegmentobject which has its endpoints swapped.intersect(other)Test whether segment intersects with other segment (
True) or not (False).is_ccw(pt)Returns whether a point is counterclockwise of the segment (
True) or not (False).is_cw(pt)Returns whether a point is clockwise of the segment (
True) or not (False).sw_ccw(pt)Sedgewick test for
ptbeing ccw of segment.Attributes
Returns the minimum bounding box of a
LineSegmentobject.Returns the length of a
LineSegmentobject.Returns a
Lineobject of the line on which the segment lies.**HELPER METHOD.
**HELPER METHOD.
- property bounding_box¶
Returns the minimum bounding box of a
LineSegmentobject.- Returns:
- self._bounding_box
libpysal.cg.Rectangle The bounding box of the line segment.
- self._bounding_box
Examples
>>> ls = LineSegment(Point((1, 2)), Point((5, 6))) >>> ls.bounding_box.left 1.0
>>> ls.bounding_box.lower 2.0
>>> ls.bounding_box.right 5.0
>>> ls.bounding_box.upper 6.0
- get_swap()[source]¶
Returns a
LineSegmentobject which has its endpoints swapped.- Returns:
- line_seg
libpysal.cg.LineSegment The
LineSegmentobject which has its endpoints swapped.
- line_seg
Examples
>>> ls = LineSegment(Point((1, 2)), Point((5, 6))) >>> swap = ls.get_swap() >>> swap.p1[0] 5.0
>>> swap.p1[1] 6.0
>>> swap.p2[0] 1.0
>>> swap.p2[1] 2.0
- intersect(other) bool[source]¶
Test whether segment intersects with other segment (
True) or not (False). Handles endpoints of segments being on other segment.- Parameters:
- other
libpysal.cg.LineSegment Another line segment to check against.
- other
Examples
>>> ls = LineSegment(Point((5, 0)), Point((10, 0))) >>> ls1 = LineSegment(Point((5, 0)), Point((10, 1))) >>> ls.intersect(ls1) True
>>> ls2 = LineSegment(Point((5, 1)), Point((10, 1))) >>> ls.intersect(ls2) False
>>> ls2 = LineSegment(Point((7, -1)), Point((7, 2))) >>> ls.intersect(ls2) True
- is_ccw(pt) bool[source]¶
Returns whether a point is counterclockwise of the segment (
True) or not (False). Exclusive.- Parameters:
- pt
libpysal.cg.Point A point lying ccw or cw of a segment.
- pt
Examples
>>> ls = LineSegment(Point((0, 0)), Point((5, 0))) >>> ls.is_ccw(Point((2, 2))) True
>>> ls.is_ccw(Point((2, -2))) False
- is_cw(pt) bool[source]¶
Returns whether a point is clockwise of the segment (
True) or not (False). Exclusive.- Parameters:
- pt
libpysal.cg.Point A point lying ccw or cw of a segment.
- pt
Examples
>>> ls = LineSegment(Point((0, 0)), Point((5, 0))) >>> ls.is_cw(Point((2, 2))) False
>>> ls.is_cw(Point((2, -2))) True
- property len: float¶
Returns the length of a
LineSegmentobject.Examples
>>> ls = LineSegment(Point((2, 2)), Point((5, 2))) >>> ls.len 3.0
- property line¶
Returns a
Lineobject of the line on which the segment lies.- Returns:
- self._line
libpysal.cg.Line The
Lineobject of the line on which the segment lies.
- self._line
Examples
>>> ls = LineSegment(Point((2, 2)), Point((3, 3))) >>> l = ls.line >>> l.m 1.0
>>> l.b 0.0
- property p1¶
HELPER METHOD. DO NOT CALL. Returns the
p1attribute of the line segment.- Returns:
- self._p1
libpysal.cg.Point The
_p1attribute.
- self._p1
Examples
>>> ls = LineSegment(Point((1, 2)), Point((5, 6))) >>> r = ls._get_p1() >>> r == Point((1, 2)) True
- property p2¶
HELPER METHOD. DO NOT CALL. Returns the
p2attribute of the line segment.- Returns:
- self._p2
libpysal.cg.Point The
_p2attribute.
- self._p2
Examples
>>> ls = LineSegment(Point((1, 2)), Point((5, 6))) >>> r = ls._get_p2() >>> r == Point((5, 6)) True
- sw_ccw(pt)[source]¶
Sedgewick test for
ptbeing ccw of segment.- Returns:
- is_ccwbool
1if turn fromself.p1toself.p2toptis ccw.-1if turn fromself.p1toself.p2toptis cw.-1if the points are collinear andself.p1is in the middle.1if the points are collinear andself.p2is in the middle.0if the points are collinear andptis in the middle.