Subject: CGAL users discussion list
List archive
Re: [cgal-discuss] segmentation fault, 2D Delaunay triangulation, 3.4 and 3.5-beta1
Chronological Thread
- From: Manuel Caroli <>
- To:
- Subject: Re: [cgal-discuss] segmentation fault, 2D Delaunay triangulation, 3.4 and 3.5-beta1
- Date: Wed, 05 Aug 2009 11:38:07 +0200
Hi Graham,
Could you send a minimal example that produces the error?
Thanks
Manuel
Graham Macpherson wrote:
Hello all,
I'm using a CGAL to do 2D Delaunay triangulation and I'm getting segmentation faults triggered by the "orientation" function in "march_locate_2D" on line 1969 of Triangulation_2.h, called by me calling "insert" to add a new vertex.
The fault are not consistently reproducible - only appearing about 1 in 5-10 times that the executable is run. It happens with both the Exact_predicates_exact_constructions_kernel and Exact_predicates_inexact_constructions_kernel, and whether it is a debug build or not.
Compiling on linux x86_64, gcc 4.3.3 with -DFULLDEBUG -O0 options and boost 1.39.0, the error message is below and attached. I get the same result using CGAL 3.4 and 3.5-beta1.
Any suggestions?
Best regards,
Graham Macpherson
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#0 Foam::error::printStack(Foam::Ostream&) in "/home/graham/OpenFOAM/OpenFOAM-dev/lib/linux64GccDPOpt/libOpenFOAM.so" #1 Foam::sigSegv::sigSegvHandler(int) in "/home/graham/OpenFOAM/OpenFOAM-
dev/lib/linux64GccDPOpt/libOpenFOAM.so" #2 ?? in "/lib64/libc.so.6" #3 CGAL::Lazy<CGAL::Point_2<CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Point_2<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq,CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::ptr() const at ~/OpenFOAM/ThirdParty-dev/CGAL-3.4/include/CGAL/Lazy.h:1161 #4 CGAL::Lazy<CGAL::Point_2<CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Point_2<CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Gmpq,CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >::approx() const at ~/OpenFOAM/ThirdParty-dev/CGAL-3.4/include/CGAL/Lazy.h:1122 #5 CGAL::Point_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > > >::AT const& CGAL::Approx_converter<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >::operator()<CGAL::Point_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>,CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > > >(CGAL::Point_2<CGAL::Lazy at kernel<CGAL::Simple_cartesian<CGAL::Gmpq>,CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > > > const&) const #6 CGAL::Sign CGAL::Filtered_predicate<CGAL::CartesianKernelFunctors::Orientation_2<CGAL::Simple_cartesian<CGAL::Gmpq>,CGAL::CartesianKernelFunctors::Orientation_2<CGAL::Simple_cartesian<CGAL::Interval_nt<false>CGAL::Exact_converter<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Simple_cartesian<CGAL::Gmpq> >, CGAL::Approx_converter<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Simple_cartesian<CGAL::Interval_nt<false> > >, true>::operator()<CGAL::Point_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmp at >, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > > >, CGAL::Point_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > > >, CGAL::Point_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > > >,(CGAL::Point_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>,CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CG #7 CGAL::Triangulation_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_data_structure_2<CGAL::Triangulation_hierarchy_vertex_base_2<CGAL::indexedVertex<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_vertex_base_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > at , CGAL::Triangulation_ds_vertex_base_2<void> > > >, CGAL::indexedFace<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_face_base_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_ds_face_base_2<void> > > >::orientation(CGAL::Point_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>,CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::In #8 CGAL::Triangulation_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_data_structure_2<CGAL::Triangulation_hierarchy_vertex_base_2<CGAL::indexedVertex<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_vertex_base_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > at , CGAL::Triangulation_ds_vertex_base_2<void> > > >, CGAL::indexedFace<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_face_base_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_ds_face_base_2<void> > > >::march_locate_2D(CGAL::CGALi::CC_iterator<CGAL::Compact_container<CGAL::indexedFace<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>,CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Inte #9 CGAL::Triangulation_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_data_structure_2<CGAL::Triangulation_hierarchy_vertex_base_2<CGAL::indexedVertex<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_vertex_base_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > at , CGAL::Triangulation_ds_vertex_base_2<void> > > >, CGAL::indexedFace<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_face_base_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_ds_face_base_2<void> > > >::locate(CGAL::Point_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>,CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interva #10 CGAL::Triangulation_hierarchy_2<CGAL::Delaunay_triangulation_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_data_structure_2<CGAL::Triangulation_hierarchy_vertex_base_2<CGAL::indexedVertex<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_vertex_base_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter< at GAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_ds_vertex_base_2<void> > > >, CGAL::indexedFace<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_face_base_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_ds_face_base_2<void> > > > >::locate_in_all(CGAL::Point_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>,CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<fals #11 CGAL::Triangulation_hierarchy_2<CGAL::Delaunay_triangulation_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_data_structure_2<CGAL::Triangulation_hierarchy_vertex_base_2<CGAL::indexedVertex<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_vertex_base_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter< at GAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_ds_vertex_base_2<void> > > >, CGAL::indexedFace<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_face_base_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::NT_converter<CGAL::Gmpq, CGAL::Interval_nt<false> > > >, CGAL::Triangulation_ds_face_base_2<void> > > > >::insert(CGAL::Point_2<CGAL::Lazy_kernel<CGAL::Simple_cartesian<CGAL::Gmpq>,CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, CGAL::Cartesian_converter<CGAL::Simple_cartesian<CGAL::Gmpq>, CGAL::Simple_cartesian<CGAL::Interval_nt<false> >, C
#12 Foam::CV2D::insertPoint(Foam::Vector2D<double> const&, int) at ~/OpenFOAM/OpenFOAM-
dev/applications/utilities/mesh/generation/CV2DMesher/CV2DI.H:37
#13 Foam::CV2D::newPoints(double) at ~/OpenFOAM/OpenFOAM-
dev/applications/utilities/mesh/generation/CV2DMesher/CV2D.C:668
#14 main at ~/OpenFOAM/OpenFOAM-
dev/applications/utilities/mesh/generation/CV2DMesher/CV2DMesher.C:87
#15 __libc_start_main in "/lib64/libc.so.6"
#16 _start at /usr/src/packages/BUILD/glibc-2.9/csu/../sysdeps/x86_64/elf/start.S:116
Segmentation fault
- Re: [cgal-discuss] segmentation fault, 2D Delaunay triangulation, 3.4 and 3.5-beta1, Manuel Caroli, 08/05/2009
- Re: [cgal-discuss] segmentation fault, 2D Delaunay triangulation, 3.4 and 3.5-beta1, Graham Macpherson, 08/05/2009
- Re: [cgal-discuss] segmentation fault, 2D Delaunay triangulation, 3.4 and 3.5-beta1, Manuel Caroli, 08/05/2009
- Re: [cgal-discuss] segmentation fault, 2D Delaunay triangulation, 3.4 and 3.5-beta1, Graham Macpherson, 08/06/2009
- Re: [cgal-discuss] segmentation fault, 2D Delaunay triangulation, 3.4 and 3.5-beta1, Manuel Caroli, 08/05/2009
- Re: [cgal-discuss] segmentation fault, 2D Delaunay triangulation, 3.4 and 3.5-beta1, Graham Macpherson, 08/05/2009
Archive powered by MHonArc 2.6.16.