Releases#
GEOCLIDE CHANGELOG#
v4.0.0#
Release date: 05-08-2026
Geoclide is now licensed under the Apache License 2.0, instead of the previous terms of use restricted to non-commercial purposes. This release also modernizes the whole package, corrects several bugs of the calculations with a set of rays or vectors, and reduces the computational time of most of the operations.
Change the license to the Apache License 2.0
Breaking changes
The minimum python version is now 3.10
The module
constantehas been renamedconstantsThe x, y and z ndarrays given to the Vector, Point and Normal constructors are no longer copied, use the new parameter copy=True to get an object with its own components
Correct the function
coordinate_systemwith a set of vectorsWith the method ‘m1’ it raised an error when the set mixed the 2 cases |x| > |y| and |x| <= |y|, and the second case used a wrong denominator
Correct the Sphere and Disk intersection tests with a set of rays
The methods
is_intersection_tandintersectraised an error when some of the rays miss the shape, instead of returning no intersection as with a single ray
Correct the Transform matrix shape check, a matrix of shape (nt,3,4) was accepted
Reduce the computational time, without any change of the results
Vector, Point and Normal creation and operations, from 40 to 99% faster
Functions
get_translate_tfandget_scale_tfwith a set of vectors, 90% fasterSpheroid method
to_trianglemesh, 95% fasterFunctions
face_forward,permuteandquadratic, from 65 to 99% fasterBBox method
intersect, 37% fasterTriangle and TriangleMesh intersection tests, 14% faster
Read the meshes with the trimesh function
load_mesh, a file describing several objects (as a glb file) is now acceptedAdd the python 3.14 support
Improve the documentation
New introduction page, the README is no longer included
New logo, for light and dark backgrounds
Correct and complete the docstrings of all the modules, the examples are now all executable
Enrich the README with the features, a quickstart and badges
Modernize the package
Setup ruff, add the type annotations and correct the type checker findings of all the modules
Add the pixi configuration and lock file
Add the tests, docs, release and PyPI publication workflows
Read the version from pyproject.toml
v3.0.3#
Release date: 07-06-2025
Fix bug in
vec2angfunction with float32 x, y, z vector componentsAlso add acc parameter to control the tolerance of numerical errors
v3.0.2#
Release date: 06-06-2025
Fix bug in
vec2angfunction
v3.0.1#
Release date: 13-03-2025
Several doctring corrections
Clearer docsting
Improvement of the sphinx docs
A mistake has been found concerning the parameter name for diagonal calculations only for the the Transform
__call__method and the functionang2vecThe name calc_diag has been replaced by the correct one i.e. diag_calc
Add missing diag_calc parameter to Transform
rotatemethodCorrect the Transform
scalemethodthe method uses the
get_scale_tffunction, which takes only one parameter of type Vector instead of three
v3.0.0#
Release date: 12-03-2025
This release includes only a breacking change with the function get_scale_tf.
The Transform and Ray __call__ method is now recommended in replacement
of the method __getitem__. The method __getitem__ is still here but has a
depracated message
Improve the
__str__and__repr__methods in case of multiple vectors, points, normals or raysReplace the Transform and Ray classes method
__getitem__by the method__call__Multiple transformations is now possible with the Transform class
Allow 1-D calculations with several transformations and 1 point, vectors, …
Allow 2-D calculations with several transformations and several points, vectors, …
Allow diagonal calculations (case 2-D with option diag_calc=True)
Add sphinx documentation
Function
get_scale_tftakes as input a Vector variable instead of 3 scalarsAdd new option flatten to Tranform
__call__methodInstead of having a numpy array of Vector objects, the output can be only 1 Vector object where a flatten operation is made to x, y, z components of all vectors
Avoid loop operation then reduce the computational time
Function
vec2angnow accepts Vector object with multiple vectorsFunction
ang2vecnow accepts 1d ndarray theta and phi angles
v2.0.2#
Release date: 05-03-2025
Several corrections in TriangleMesh
intersect,is_intersection_tandis_intersectionmethodsTransformations were not taken into account when using the plot method, now it’s corrected
Addition of more tests
v2.0.1#
Release date: 03-03-2025
Correction of a bug occuring while using a version of numpy < 2.0.0
np.atan2 and np.acos replaced by np.arctan2 and np.arccos
README image links updated
Correct file format and add test files in MANIFEST file
Ignore certain unwanted warnings
v2.0.0#
Release date: 02-03-2025
This release includes some breaking changes like the input of TriangleMesh where the variable names are different, but also the input (2d ndarray). Other breaks are for example changes of certain method outputs.
Acceleration of geometric calculations thanks to numpy multi-dimentional array operations
Point, Vector and Normal classes can now have 1-D ndarray x, y, z components
Functions in vecope.py have been adapted to allow Point, Vector and Normal with 1-D ndarray x, y, z components
Readaptation of the Ray and BBox classes with the new Point, Vector and Normal classes
BBox
intersectmethod allow 1-D, 2-D and 2-D diagonal calculationsReadaptation of the quadric classes enabling intersection tests with a class Ray containing several rays
Readaptation of Triangle and TriangleMesh classes. Allow 1-D, 2-D and 2-D diagonal calculations
…
The 3D objects
intersectmethod output is now an xarray DatasetSeveral new functionalities
New method
to_triangle_meshto convert a quadric to a TriangleMesh objectNew method
to_plotfor TriangleMesh, and also for all quadricsNew TriangleMesh method
writeto save the triangle mesh in nectcdf4 and also inseveral other formats as stl, ply, …
The
read_trianglemeshfunction allows to read triangle mesh files (gcnc, stl, ply, etc.) and return a TriangleMesh object…
A lot of tests have been added, more documentations, cleaning, …
v1.2.2#
Release date: 13-02-2025
Correction of a bug in TriangleMesh constructor
The bug occurred when we set the vi parameter as a 2d array.
Add tests detecting the corrected bug
Add docstring to area method for all objects
v1.2.1#
Release date: 13-02-2025
Correction in
vec2angfunctionsmall correction in the docstring
correct a bug appearing when the parameter v is not a normalized vector
add the missing default value of the parameter vec_view
Add tests enabling to detect the corrected bug
v1.2.0#
Release date: 10-02-2025
Add new functions
ang2vecvec2ang
Add the Disk class
It can be a disk, a partial disk, an annulus or a partial annulus
Add new method to all 3d objects
is_intersection_tthe method is faster than
intersectmethod, but gives only thit
Move tests folder into geoclide folder
And some improvements
v1.1.1#
Release date: 07-02-2025
Correction of a bug with the normal orientation at the intersection with a 3d object
v1.1.0#
Release date: 05-02-2025
Add the Spheroid class (oblate or prolate object)
Small optimization of sphere intersection test
v1.0.0#
Release date: 2025-01-27
First public release.