Irurueta Geometry
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
irurueta-geometry is a Java library of geometry structures and utilities built around projective geometry and homogeneous coordinates. Its central practical use case is camera geometry: representing and estimating a pinhole camera model from noisy point/line correspondences, robustly, and then refining the result through non-linear optimization.
Core concepts
The library is organized into three areas:
-
com.irurueta.geometry— core geometric primitives: 2D/3D points, lines, planes, conics/quadrics, rotations, transformations, cameras, and basic solids (box, sphere, ellipsoid). Most entities come in explicit2D/3Dpairs, e.g.Point2D/Point3D,Line2D/Line3D,Triangle2D/Triangle3D. -
com.irurueta.geometry.estimators— non-robust and robust estimators that fit a geometric entity (a circle, conic, transformation, or pinhole camera) from point/line correspondences. Robust estimators come in families named after the robust algorithm used:RANSAC,LMedS,MSAC,PROSAC,PROMedS. -
com.irurueta.geometry.refiners— non-linear refinement of an entity after an initial robust estimate.
Some of the classes a newcomer is most likely to start with:
| Class | Purpose |
|---|---|
|
Points in 2D/3D space, represented in homogeneous or inhomogeneous coordinates. |
|
Basic linear geometric loci. |
|
Second-degree curves/surfaces in projective space (and their duals |
|
Geometric mappings of increasing generality: Euclidean ⊂ metric ⊂ affine ⊂ projective. |
|
The pinhole camera model and its intrinsic calibration parameters (focal length, aspect ratio, skewness, principal point). |
|
3D rotation representations. |
|
Robust fitting of cameras, transformations, or conics from noisy correspondences (e.g.
|
How estimation typically flows
Geometric entities in depth
-
Transformations — the Euclidean / metric / affine / projective hierarchy and how each family transforms points, lines, planes, conics and quadrics.
-
Rotations — 2D rotations and the three interchangeable 3D representations (matrix, axis-angle, quaternion).
-
Points, Lines and Planes — homogeneous vs. inhomogeneous points,
Line2D/Line3D,Plane, and point-line-plane duality. -
Conics and Quadrics — conics/quadrics, their duals, and the
Circle/Ellipse/Sphere/Ellipsoidspecializations. -
Triangles and Polygons —
Triangle2D/3D,Polygon2D/3D, and ear-clipping triangulation. -
Pinhole Camera — the pinhole camera model that ties 3D and 2D entities together.
-
Boxes and KD-Trees —
Box2D/3Dand theKDTreespatial index built on top of them.
Estimators in depth
-
Estimators — why every entity gets a non-robust algorithm and a family of RANSAC / LMedS / MSAC / PROSAC / PROMedS robust wrappers, and the shared
com.irurueta.numerical.robustmachinery underneath. -
Point, Line and Plane Estimators — fitting a
Point2D/Point3D,Line2DorPlaneto a noisy set of lines/planes/points. -
Conic and Quadric Estimators — fitting a
Circle,Sphere,Conic/DualConicorQuadric/DualQuadricto a noisy point/line/plane set. -
Transformation Estimators — fitting a Euclidean, metric, affine or projective transformation from noisy point/line/plane correspondences.
-
Pinhole Camera Estimators — estimating a
PinholeCameravia DLT, EPnP, UPnP or weighted correspondences, robustly or not.
Next steps
-
Installation — add irurueta-geometry as a dependency to your project.
-
Reference — generated reports and external dashboards for this project.