31 Commits

Author SHA1 Message Date
c47c91f418 Extend wrmath to match Rust library in astro-rs
Brings the C++ library in line with the Rust wrmath crate in astro-rs,
which extends this library with additional geometry and estimation
primitives. All changes generated with AI assistance (Claude Fable 5).

New headers:
- wrmath/geom/matrix.h: Matrix<T,M,N> with rank, det, inv, transpose,
  and matrix-vector/matrix-matrix multiplication
- wrmath/geom/coord2d.h: Polar<T> 2D polar coordinates with navigation
  convention (clockwise-positive heading)
- wrmath/geom/coord3d.h: Spherical<T> 3D spherical coordinates with
  yaw/pitch, slerp, great-circle path interpolation, and quaternion
  direction
- wrmath/estim/imu.h: IMU<T> for 6-DoF and 9-DoF (MARG) sensor fusion

Extensions to existing headers:
- math.h: Epsilon3/6/Max constants; AbsTolerance (NaN/inf-safe),
  AbsError, RotateRadians, Circumference
- vector.h: zero(), withEpsilon(), asArray(), fromArray/Eps(), map(),
  isNaN(), angle2() (signed), euclidist(), projectLower/Tail<M>(),
  x()/y()/z() accessors; fixed isParallel() to use unit-vector equality
  (matches Rust fix for macOS/arm64 acos domain issue)
- quaternion.h: lerp(), slerp() methods; jacobian() returning
  Matrix<T,3,4>; direction()
- filter/madgwick.h: beta gain field, setDeltaT(), setGain(),
  direction(), updateFrame2(), updateAngularOrientation2()
- orientation.h/.cc: RBearing3d/f, ABearing3d/f, CompassHeading3d/f

Infrastructure:
- C++ standard bumped to C++17 (required for std::optional)
- CMake include path fixed so source-relative includes work
- Umbrella headers (geom.h, filter.h) updated

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-22 22:34:49 -07:00
9a7208913d Cut over to Bazel. 2023-02-16 19:56:49 -08:00
08ce01ab87 cleaning up comments 2020-02-18 22:06:50 -08:00
5bee57a2e4 Add Doxygen conf to sphinx. 2019-08-07 20:51:36 -07:00
dca6338228 Updating docs. 2019-08-07 20:51:36 -07:00
52ba9d8ebe Add sphinx as doc target. 2019-08-08 03:51:22 +00:00
ff3ff8d8b2 Add Euler angles to Madgwick and update docs. 2019-08-07 19:17:58 +00:00
85833c354d Add Madgwick type aliases. 2019-08-06 23:30:58 -07:00
ce21bbd38a Updating docs. 2019-08-06 23:05:51 -07:00
971f324d7f Start Madwick filters. 2019-08-06 22:49:20 -07:00
7a932f422a Update sphinx docs; use exhale and breathe. 2019-08-07 01:57:26 +00:00
48729670c1 Cleaning up header comments. 2019-08-07 01:55:19 +00:00
bbaa497a71 Add SLERP test for floats, use second yest too. 2019-08-07 01:54:11 +00:00
eaed085fdb Add a README. 2019-08-06 10:41:26 -07:00
b7c42a5fc5 Add some notes to the SLERP test. 2019-08-06 00:59:25 -07:00
be0d5f9b71 Add SLERP test and euler2quat. 2019-08-06 00:46:02 -07:00
be75f67ab8 Ignore doxygen XML output. 2019-08-05 22:51:58 -07:00
71a6f5e128 Clean up and document code. 2019-08-05 22:50:28 -07:00
3a9d614010 quaternion <-> euler, lots of fixes. 2019-08-06 01:03:30 +00:00
a175afd49f Complex conjugate started. 2019-08-05 10:07:56 -07:00
a3c815daca Bring float quaternion tests to parity. 2019-08-05 09:47:47 -07:00
de1c4e6109 More work on quaternions. 2019-08-05 09:46:08 -07:00
4cf4693088 Start quaternions. 2019-08-05 00:12:03 -07:00
3a5dd0490c Add cross product. 2019-08-04 23:30:11 -07:00
e157ee61e6 Add docs for the math package. 2019-08-04 22:58:41 -07:00
1224a57d06 Bring vector.h to 100% coverage. 2019-08-04 22:44:06 -07:00
88be5bfe01 Bump minimum CMake version. 2019-08-04 22:22:46 -07:00
323ac318f8 Add coverage checks. 2019-08-04 22:21:50 -07:00
de4dd70407 Reorg util/math -> math. 2019-08-03 13:44:43 -07:00
0dc47cdbce Major updates, start orientation, start documentation. 2019-08-03 03:37:37 -07:00
2ecc14f46c Initial import. 2019-08-03 02:03:44 +00:00