Skip to main content

Python bindings for the mapbox earcut C++ polygon triangulation library.

Project description

mapbox_earcut

Python bindings for the C++ implementation of the Mapbox Earcut library, which provides very fast and quite robust triangulation of 2D polygons.

Original code: earcut.hpp

Original description:

The library implements a modified ear slicing algorithm, optimized by z-order curve hashing and extended to handle holes, twisted polygons, degeneracies and self-intersections in a way that doesn't guarantee correctness of triangulation, but attempts to always produce acceptable results for practical data like geographical shapes.

Provided functions (depending on dtype of vertex data):

triangulate_float32
triangulate_float64
triangulate_int32
triangulate_int64

Example:

import mapbox_earcut as earcut
import numpy as np

# A Nx2 array of vertices. Must be 2D.
verts = np.array([[0, 0], [1, 0], [1, 1]]).reshape(-1, 2)

# An array of end-indices for each ring.
# The first ring is the outer contour of the polygon.
# Subsequent ones are holes.
# This implies that the last index must always be equal to the size of verts!
rings = np.array([3])

result = earcut.triangulate_float32(verts, rings)

# Result is an np.ndarray with dtype np.uint32 and shape (3,)
# containing indices into the verts array.

print(verts[result])
# [[1 0]
#  [1 1]
#  [0 0]]

Project details


Download files

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

Source Distribution

mapbox_earcut-0.12.11.tar.gz (11.8 kB view hashes)

Uploaded Source

Built Distributions

mapbox_earcut-0.12.11-pp37-pypy37_pp73-win_amd64.whl (67.7 kB view hashes)

Uploaded PyPy Windows x86-64

mapbox_earcut-0.12.11-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (97.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ x86-64

mapbox_earcut-0.12.11-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl (105.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ i686

mapbox_earcut-0.12.11-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (68.5 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

mapbox_earcut-0.12.11-cp310-cp310-win_amd64.whl (68.2 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

mapbox_earcut-0.12.11-cp310-cp310-win32.whl (60.1 kB view hashes)

Uploaded CPython 3.10 Windows x86

mapbox_earcut-0.12.11-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (98.4 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64

mapbox_earcut-0.12.11-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl (106.2 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.12+ i686

mapbox_earcut-0.12.11-cp310-cp310-macosx_10_9_x86_64.whl (70.3 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

mapbox_earcut-0.12.11-cp39-cp39-win_amd64.whl (67.8 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

mapbox_earcut-0.12.11-cp39-cp39-win32.whl (60.2 kB view hashes)

Uploaded CPython 3.9 Windows x86

mapbox_earcut-0.12.11-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (98.5 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

mapbox_earcut-0.12.11-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (106.2 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686

mapbox_earcut-0.12.11-cp39-cp39-macosx_10_9_x86_64.whl (70.5 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

mapbox_earcut-0.12.11-cp38-cp38-win_amd64.whl (68.1 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

mapbox_earcut-0.12.11-cp38-cp38-win32.whl (60.2 kB view hashes)

Uploaded CPython 3.8 Windows x86

mapbox_earcut-0.12.11-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (98.4 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

mapbox_earcut-0.12.11-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (106.0 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

mapbox_earcut-0.12.11-cp38-cp38-macosx_10_9_x86_64.whl (70.2 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

mapbox_earcut-0.12.11-cp37-cp37m-win_amd64.whl (68.8 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

mapbox_earcut-0.12.11-cp37-cp37m-win32.whl (60.4 kB view hashes)

Uploaded CPython 3.7m Windows x86

mapbox_earcut-0.12.11-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (99.2 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

mapbox_earcut-0.12.11-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl (105.8 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

mapbox_earcut-0.12.11-cp37-cp37m-macosx_10_9_x86_64.whl (69.3 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

mapbox_earcut-0.12.11-cp36-cp36m-win_amd64.whl (68.7 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

mapbox_earcut-0.12.11-cp36-cp36m-win32.whl (60.4 kB view hashes)

Uploaded CPython 3.6m Windows x86

mapbox_earcut-0.12.11-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (99.2 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

mapbox_earcut-0.12.11-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl (105.7 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.12+ i686

mapbox_earcut-0.12.11-cp36-cp36m-macosx_10_9_x86_64.whl (69.3 kB view hashes)

Uploaded CPython 3.6m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page