libpysal.cg.LineSegment¶
-
class
libpysal.cg.
LineSegment
(start_pt, end_pt)[source]¶ Geometric representation of line segment objects.
- Parameters
- Attributes
-
__init__
(self, start_pt, end_pt)[source]¶ Creates a LineSegment object.
__init__(Point, Point) -> LineSegment
Test tag: <tc>#is#LineSegment.__init__</tc> Test tag: <tc>#tests#LineSegment.__init__</tc>
Examples
>>> ls = LineSegment(Point((1, 2)), Point((5, 6)))
- Attributes
- None
Methods
__init__
(self, start_pt, end_pt)Creates a LineSegment object.
get_swap
(self)Returns a LineSegment object which has its endpoints swapped.
intersect
(self, other)Test whether segment intersects with other segment
is_ccw
(self, pt)Returns whether a point is counterclockwise of the segment.
is_cw
(self, pt)Returns whether a point is clockwise of the segment.
sw_ccw
(self, pt)Sedgewick test for pt being ccw of segment
Attributes
Returns the minimum bounding box of a LineSegment object.
Returns the length of a LineSegment object.
Returns a Line object of the line which the segment lies on.
HELPER METHOD.
HELPER METHOD.
-
property
bounding_box
¶ Returns the minimum bounding box of a LineSegment object.
Test tag: <tc>#is#LineSegment.bounding_box</tc> Test tag: <tc>#tests#LineSegment.bounding_box</tc>
bounding_box -> Rectangle
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
(self)[source]¶ Returns a LineSegment object which has its endpoints swapped.
get_swap() -> LineSegment
Test tag: <tc>#is#LineSegment.get_swap</tc> Test tag: <tc>#tests#LineSegment.get_swap</tc>
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
(self, other)[source]¶ Test whether segment intersects with other segment
Handles endpoints of segments being on other segment
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
(self, pt)[source]¶ Returns whether a point is counterclockwise of the segment. Exclusive.
is_ccw(Point) -> bool
Test tag: <tc>#is#LineSegment.is_ccw</tc> Test tag: <tc>#tests#LineSegment.is_ccw</tc>
- Parameters
- pt
point
lying
ccw
orcw
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
(self, pt)[source]¶ Returns whether a point is clockwise of the segment. Exclusive.
is_cw(Point) -> bool
Test tag: <tc>#is#LineSegment.is_cw</tc> Test tag: <tc>#tests#LineSegment.is_cw</tc>
- Parameters
- pt
point
lying
ccw
orcw
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
¶ Returns the length of a LineSegment object.
Test tag: <tc>#is#LineSegment.len</tc> Test tag: <tc>#tests#LineSegment.len</tc>
len() -> number
Examples
>>> ls = LineSegment(Point((2, 2)), Point((5, 2))) >>> ls.len 3.0
-
property
line
¶ Returns a Line object of the line which the segment lies on.
Test tag: <tc>#is#LineSegment.line</tc> Test tag: <tc>#tests#LineSegment.line</tc>
line() -> 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 p1 attribute of the line segment.
_get_p1() -> Point
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 p2 attribute of the line segment.
_get_p2() -> Point
Examples
>>> ls = LineSegment(Point((1, 2)), Point((5, 6))) >>> r = ls._get_p2() >>> r == Point((5, 6)) True
-
sw_ccw
(self, pt)[source]¶ Sedgewick test for pt being ccw of segment
- Returns
- 1
if
turn
from
self.p1
to
self.p2
to
pt
is
ccw
- -1
if
turn
from
self.p1
to
self.p2
to
pt
is
cw
- -1
if
the
points
are
collinear
and
self.p1
is
in
the
middle
- 1
if
the
points
are
collinear
and
self.p2
is
in
the
middle
- 0
if
the
points
are
collinear
and
pt
is
in
the
middle
- 1