All notable changes to this project will be documented in this file. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.2.0 - 2026-02-23
- Dynamic algorithm discovery at the algorithms directory.
- How to create new objects and algorithms documentation at the wiki.
- How to create new objects and algorithms documentation at the
README.mdfile. - Reconstruction methods inside the
BaseModelclass, now they are all called atmain.py. - Model reconstruction information from both
simpleandcomplexmodels, with the goal of preparing the code for future versions with a better logging system.
1.1.0 - 2026-02-18
-
New
utils/geo3d.pymodule with pure NumPy geometry functions:intersect_lines()- Fast 3D line intersection using least squares.point_on_plane()- Coplanarity check with configurable tolerance.project_point_to_plane()- Orthogonal point projection.planes_intersection()- Intersection line between two planes.intersect_3dpolygons()- Coplanar 3D polygon intersection.Axisenum for axis-aligned operations.Planeenum for plane-aligned operations.
-
Vectorized operations in simple algorithm:
View.real_to_plane_batch()- Batch coordinate transformationView.points_inside_polygon_batch()- Vectorized polygon containment checksView.polygon_view_to_plane()- Efficient 2D view-to-plane coordinate conversion
-
Complex Algorithm
- 99.3% performance improvement for complex models.
- Replaced symbolic SymPy operations with numerical NumPy operations.
- Pre-grouped segments by axis-aligned keys to avoid O(n²) comparisons in
initial_reconstruction(). - Cached
dst2coordinates in segment dictionary to eliminate redundantplane_to_real()calls. - Eliminated redundant 3D-to-2D projections in
refine_model():- View polygon now converted directly to plane 2D coordinates.
- Removed intermediate 3D conversion that was immediately discarded.
- Only calculates required 2D components based on projection axis.
- Cached Shapely
Polygonobjects for view polygons to avoid recreation per plane.
-
Simple Algorithm
- 74.3% performance improvement for complex models.
- Fully vectorized
project_view_to_voxels():- Replaced nested loops with
np.meshgrid()operations. - Batch coordinate transformations using matrix multiplication.
- Vectorized polygon containment checks using Shapely's accelerated functions.
- Replaced nested loops with
- Fully vectorized
generate_surface():- Replaced triple nested loop with
np.argwhere()and vectorized coordinate calculation.
- Replaced triple nested loop with
- Removed dependency on SymPy for geometric operations.
- Removed
complex/model.pydependency onsympy.Plane,sympy.Matrix,sympy.Line3D,sympy.Point3D. - Removed
simple/view.pydependency onsympy.Matrix.
1.0.0 - 2025-07-17
- Initial release with complex and simple reconstruction algorithms
- Support for multi-view 3D reconstruction from 2D orthographic projections
- Interactive 3D visualization with camera controls
- Command-line interface for model reconstruction