libpysal.cg.LineSegment

class libpysal.cg.LineSegment(start_pt, end_pt)[source]

Geometric representation of line segment objects.

Parameters
start_ptlibpysal.cg.Point

The point where the segment begins.

end_ptlibpysal.cg.Point

The point where the segment ends.

Examples

>>> ls = LineSegment(Point((1, 2)), Point((5, 6)))
Attributes
p1libpysal.cg.Point

HELPER METHOD. DO NOT CALL.

p2Point

HELPER METHOD. DO NOT CALL.

bounding_boxlibpysal.cg.Rectangle

Returns the minimum bounding box of a LineSegment object.

lenpython:float

Returns the length of a LineSegment object.

linelibpysal.cg.Line

Returns a Line object of the line on which the segment lies.

__init__(self, start_pt, end_pt)[source]

Initialize self. See help(type(self)) for accurate signature.

Methods

__init__(self, start_pt, end_pt)

Initialize self.

get_swap(self)

Returns a LineSegment object which has its endpoints swapped.

intersect(self, other)

Test whether segment intersects with other segment (True) or not (False).

is_ccw(self, pt)

Returns whether a point is counterclockwise of the segment (True) or not (False).

is_cw(self, pt)

Returns whether a point is clockwise of the segment (True) or not (False).

sw_ccw(self, pt)

Sedgewick test for pt being ccw of segment.

Attributes

bounding_box

Returns the minimum bounding box of a LineSegment object.

len

Returns the length of a LineSegment object.

line

Returns a Line object of the line on which the segment lies.

p1

HELPER METHOD.DO NOT CALL. Returns the p1 attribute of the line segment..

p2

HELPER METHOD.DO NOT CALL. Returns the p2 attribute of the line segment..

property bounding_box

Returns the minimum bounding box of a LineSegment object.

Returns
self._bounding_boxlibpysal.cg.Rectangle

The bounding box of the line segment.

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.

Returns
line_seglibpysal.cg.LineSegment

The LineSegment object which has its endpoints swapped.

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) → bool[source]

Test whether segment intersects with other segment (True) or not (False). Handles endpoints of segments being on other segment.

Parameters
otherlibpysal.cg.LineSegment

Another line segment to check against.

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) → bool[source]

Returns whether a point is counterclockwise of the segment (True) or not (False). Exclusive.

Parameters
ptlibpysal.cg.Point

A point lying ccw or cw of a segment.

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) → bool[source]

Returns whether a point is clockwise of the segment (True) or not (False). Exclusive.

Parameters
ptlibpysal.cg.Point

A point lying ccw or cw of a segment.

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.

Examples

>>> ls = LineSegment(Point((2, 2)), Point((5, 2)))
>>> ls.len
3.0
property line

Returns a Line object of the line on which the segment lies.

Returns
self._linelibpysal.cg.Line

The Line object of the line on which the segment lies.

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.

Returns
self._p1libpysal.cg.Point

The _p1 attribute.

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.

Returns
self._p2libpysal.cg.Point

The _p2 attribute.

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
is_ccwbool

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.