Robust computational geometry predicates.


License
MIT
Install
pip install robust==0.0.1

Documentation

robust

In what follows

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

Installation

Install the latest pip & setuptools packages versions:

  • with CPython
    python -m pip install --upgrade pip setuptools
  • with PyPy
    pypy -m pip install --upgrade pip setuptools

User

Download and install the latest stable version from PyPI repository:

  • with CPython
    python -m pip install --upgrade robust
  • with PyPy
    pypy -m pip install --upgrade robust

Developer

Download the latest version from GitHub repository

git clone https://github.com/lycantropos/robust.git
cd robust

Install dependencies:

  • with CPython
    python -m pip install --force-reinstall -r requirements.txt
  • with PyPy
    pypy -m pip install --force-reinstall -r requirements.txt

Install:

  • with CPython
    python setup.py install
  • with PyPy
    pypy setup.py install

Usage

>>> from robust import cocircular
>>> cocircular.determinant((0, 0), (2, 0), (0, 2), (1, 1))
8
>>> cocircular.determinant((0, 0), (2, 0), (0, 2), (3, 3))
-24
>>> cocircular.determinant((0, 0), (2, 0), (2, 2), (0, 2))
0
>>> from robust import parallelogram
>>> parallelogram.signed_area((0, 0), (2, 0), (0, 0), (0, 2))
4
>>> parallelogram.signed_area((0, 0), (0, 2), (0, 0), (2, 0))
-4
>>> parallelogram.signed_area((0, 0), (0, 2), (0, 0), (0, 2))
0
>>> from robust import projection
>>> projection.signed_length((0, 0), (2, 0), (0, 0), (2, 0))
4
>>> projection.signed_length((0, 0), (2, 0), (0, 0), (-2, 0))
-4
>>> projection.signed_length((0, 0), (2, 0), (0, 0), (0, 2))
0

Development

Bumping version

Preparation

Install bump2version.

Pre-release

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.

Release

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:

  • with CPython
    python -m pip install --force-reinstall -r requirements-tests.txt
  • with PyPy
    pypy -m pip install --force-reinstall -r requirements-tests.txt

Plain

pytest

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

    ./run-tests.sh

    or

    ./run-tests.sh cpython
  • with PyPy

    ./run-tests.sh pypy

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

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