Spatial objects and computations in 3D.
Project description
Introduction
This package provides spatial objects in 3D (Point, Vector, Line, and Plane) based on NumPy arrays, as well as computations using these objects.
Point and Vector are subclasses of the NumPy ndarray, allowing them to be easily integrated with the SciPy ecosystem. The Line and Plane objects have Point and Vector objects as attributes.
The computations can be grouped into the following main categories:
- Measurement
e.g.: Measure the angle between two vectors.
- Comparison
e.g.: Check if two vectors are perpendicular.
- Projection
e.g.: Project a point onto a line.
- Intersection
e.g.: Find the intersection of a line and a plane.
The package has been built using contracts and is tested with hypothesis (see this PyCon talk for a good introduction to both libraries). The contracts prevent spatial computations that are undefined in Euclidean space, such as finding the intersection of two parallel lines.
Installation
The package can be installed via pip.
$ pip install scikit-spatial
Example Usage
Measure the angle between two vectors.
>>> import numpy as np >>> from skspatial.objects import Vector
>>> vector = Vector([1, 0]) >>> angle = vector.angle_between([1, 1])
>>> np.degrees(angle).round() 45.0
Project a point onto a line.
>>> from skspatial.objects import Line
>>> line = Line(point=[0, 0, 0], direction=[1, 1, 0])
>>> line.project_point([5, 6, 7]) Point([5.5, 5.5, 0. ])
An error is returned if the computation is undefined.
>>> line_a = Line([0, 0], [1, 0]) >>> line_b = Line([1, 0], [1, 0])
>>> line_a.intersect_line(line_b) Traceback (most recent call last): ... dpcontracts.PreconditionError: The lines must not be parallel.
Acknowledgment
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
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 Distribution
Hashes for scikit_spatial-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5f46ad7a031f3954e1dacba0c9ac7e27a8946eca0e7e3661cf2e2a8d82605c6 |
|
MD5 | 6dc510399a7a335540fe358c220e315d |
|
BLAKE2b-256 | 34f2ef265fc8e3a16f4230a629d530fbd750faff510a06469d5917213da55bce |