Skip to main content

A python wrapper around a subset of the ncollide rust library

Project description

========= ncollpyde

.. image:: https://img.shields.io/pypi/pyversions/ncollpyde.svg :target: https://pypi.python.org/pypi/ncollpyde

.. image:: https://img.shields.io/pypi/v/ncollpyde.svg :target: https://pypi.python.org/pypi/ncollpyde

.. image:: https://img.shields.io/travis/clbarnes/ncollpyde.svg :target: https://travis-ci.org/clbarnes/ncollpyde

.. image:: https://readthedocs.org/projects/ncollpyde/badge/?version=latest :target: https://ncollpyde.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/ambv/black

A python wrapper around a subset of the ncollide rust library

Features

  • Checking whether points are inside a volume defined by a triangular mesh

Usage

.. code-block:: python

# get an array of vertices and triangles which refer to those points
import meshio
mesh = meshio.read("tests/teapot.stl")
vertices = mesh.points
triangles = mesh.cells["triangle"]

# use this library
from ncollpyde import Volume

volume = Volume(vertices, triangles)

Containment checks:

.. code-block:: python

# individual points (as 3-length array-likes) can be checked with `in`
assert [-2.3051376, -4.1556454,  1.9047838] in volume
assert [-0.35222054, -0.513299, 7.6191354] not in volume

# many points (as an Nx3 array-like) can be checked with the `contains` method
bools = volume.contains(np.array([
    [-2.3051376, -4.1556454,  1.9047838],
    [-0.35222054, -0.513299, 7.6191354],
]))
assert np.array_equal(bools, [True, False])

# checks can be parallelised
volume.contains(np.random.random((1000, 3)), threads=4)

Known issues

  • Benchmarks suggest that multithreaded performance is about the same as serial
  • Very rare false positives for containment
    • Due to a bug in the underlying library <https://github.com/rustsim/ncollide/issues/335>_
    • Only happens when the point is outside the mesh and fires a ray which touches a single edge or vertex of the mesh.

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

ncollpyde-0.7.5.tar.gz (255.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ncollpyde-0.7.5-cp38-cp38-manylinux1_x86_64.whl (223.5 kB view details)

Uploaded CPython 3.8

ncollpyde-0.7.5-cp37-cp37m-manylinux1_x86_64.whl (223.5 kB view details)

Uploaded CPython 3.7m

File details

Details for the file ncollpyde-0.7.5.tar.gz.

File metadata

  • Download URL: ncollpyde-0.7.5.tar.gz
  • Upload date:
  • Size: 255.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.8.1

File hashes

Hashes for ncollpyde-0.7.5.tar.gz
Algorithm Hash digest
SHA256 1b00d55933576b32544cc0001e4261b08281d1c262b8bf7778211c70c625e40b
MD5 edaee597b130051d99ed27aad727e647
BLAKE2b-256 ad2fbc5c9dcb58e9be35806b63fd3976f95ef59ce9cf172b086e48a872fea306

See more details on using hashes here.

File details

Details for the file ncollpyde-0.7.5-cp38-cp38-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for ncollpyde-0.7.5-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fbfd902d211045b81f9ee1a07d195b1cea13f443a948a216c068c438896a6ee1
MD5 beabc9cc543f37b25cd6064a190c22de
BLAKE2b-256 3feb2e940994eacaca905f6f222bb134bafe247855900555fdd77a8d2c577ce2

See more details on using hashes here.

File details

Details for the file ncollpyde-0.7.5-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for ncollpyde-0.7.5-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 409f950304e6c769ce883cc68390701e879ad972c367d8fe03a38c701ae04386
MD5 ae42b6eed2dfac917d1511d31d7753c6
BLAKE2b-256 0eb3bc53552b96a2acbe4534b9429b6b914a90c6d8e13e960ccaafbe756f2d91

See more details on using hashes here.

Supported by

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