[cairo] intersect_lines in Bentley Ottman implementation

Carl Worth cworth at cworth.org
Wed Jul 30 14:12:08 PDT 2008


On Wed, 2008-07-30 at 05:22 -0400, Antoine Azar wrote:
> I neglected this patch in the last few weeks but here it is: I've
> added
> floating point support to the line intersection code in the Bentley
> Ottman
> algorithm. The line intersection was taking up quite some time on my
> Wintel
> machine, mostly due to costly 64 bit and 128 bit operations.

We didn't write those in fixed-point for performance reasons, (and
especially not to cater to machines without hardware floating-point).

The idea behind that fixed-point arithmetic is to guarantee correctness,
(intersection calculations have a tendency to create some nice numeric
explosions as lines become near parallel, etc.).

So a switch to floating-point here really needs to be accompanied by
careful analysis of the input data and the precision provided by the
floating-point operations. Otherwise it's just not interesting.

-Carl




More information about the cairo mailing list