[][src]Crate robust

This is a direct transcript of the sourcecode and algorithms provided by Jonathan Richard Shewchuk (https://www.cs.cmu.edu/~quake/robust.html) See the paper and the source code for more information.

The module offers adaptive and precise calculations for orientation queries (on which side of a line does a point lie?) and in-circle queries (is a given point contained in the circumference of a triangle?) The "adaptive" nature will increase performance only if a simpler calculation cannot be guaranteed to be accurate enough, yielding higher performance on average.

The public API will accept both f32 and f64 input points for predicate checking, with input being converted to f64 values for internal use. This has no effect on precision, as the IEEE-754 standard (section 5.3) guarantees that conversion from f32 to f64 must be exact.


  • no_std: Build without the Rust standard library



A two dimensional coordinate.



Returns a positive value if the coordinate pd lies outside the circle passing through pa, pb, and pc.
Returns a negative value if it lies inside the circle.
Returns 0 if the four points are cocircular.


Returns a positive value if the coordinates pa, pb, and pc occur in counterclockwise order (pc lies to the left of the directed line defined by coordinates pa and pb).
Returns a negative value if they occur in clockwise order (pc lies to the right of the directed line pa, pb).
Returns 0 if they are collinear.