Python port of polygon clipping algorithm by F. Martinez et al.
Project description
martinez
In what follows python
is an alias for python3.5
or pypy3.5
or any later version (python3.6
, pypy3.6
and so on).
Installation
Install the latest pip
& setuptools
packages versions
python -m pip install --upgrade pip setuptools
User
Download and install the latest stable version from PyPI
repository
python -m pip install --upgrade martinez
Developer
Download the latest version from GitHub
repository
git clone https://github.com/lycantropos/martinez.git
cd martinez
Install
python setup.py install
Usage
>>> from martinez.contour import Contour
>>> from martinez.point import Point
>>> from martinez.polygon import Polygon
>>> left_polygon = Polygon([Contour([Point(0.0, 0.0), Point(2.0, 0.0), Point(2.0, 2.0), Point(0.0, 2.0)], [], True)])
>>> right_polygon = Polygon([Contour([Point(1.0, 1.0), Point(3.0, 1.0), Point(3.0, 3.0), Point(1.0, 3.0)], [], True)])
>>> from martinez.boolean import OperationType, compute
>>> compute(left_polygon, right_polygon, OperationType.INTERSECTION)
Polygon([Contour([Point(1.0, 1.0), Point(2.0, 1.0), Point(2.0, 2.0), Point(1.0, 2.0)], [], True)])
>>> compute(left_polygon, right_polygon, OperationType.UNION)
Polygon([Contour([Point(0.0, 0.0), Point(2.0, 0.0), Point(2.0, 1.0), Point(3.0, 1.0), Point(3.0, 3.0), Point(1.0, 3.0), Point(1.0, 2.0), Point(0.0, 2.0)], [], True)])
>>> compute(left_polygon, right_polygon, OperationType.DIFFERENCE)
Polygon([Contour([Point(0.0, 0.0), Point(2.0, 0.0), Point(2.0, 1.0), Point(1.0, 1.0), Point(1.0, 2.0), Point(0.0, 2.0)], [], True)])
>>> compute(left_polygon, right_polygon, OperationType.XOR)
Polygon([Contour([Point(0.0, 0.0), Point(2.0, 0.0), Point(2.0, 1.0), Point(1.0, 1.0), Point(1.0, 2.0), Point(0.0, 2.0)], [], True), Contour([Point(1.0, 2.0), Point(2.0, 2.0), Point(2.0, 1.0), Point(3.0, 1.0), Point(3.0, 3.0), Point(1.0, 3.0)], [], True)])
original C++ implementation can be invoked by importing from _martinez
module instead.
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
python -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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for martinez-0.6.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f22b4919dfb81a5623e7c649444176715cc072784896fb927e254ebff53cf1eb |
|
MD5 | f495b5d9f628261b3ad604b0595f4557 |
|
BLAKE2b-256 | d917733e1b17d80450ac9c37d1553c4de3eae70cd873107c650ed79c3cf89891 |
Hashes for martinez-0.6.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82402247aed1252a544c35c38d58096cb27dd9e7d2d0e98cd4a8919c8ff6acc4 |
|
MD5 | 47ee70814d472d1deb72a3f9f44553d0 |
|
BLAKE2b-256 | 2b2f0d1fc0b4f05b3d7a4168d83a48187e73892af217dd362a7b4a582952566c |
Hashes for martinez-0.6.0-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18b75f752d8d3975316756dc0330bf0d4d4ccbc2c65f51c1952ae96791c492a0 |
|
MD5 | ce5cde860876cbd1ed0ede56855de3bf |
|
BLAKE2b-256 | 4362971e90beba3b0a9ded4e857a13dedaba68d1d994270a08e20f4b784dd11e |
Hashes for martinez-0.6.0-cp39-cp39-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c1093b80b79c77a20b49a180b795cece5a530e0fbe65c5aa6d72c1a27622ff13 |
|
MD5 | 67bad77393b62b299c606a37bbda6a1a |
|
BLAKE2b-256 | 1c642740b323bd11791b47c6bf91464034765762b7fde0a56e9f3dbd833f5969 |
Hashes for martinez-0.6.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b85048be15d3718faab9e4f388361630406a115b19e1bb66f11eb5868f23cf7 |
|
MD5 | 04c03c33df83f5ce49381c2b6d003626 |
|
BLAKE2b-256 | 4953f0c7e081f697e9ab134742531374dd11602a97a3ea84b587234a0a17eb2c |
Hashes for martinez-0.6.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c04c2d6815bc947d0f0ca4336472758fe5227788371f41ae633c2e04492ba751 |
|
MD5 | a0ee508bfdc591ec9ff1c54ec90f7d39 |
|
BLAKE2b-256 | cf87c3933eb6d0a62c945bbaaca88e784fb369d47eb7b88013c8dbe74e96053c |
Hashes for martinez-0.6.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6c6cad9622ef75524e44e9144980f31aa125035f80888cf79ba037938ad5379 |
|
MD5 | bc7cac9f634d09578c50863a3fb17fda |
|
BLAKE2b-256 | 61e84c81c7be47c9305d1a925e25c5d7b3e7e028c23e412753f1d75ae5488ef8 |
Hashes for martinez-0.6.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7cf85de3419091788e816e5789ca1accab55354e0140e8f4e1b4a675f9505ce9 |
|
MD5 | 49b56ad1333e4467a35a8ae4589e0fe8 |
|
BLAKE2b-256 | 0e7dac6e718fbb1a2ab776d2f2d4084e4404e05aa0ed3686075f4452b4c4783e |
Hashes for martinez-0.6.0-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f2d24ba066fc2c627387bccbff33556873c43e4fd731b7987a45f06027a9c46 |
|
MD5 | d7b97a4e0d6f92c5a75de35a3d90d049 |
|
BLAKE2b-256 | 9149fcfc4091af75e5e7cfd25191704b7ff2bd76fa5a9b9defb77600a32144cd |
Hashes for martinez-0.6.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f87ba6bf6236ba3c4986a2fb846fa9c6c6cad62a70f48adf776e43c5e3b84528 |
|
MD5 | d1d71d178e6d0740f5a7a9b4363b3f59 |
|
BLAKE2b-256 | e4a23795de02f42fa073acc12a69ab84b8569852d3fbcae7ae542cc2a0f0ee54 |
Hashes for martinez-0.6.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ff946a0af4b64a2917c57f5f54db19f24246bf0e4b5164ea99bac6fbfbc776e |
|
MD5 | 1afa688299ecc3c4bc0cb1c9396e766d |
|
BLAKE2b-256 | f679cfed639d60ad97e0e6c21a553a4472ef791ce2858efc61cf28ff81dfcc0f |
Hashes for martinez-0.6.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f4df9ee7d668c490d30f05a538328cba4be92d686d222b0d0a8c235a0326b64 |
|
MD5 | 45ff48767c82de155ce4f233fb2411ee |
|
BLAKE2b-256 | 867019a1545f7f2d1473c0a795db5f6acf6096e6331bf3612943ab39174e7646 |
Hashes for martinez-0.6.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82a49b4f5730e1ced998aacb1c95a5020c5e76ea63b2bd47bce40ae38c6af6ed |
|
MD5 | e144ac7c75f3cfb8a99c5f79727230ab |
|
BLAKE2b-256 | 3bd7b58189d48242adf5443697db50d9072c9301dcdc3415a2bed4024145ef3a |
Hashes for martinez-0.6.0-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34c5417889da6503c95a5b8810264d34ba78e56a8c0f3618351ace251e0f8076 |
|
MD5 | 885cc2d02d0282e235aa0f845271f015 |
|
BLAKE2b-256 | b5fecdd92a3c3dba22a1083187baed38dc3b0270f05ce5513a63222146d342c7 |
Hashes for martinez-0.6.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8dc4da176e2a42dbf72ed4701e20296eb9f2fbdb502c252aabf2d3ebb0382a0b |
|
MD5 | 07b82adcf4fc1638d3dbae43ce54bd99 |
|
BLAKE2b-256 | 320d68005ccf2e3e0f92bc3cb3e6dc2961dc7223005a6aa9af4b623e563d230c |
Hashes for martinez-0.6.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f58322791de91173da94a286d051187faf165dd1e5a81e75083f1e5f2f67fad |
|
MD5 | 59a041400cbe2034c09267f37548fd61 |
|
BLAKE2b-256 | 7be951f9d30b5e61e19f86f28d4d3f0812181e99f73aec62e18aca82792c6883 |
Hashes for martinez-0.6.0-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ec3556c147223bc6ab1d75586f59453ffbd9ce5421c059d4ce4e2de02453dc4 |
|
MD5 | aef6b6b8376e3256dfbede2d8cf8dfdc |
|
BLAKE2b-256 | e6faa7a5314248c307c9375e38901a02b4c0387e435720aa94db651de71a2e97 |
Hashes for martinez-0.6.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44c5c31e1dcacfff57bd6d7fea4c340faaf999720a035f13e713af5d14d0ed7c |
|
MD5 | 5c46711077b726dbd6d69e2f837b31c0 |
|
BLAKE2b-256 | 2a576eed0dd49ecc11d594a3248695161bde7a95cb136d20f330ca643306c849 |
Hashes for martinez-0.6.0-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9d5ff1b14f791d2f9855e58e9e0660dcb20fe04ff2401ccaa0360f696f249a7 |
|
MD5 | 514a02d9518e65777d734c0feefff88d |
|
BLAKE2b-256 | 63685c5516b634428d346155f937707417d47d835a98865c051453a42d2e374b |
Hashes for martinez-0.6.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 635ab3f32e4b741fb5ed31fab6536457f4d02bcf93402f0f5c0025f4ce3d0142 |
|
MD5 | 9097624310f61375b76b5410803c6e2c |
|
BLAKE2b-256 | 35ada1620d84aac3b3b0d7fd9bfc9bc9fd1213ff9bb4aa89d1ae4507454b34c1 |
Hashes for martinez-0.6.0-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40976aaf6c8b9fa93287983ce91db01e1a6ab06805553ad3644c7e6dd567eee2 |
|
MD5 | 7cfd72a6eaf7fba66786d4a8795a361f |
|
BLAKE2b-256 | cb7d50848d4ab2e359341ddec49228f7a59392e251b8e95823c84ca6da11fb77 |
Hashes for martinez-0.6.0-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 98f5b790d93ebd0f60945a6c53e297c4035f9c4f080763258ba335ab009fb9a8 |
|
MD5 | 990bab878905f56c833f0d21f3268973 |
|
BLAKE2b-256 | 71be4712b67cfd58fc3cd500f0d4a75af8d9cd467314522970b122df10c12ccb |
Hashes for martinez-0.6.0-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | beda3825954978ac95e8baad6fe2c8fe6b4c6a76beb4ad443fd8b37ee6f0ec31 |
|
MD5 | 83f9e6c625d7ea85d6513b849bc110de |
|
BLAKE2b-256 | 5b3f86551edda461c2b83aa23483aebd0efcf1189c9d6f6951bda12616844b7f |
Hashes for martinez-0.6.0-cp35-cp35m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8d279b0efd205fbbfd1621e935934f6d92752a51ba768abf768d14b4860520f |
|
MD5 | 2467ab5d059638219c435962e5ac8d51 |
|
BLAKE2b-256 | a07e1bf7ce0e30f2c070cd42362efa51257151c4c85e914735eae5bf2397695c |
Hashes for martinez-0.6.0-cp35-cp35m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 65bb64ad1bc8a592ac7c1cef4ebbe9c3607a0957cfa8ae67102fb337b57f4a09 |
|
MD5 | 86b4992fef54614728ad54d1c8f0027a |
|
BLAKE2b-256 | 97f29ef6a34558859f3dd1259c632817d46393777183720f92509a6ec4e5735d |