← Back to team overview

kicad-developers team mailing list archive

Re: Testing boost::polygon in pcbnew.


On 07/27/2010 02:31 PM, jean-pierre charras wrote:
> My last commit includes a new boost library:  boost::polygon
> see:
> google "boost polygon",
> "http://svn.boost.org/svn/boost/sandbox/gtl/boost/polygon";
> "http://svn.boost.org/svn/boost/sandbox/gtl/doc";
> I believe this is a *very* interesting library, and this is exactly what is needed for kicad.
> So I wrote "zones_convert_brd_items_to_polygons_with_Boost.cpp" to test it (It was a lot of work)
> I need volunteers to test zone filling algorithm using boost::polygon,
> verify if issues are found, and send me results of tests.
> Mainly errors when creating solid areas.
> FYI, I know 2 boards with errors using Kbool (but Kbool is still the best polygon library for Kicad).
> (calculation time, due to less redundancy due to code refactory is 50% the time needed with Kbool library)
> Note in fact 80% calculation time is thermal shape tweaking by removing unconnected stubs.
> (I am not sure it is very useful)
> To compile with boost::polygon, run cmake with option -DUSE_BOOST_POLYGON_LIBRARY=ON
> (see changelog).


I found the boost library to require only 40% of the time of kbool to
refill several zones on a fairly complicated board.  Even on a *very*
fast computer this board takes 11 seconds to refill all zones using
kbool.  Using boost::polygon it takes only 4 seconds.

However, I see some angular rectable artifacts at the junction of two zones:


The above pattern shows what the errant holes look like near the
junction of two zones.

See the two attached *.png files for a comparison of kbool's work with
boost::polygon on this particular layer.  This is a power layer.
I have not checked any other layers yet.

The boost library looks promising if you can get it to do the job.  I
assume switching to it would mean being able to fully remove the kbool
libary, although I understand some data structures might need to be
abandoned also in order to stop including all kbool headers.


Attachment: boost.png
Description: PNG image

Attachment: kbool.png
Description: PNG image

Follow ups