Skip to content

Add bindings + tests for cubic Bézier, roots, and new predicates - #304

Merged
alecjacobson merged 2 commits into
mainfrom
cubic-bezier-and-roots
Aug 10, 2026
Merged

Add bindings + tests for cubic Bézier, roots, and new predicates#304
alecjacobson merged 2 commits into
mainfrom
cubic-bezier-and-roots

Conversation

@alecjacobson

@alecjacobson alecjacobson commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Bumps libigl to 477e15a and adds Python bindings + tests for the recently
added cubic Bézier / root-finding functionality, including a new
igl.cycodebase module. Also bumps the package version to 2.6.3.dev4.

New bindings

core

  • cubic, cubic_is_flat, cubic_monomial_bases, cubic_split, fit_cubic_bezier

igl.cycodebase (new module)

  • roots, box_cubic, point_cubic_squared_distance,
    point_spline_squared_distance, spline_eytzinger_aabb

predicates

  • cubic_winding_number, spline_winding_number, point_in_convex_hull
  • Updated Orientation/incircle/insphere/orient2d/orient3d for libigl
    moving the Orientation enum to the top-level igl:: namespace

Build notes

  • Enables the LIBIGL_CYCODEBASE option and wires the module through the
    existing auto-glob pyigl_include() mechanism.
  • Pins Eigen to 3.4.0 (declared before libigl): recent libigl bumped Eigen to
    5.0.1, whose stricter ScalarBinaryOpTraits rejects the int64-vs-int
    comparisons that the 64-bit-index bindings instantiate.

Testing

Adds 14 tests to tests/test_all.py. Numeric expectations were cross-validated
against independent computation (numerical winding-number integration,
brute-force closest-point search). Full suite: 90 passed.

🤖 Generated with Claude Code

Horde and others added 2 commits August 10, 2026 17:27
Bump libigl to 477e15a (pinning Eigen 3.4.0 so the 64-bit-index bindings
still compile) and add a new igl.cycodebase module plus bindings for the
recently added cubic Bézier / root-finding functionality:

- core: cubic, cubic_is_flat, cubic_monomial_bases, cubic_split,
  fit_cubic_bezier
- cycodebase (new module): roots, box_cubic,
  point_cubic_squared_distance, point_spline_squared_distance,
  spline_eytzinger_aabb
- predicates: cubic_winding_number, spline_winding_number,
  point_in_convex_hull; also update Orientation/incircle/insphere/
  orient2d/orient3d for libigl moving Orientation to the igl:: namespace

Adds 14 tests in tests/test_all.py with expectations cross-validated
against independent numerical computation. Full suite: 90 passed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@alecjacobson
alecjacobson merged commit 6f5e3cb into main Aug 10, 2026
39 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant