Use eigen to compute angle between vertex normals to avoid nans #246
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR resolves a lingering item with #76 that caused downstream issues in FCL with certain meshes that spewed
eigen: too many iterations in Jacobi transform.
As hinted by flexible-collision-library/fcl#190, we tracked this down to nans being introduced due to floating point imprecision in line 551
return std::acos(vec1.dot(vec2) / (vec1_norm * vec2_norm));
Rather than introduce guards to sanitize input/output, use eigen to compute the angle directly-in our internal testing the error with FCL no longer appears with this change.
When this is accepted we can incorporate the fix into #240