- Add Circle.intersect_circle method.
- Add Vector.angle_signed_3d method.
- Add LineSegment class.
- Add plot of Cylinder-Line Intersection to the gallery.
- Update the dimension value of a slice, instead of using the value of the original array.
- Fix the output radius of Cylinder.to_mesh.
- Add Plane.project_line method to project a line onto a plane.
- Add Circle.best_fit method to fit a circle to 2D points.
- Add area_signed function to compute the signed area of a polygon using the shoelace algorithm.
- Allow for versions of importlib-metadata above 1.
- Add infinite keyword argument to Cylinder.intersect_line with a default value of True. Now the line can be intersected with a finite cylinder by passing infinite=False.
- Fix the return type hint of Plane.intersect_line (from Plane to Point).
- Add code to skspatial.__init__.py to keep the __version__ attribute in sync with the version in pyproject.toml.
- Add lateral_surface_area and surface_area methods to Cylinder.
- Remove unnecessary np.copy from Circle.intersect_line.
- Complete the docstring for Line.distance_point.
- Wrap filterwarnings("error") in a catch_warnings context manager, in __BaseArray.__new__(). Now the warning level is reset at the end of the context manager.
- Require NumPy >= 1.20 to make use of the static types introduced in 1.20. Now numpy-stubs doesn't need to be installed for static type checking.
- Move tests outside of package, and move package under
src
directory. This ensures that tox is running the tests with the installed package. - Switch from
setup.py
topyproject.toml
. - Add more ValueErrors for clarity, such as "The lines must have the same dimension"
ValueError in
Line.intersect_line
.
- Add
Cylinder
class. - Add
Vector.different_direction
method. - Add
Sphere.best_fit
method.
- Delete
Vector.dot
method. Thedot
method is already inherited from NumPy.
- Add keyword arguments to
Plane.best_fit
andLine.best_fit
. These are passed tonp.linalg.svd
.
- Edit type annotations to support Python 3.6.
- CI now tests Python versions 3.6-3.9.
- Return regular
ndarray
from inherited NumPy functions, e.g.vector.sum()
- This prevents getting spatial objects with disallowed dimensions, such as a 0-D vector. - This fixes broken examples in the README. - Test README examples with doctest.
- Replace tox with Docker. - Docker multi-stage builds are a convenient feature for isolating test environments.
- Organize requirements into multiple files. - This makes it easy to install only what's needed for each test environment.
- Fix to replace Python 3.6 with 3.8 in the setup.py file.
- Drop support for Python 3.6 (this allows for postponed evaluation of type annotations, introduced in Python 3.7).
- Add Triangle class.
- Add Points.normalize_distance method to fit points inside a unit sphere.
- Change Points.mean_center to only return the centroid of the points if specified. This allows for chaining with other transformations on points, like normalize_distance.
- Add to_array method to convert an array based object to a regular NumPy array.
- Use installation of numpy-stubs from its GitHub repository instead of a custom numpy stubs folder.
- Introduce 'array_like' type annotation as the union of np.ndarray and Sequence.
- Add py.typed file so that annotations can be used when scikit-spatial is installed.
Replace some NumPy functions with ones from Python math module. The math functions are faster than NumPy when the inputs are scalars. The tolerances for isclose are now rel_tol and abs_tol instead of rtol and atol. The math.isclose function is preferable to np.isclose for three main reasons:
- It is symmetric (isclose(a, b) == isclose(b, a)).
- It has a default absolute tolerance of zero.
- It does not correlate the absolute and relative tolerances.
Add type annotations to methods and run mypy in Travis CI.
Add round method to array objects (Point, Points and Vector). Now a Vector is returned when a Vector is rounded.
Add methods to return coordinates on the surface of a Plane or Sphere. The coordinates are used for 3D plotting.
Improve Plane plotting so that vertical planes can be plotted.
- Add Circle and Sphere spatial objects.
- Add scalar keyword argument to Vector plot methods.
- Improve plotting of Plane. The x and y limits now treat the plane point as the origin.
- Extra release because regex for version tags was incorrect in Travis.
- Extra release because Travis did not deploy the last one.
- Add functions plot_2d and plot_3d to facilitate plotting multiple spatial objects.
- Change _plotting module name to plotting, because it now contains some public functions.
- Remove dpcontracts as a dependency. The contracts were causing performance issues.
- Add 'dimension' attribute to all spatial objects.
- Add Vector.angle_signed method.
- Add Line.from_slope method.
- Move tests into skspatial directory. This allows for importing custom hypothesis strategies for testing other projects.
- Drop support for Python 3.5 (matplotlib requires >= 3.6).
- Add methods for 2D and 3D plotting.
- Rename private modules and functions to include leading underscore.
- Support Python versions 3.5-3.7.
- Change Vector and Point to be subclasses of the NumPy ndarray.
- Change all spatial objects to accept array_like inputs, such as a list or tuple.
- Add the Points class to represent multiple points in space. This is also an ndarray subclass.
- The dimension of the objects is no longer automatically set to 3D. Points and vectors can be 2D and up.
- First release on PyPI.