- Change reference in Plane.best_fit docstring as the previous link was broken.
- Change README.rst to README.md as GitHub was not rendering the former well.
- Include new methods in the documentation:
- Line.project_points
- Line.distance_points
- Plane.project_points
- Plane.distance_points
- Add new methods:
- Line.project_points
- Line.distance_points
- Plane.project_points
- Plane.distance_points
- Restore import of importlib_metadata.
- Add support for Python 3.12.
- Drop support for Python 3.7.
- Increase minimum NumPy version to 1.17.3 (to be compatible with the new dependency SciPy).
- Add Cylinder.best_fit method.
- Add missing plotter method to LineSegment.
- Add Circle.from_points method.
- Add check_coplanar kwarg to Line.intersect_line.
- Lower minimum NumPy version to 1.16.
- 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.