Skip to main content

Searching line segments & polygon edges intersections.

Project description


In what follows python is an alias for python3.5 or pypy3.5 or any later version (python3.6, pypy3.6 and so on).


Install the latest pip & setuptools packages versions

python -m pip install --upgrade pip setuptools


Download and install the latest stable version from PyPI repository:

python -m pip install --upgrade bentley_ottmann


Download the latest version from GitHub repository

git clone
cd bentley_ottmann

Install dependencies

python -m pip install --force-reinstall -r requirements.txt


python install


With segments

>>> from ground.base import get_context
>>> context = get_context()
>>> Point, Segment = context.point_cls, context.segment_cls
>>> unit_segments = [Segment(Point(0, 0), Point(1, 0)), 
...                  Segment(Point(0, 0), Point(0, 1))]

we can check if they intersect

>>> from bentley_ottmann.planar import segments_intersect
>>> segments_intersect(unit_segments)

we can also find in which points segments intersect

>>> from bentley_ottmann.planar import segments_intersections
>>> segments_intersections(unit_segments) == {(0, 1): (Point(0, 0),)}

here we can see that 0th and 1st segments intersect at point (0, 0).

With contours

>>> Contour = context.contour_cls
>>> triangle = Contour([Point(0, 0), Point(1, 0), Point(0, 1)])
>>> degenerate_triangle = Contour([Point(0, 0), Point(2, 0), Point(1, 0)])

we can check if they are self-intersecting or not

>>> from bentley_ottmann.planar import edges_intersect
>>> edges_intersect(triangle)
>>> edges_intersect(degenerate_triangle)


Bumping version


Install bump2version.


Choose which version number category to bump following semver specification.

Test bumping version

bump2version --dry-run --verbose $CATEGORY

where $CATEGORY is the target version number category name, possible values are patch/minor/major.

Bump version

bump2version --verbose $CATEGORY

This will set version to major.minor.patch-alpha.


Test bumping version

bump2version --dry-run --verbose release

Bump version

bump2version --verbose release

This will set version to major.minor.patch.

Running tests

Install dependencies

python -m pip install --force-reinstall -r requirements-tests.txt



Inside Docker container:

  • with CPython
    docker-compose --file docker-compose.cpython.yml up
  • with PyPy
    docker-compose --file docker-compose.pypy.yml up

Bash script (e.g. can be used in Git hooks):

  • with CPython



    ./ cpython
  • with PyPy

    ./ pypy

PowerShell script (e.g. can be used in Git hooks):

  • with CPython
    .\run-tests.ps1 cpython
  • with PyPy
    .\run-tests.ps1 pypy

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for bentley-ottmann, version 2.2.0
Filename, size File type Python version Upload date Hashes
Filename, size bentley_ottmann-2.2.0-py3-none-any.whl (12.3 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size bentley_ottmann-2.2.0.tar.gz (11.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page