Skip to main content

ogeom_math/
lib.rs

1//! Value-semantics geometric primitives and the numerical machinery under them.
2//!
3//! Two things here are load-bearing and easy to get wrong:
4//!
5//! - `Direction` enforces its unit-length invariant in the type, not by
6//!   convention.
7//! - `Transform` carries a **form classification** (identity / translation /
8//!   rotation / scale / …) that short-circuits transform application across the
9//!   whole kernel.
10
11pub mod bounds;
12pub mod bspline;
13pub mod conic;
14pub mod construct2d;
15pub mod direction;
16pub mod elementary;
17pub mod frame;
18pub mod integrate;
19pub mod interval;
20pub mod knots;
21pub mod matrix;
22pub mod optimize;
23pub mod point;
24pub mod quadric;
25pub mod quaternion;
26pub mod solve;
27pub mod sparse;
28pub mod transform;
29pub mod vector;
30
31pub use bounds::Aabb;
32pub use bspline::{Blend, ControlGrid, Weighted};
33pub use conic::{Circle, Circle2, Ellipse, Ellipse2, Hyperbola, Hyperbola2, Parabola, Parabola2};
34pub use construct2d::{
35    Bisector2, Placement, TangentCircle, Target2, bisector, circles_of_radius_tangent_to_two,
36    circles_tangent_to_three, lines_tangent_to_two_circles,
37};
38pub use direction::{Direction, Direction2};
39pub use elementary::{CurvePoint, SurfacePoint};
40pub use frame::{Axis, Axis2, Frame, Frame2, Handedness};
41pub use integrate::{
42    gauss_kronrod, gauss_kronrod_21_rule, gauss_legendre, gauss_legendre_rule, integrate,
43    integrate_2d,
44};
45pub use interval::Interval;
46pub use knots::{BasisValues, KnotVector};
47pub use matrix::{Matrix2, Matrix3};
48pub use optimize::{Minimum, global_minimum, minimize_local, swarm_minimum};
49pub use point::{Point, Point2};
50pub use quadric::{Cone, Cylinder, Plane, Sphere, Torus, TorusKind};
51pub use quaternion::Quaternion;
52pub use solve::{Convergence, Criteria, Solution, SystemSolution};
53pub use sparse::{SparseMatrix, least_squares_cgnr};
54pub use transform::{GeneralTransform, Transform, Transform2, TransformKind};
55pub use vector::{Vector, Vector2};