BoundingOrientedBox::CreateFromPoints solver suffers from numeric problems
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 38/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- cpp
- Domain
- computer-graphics
Research direction
Start at BoundingOrientedBox::CreateFromPoints and its SolveCubic helper, then reproduce the reported precision problem on real-valued symmetric 3x3 matrices. Compare the current cubic-solver behavior with the issue's suggested preconditioning or specialized iterative method; done means all three eigenvalues are computed robustly despite float precision.
Written by the indexing model from the issue text.
Description
Report from Dave Eberly about problems with the oriented box SolveCubic helper function.
The SolveCubic is called to compute the eigenvalues of a real-valued symmetric 3x3 matrix. Such matrices ALWAYS have 3 real eigenvalues, so SolveCubic is returning a theoretically incorrect result. The problem has to do with the precision of 'float' numbers. The cubic-solver approach can be made more robust by preconditioning the matrix.
Root finding using the closed-form algebraic equations for low-degree polynomials is known to be numerically ill conditioned. It is better to use iterative methods. For 3x3 symmetric matrices, a specialized iterative method can be very fast, extremely accurate, and robust.
- Dominant language
- C++
- Stars
- 1.8k
- Forks
- 262
- Avg merge
- 3d 12h
- Merged PRs (30d)
- 5
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/DirectXMath
-
Difficulty 3/5 1-2 days Newbie friendliness 58/100
microsoft/DirectXMath#346 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 68/100
microsoft/DirectXMath#342 ·
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 25/100
microsoft/DirectXMath#328 ·
-
simplemath
Difficulty 5/5 Over a week Newbie friendliness 35/100
microsoft/DirectXMath#327 · 1 comment ·
-
Project feedback Open
Difficulty 5/5 Over a week Newbie friendliness 20/100
microsoft/DirectXMath#326 · 2 comments ·
All issues in microsoft/DirectXMath
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
objectionary/eo-graphs#74 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 95/100
-
enhancement
Difficulty 1/5 Under an hour Newbie friendliness 88/100
QuantStack/git2cpp#187 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100