The libart library
<<< Previous Page | Home |  | Next Page >>>

# Known problems

# Numerical Stability

Libart is known to have a lot of problems concerning numerical stability. These problems can come from two separate issues:

- Libart uses floats to represent an manipulate user-data. Floating-point arithmetics are known to lack numerical stability sometimes. Some problems are thus to be expected.

- The libart intersector (the code used to transform vpaths into svps) is known to have some bugs. Fixing those requires a lot of work and a careful re-design/re-write of the intersector. Till then, Raph has not had time to fix them. Also, no one volunteered to fix them. If you have some time left on weekends and are interested in this task, please contact Raph (raph at acm dot org).

  The libart intersector is used by art_svp_union, art_svp_intersect and art_svp_diff. These functions are used heavily by the Gnome Antialiased Canvas (the intersector code can be found in `art_svp_wind.c`).

Despite these problems, libart can still be used for production use: these bugs manifest themselves in small drawing glitches which can be avoided by sparsely using art_vpath_perturb.

<<< Previous Page | Home |  | Next Page >>>
Svp rendering | Memory Footprint