mapbox-earcut 1.0.3


pip install mapbox-earcut

  Latest version

Released: Dec 25, 2024

Project Links

Meta
Author: Samuel Kogler
Requires Python: >=3.9

Classifiers

Development Status
  • 5 - Production/Stable

Intended Audience
  • Developers

License
  • OSI Approved :: ISC License (ISCL)

Programming Language
  • C++
  • Python :: 3
  • Python :: 3.9
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13

mapbox_earcut

PyPi version

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]]

Wheel compatibility matrix

Platform CPython 3.9 CPython 3.10 CPython 3.11 CPython 3.12 CPython 3.13 PyPy 3.9 (pp73) PyPy 3.10 (pp73)
macosx_10_13_x86_64
macosx_10_15_x86_64
macosx_10_9_x86_64
macosx_11_0_arm64
manylinux2014_x86_64
manylinux_2_17_x86_64
musllinux_1_2_x86_64
win32
win_amd64

Files in release

mapbox_earcut-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl (68.1KiB)
mapbox_earcut-1.0.3-cp310-cp310-macosx_11_0_arm64.whl (62.5KiB)
mapbox_earcut-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (93.2KiB)
mapbox_earcut-1.0.3-cp310-cp310-musllinux_1_2_x86_64.whl (1.0MiB)
mapbox_earcut-1.0.3-cp310-cp310-win32.whl (62.5KiB)
mapbox_earcut-1.0.3-cp310-cp310-win_amd64.whl (69.6KiB)
mapbox_earcut-1.0.3-cp311-cp311-macosx_10_9_x86_64.whl (69.4KiB)
mapbox_earcut-1.0.3-cp311-cp311-macosx_11_0_arm64.whl (63.8KiB)
mapbox_earcut-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (94.7KiB)
mapbox_earcut-1.0.3-cp311-cp311-musllinux_1_2_x86_64.whl (1.0MiB)
mapbox_earcut-1.0.3-cp311-cp311-win32.whl (63.7KiB)
mapbox_earcut-1.0.3-cp311-cp311-win_amd64.whl (70.7KiB)
mapbox_earcut-1.0.3-cp312-cp312-macosx_10_13_x86_64.whl (68.7KiB)
mapbox_earcut-1.0.3-cp312-cp312-macosx_11_0_arm64.whl (63.2KiB)
mapbox_earcut-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (93.9KiB)
mapbox_earcut-1.0.3-cp312-cp312-musllinux_1_2_x86_64.whl (1.0MiB)
mapbox_earcut-1.0.3-cp312-cp312-win32.whl (63.8KiB)
mapbox_earcut-1.0.3-cp312-cp312-win_amd64.whl (70.9KiB)
mapbox_earcut-1.0.3-cp313-cp313-macosx_10_13_x86_64.whl (68.7KiB)
mapbox_earcut-1.0.3-cp313-cp313-macosx_11_0_arm64.whl (63.2KiB)
mapbox_earcut-1.0.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (93.9KiB)
mapbox_earcut-1.0.3-cp313-cp313-musllinux_1_2_x86_64.whl (1.0MiB)
mapbox_earcut-1.0.3-cp313-cp313-win32.whl (63.9KiB)
mapbox_earcut-1.0.3-cp313-cp313-win_amd64.whl (70.9KiB)
mapbox_earcut-1.0.3-cp39-cp39-macosx_10_9_x86_64.whl (68.1KiB)
mapbox_earcut-1.0.3-cp39-cp39-macosx_11_0_arm64.whl (62.6KiB)
mapbox_earcut-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (93.4KiB)
mapbox_earcut-1.0.3-cp39-cp39-musllinux_1_2_x86_64.whl (1.0MiB)
mapbox_earcut-1.0.3-cp39-cp39-win32.whl (62.7KiB)
mapbox_earcut-1.0.3-cp39-cp39-win_amd64.whl (69.7KiB)
mapbox_earcut-1.0.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (68.5KiB)
mapbox_earcut-1.0.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl (62.7KiB)
mapbox_earcut-1.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (93.7KiB)
mapbox_earcut-1.0.3-pp310-pypy310_pp73-win_amd64.whl (69.6KiB)
mapbox_earcut-1.0.3-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (68.5KiB)
mapbox_earcut-1.0.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl (62.7KiB)
mapbox_earcut-1.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (93.7KiB)
mapbox_earcut-1.0.3-pp39-pypy39_pp73-win_amd64.whl (69.6KiB)
mapbox_earcut-1.0.3.tar.gz (23.5KiB)
Extras: None
Dependencies:
numpy