Skip to content

[Geometry] Bugfixes and add unit tests#5987

Open
fredroy wants to merge 7 commits intosofa-framework:masterfrom
fredroy:add_tests_geometry
Open

[Geometry] Bugfixes and add unit tests#5987
fredroy wants to merge 7 commits intosofa-framework:masterfrom
fredroy:add_tests_geometry

Conversation

@fredroy
Copy link
Contributor

@fredroy fredroy commented Mar 3, 2026

Fix various Edge and triangles functions

  • intersectionWith* (test against abs value to check both sides) and collinearity
  • fix 2d and 3d cases
  • isPointInTriangle: add checks if the point is in the triangle plane but also add a boolean to bypass this check (as it was before the "fix")
  • mat_LCP (used for proximity): the solver returned true even it fails to converge (max iterations reached)

and more unit tests for Sofa.Geometry module

[with-all-tests]


By submitting this pull request, I acknowledge that
I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


Reviewers will merge this pull-request only if

  • it builds with SUCCESS for all platforms on the CI.
  • it does not generate new warnings.
  • it does not generate new unit test failures.
  • it does not generate new scene test failures.
  • it does not break API compatibility.
  • it is more than 1 week old (or has fast-merge label).

@fredroy fredroy added pr: fix Fix a bug pr: status to review To notify reviewers to review this pull-request pr: test PR adding test(s) in SOFA pr: AI-aided Label notifying the reviewers that part or all of the PR has been generated with the help of an AI labels Mar 3, 2026
@fredroy
Copy link
Contributor Author

fredroy commented Mar 3, 2026

[ci-build][with-all-tests]

fredroy added 7 commits March 3, 2026 15:55
if (denominator < EQUALITY_THRESHOLD)  the denominator is a signed dot product. When negative (edge crosses plane from the "back"), this is always true,
  so the function rejects ~half of all valid intersections.
1-The 2D path computes alpha (parameter on edge AB) and checks 0 <= alpha <= 1, but never computes or checks beta (parameter on edge CD). Reports false
  intersections when the infinite line CD crosses segment AB but outside segment CD.
2-if (alphaDenom < std::numeric_limits<T>::epsilon())  same pattern as Bug 1. The cross product alphaDenom is signed. When negative (non-collinear edges in
  one orientation), incorrectly reports them as collinear.
solveLCP returns true when solver fails to converge (max iterations reached)
While isPointInTriangle still works (it only checks sign pattern),
  any code that uses the returned coordinates for interpolation, projection to the nearest point on the triangle, or distance computation gets wrong values.
  This is a public utility function likely consumed by many parts of the codebase.
@fredroy fredroy force-pushed the add_tests_geometry branch from ae273ee to 69cba4f Compare March 3, 2026 06:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr: AI-aided Label notifying the reviewers that part or all of the PR has been generated with the help of an AI pr: fix Fix a bug pr: status to review To notify reviewers to review this pull-request pr: test PR adding test(s) in SOFA

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant