robust
robust copied to clipboard
Robust predicates for computational geometry
The documentation for `incircle`, `orient2d` and `orient3d` all speak of "counterclockwise order", but without specifying the assumed handedness of the coordinate system, this is fairly meaningless. The documentation for `insphere`...
This PR contains a minor change (using core::f64::EPSILON / 2.0 to define EPSILON to be more descriptive) and a bigger change that uses Fused-Multiply-Add (FMA) for two_product. This simplifies the...
This library is entirely implemented for f64 and in comments, it is stated that f32 inputs will be converted to f64 without loss of precision. This is true and the...
Is this expected? Does the C version do this? Found via https://github.com/georust/robust/pull/18 ```rust let data = [ ( 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000602151646108571f64, -517539169279288000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0f64, ), ( 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008335571366403185f64, 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000569f64, ), ( 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008309872195179385f64, 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008309872194912985f64, ), (...
From @bluenote10's [comment](https://github.com/georust/geo/issues/380#issuecomment-573314264): >I'm wondering if there is a good way to avoid the type conversion. Currently the robust crate interface relies on its own robust::Coord type. As far as...
While working on robustifying rust-geo-booleanops I came across something, which I'll leave here as a note -- maybe it can be useful to others. One of the challenges of computing...
From @hugoledoux's [comment](https://github.com/georust/geo/issues/380#issuecomment-571143533): Regarding incorrect results when input is as follows: p_a: (x: -0.0000000000000000033732417326292235, y: -710.1201610753293) p_b: (x: -0.0000000000000006803180046827075, y: 0.0000000000000007474653075557756) p_c: (x: -5921927286181025000000000, y: -70060321899175880000000000000) predicates.c orient2d: 0 exactpred.rs...
Hello! I am working on my library for geometry algorithms and recently I realized that for some implementations I would need more exact predicates, other than just orient and incircle....
- [X] I agree to follow the project's [code of conduct](https://github.com/georust/.github/blob/main/CODE_OF_CONDUCT.md). - [ ] I added an entry to the project's change log file if knowledge of this change could...