CGAL 3.4 differs from CGAL 3.3.1 in the platforms that are supported and in functionality. There have also been a number of bug fixes for this release.
- GNU g++ 4.3 supported. Support for g++ 3.3 is dropped.
- Visual 9 supported. Support for Visual 7 is dropped.
- Boost version 1.33 at least is now required.
- CGAL now depends on Boost.Threads, which implies to link against a compiled part of Boost.
- The new macro
CGAL_NO_DEPRECATED_CODEcan be defined to disable deprecated code, helping users discover if they rely on code that may be removed in subsequent releases.
- Assertion behaviour:
It is not possible anymore to set the
CONTINUEmode for assertion failures. Functions that allow to change the assertion behaviour are now declared in
- Qt3 based demos are still there but the documentation has been removed
CGAL::Qt_Widgetwill be deprecated.
- Qt4 based demos use the Qt GraphicsView framework and the libQGLViewer.
install_cgalhas been replaced by CMake.
Polynomial (new package)
- This package introduces a concept
Polynomial_d, a concept for multivariate polynomials in d variables.
Modular Arithmetic (new package)
- This package provides arithmetic over finite fields.
- The counter Interval_nt::number_of_failures() has been removed, replaced by a profiling counter enabled with CGAL_PROFILE.
- Fix of a bug in
CORE/Expr.h; as a consequence, the arrangement demo works properly when handling arrangements of conics, for example, when defining an arc with 5 points.
3D Spherical Geometry Kernel (new package)
- This package is an extension of the linear CGAL Kernel. It offers functionalities on spheres, circles, circular arcs and line segments in the 3D space.
- We recommend that you use the
object_cast()function instead of
assign()to extract an object from a CGAL::Object, for efficiency reasons.
- The Kernel archetypes provided by the 2D/3D linear kernel have been removed.
- The deprecated linear kernel functors
Construct_supporting_line_3have been removed.
- Ambiant_dimension and Feature_dimenison have been added to retrieve the potentially compile-time dimension of a space or of an object.
barycenter()functions have been added.
- The geometric object
Circle_3as well as predicates and constructions have been added to the kernel.
- The missing intersection/do_intersect between two
Line_3objects have been added.
- Removed the deprecated functions Cell:mirror_index() and Cell::mirror_vertex().
- Derecursification of two functions that in some cases lead to stack overflows.
3D Nef Polyhedron
- Added n-ary union/intersection.
- Added intersection with halfspace under standard kernel.
- Added constructor for polylines.
CGAL and the Qt4 GraphicsView (new package)
- 2D CGAL Kernel objects and many data structures have can be rendered in a QGraphicsView.
- The functor adaptors for argument binding and composition
(bind_, compose, compose_shared, swap_, negate, along with the helper
functions set_arity_* and Arity class and Arity_tag typedefs) which were provided
<CGAL/functional.h>have been removed. Please use the better boost::bind mecanism instead. The concept AdaptableFunctor has been changed accordingly such that only a nested result_type is required.
- The accessory classes Twotuple, Threetuple, Fourtuple and Sixtuple are also deprecated (use CGAL::array instead).
- CGAL::Triple and CGAL::Quadruple are in the process of being replaced by boost::tuple. As a first step, we strongly recommend that you replace the direct access to the data members (.first, .second, .third, .fourth), by the get<i>() member function; and replace the make_triple and make_quadruple maker functions by make_tuple. This way, in a further release, we will be able to switch to boost::tuple more easily.
- The class CGAL::Uncertain<> has been documented. It is typically used to report uncertain results for predicates using interval arithmetic, and other filtering techniques.
- Changed the name of the arrangement package from
Arrangement_on_surface_2to reflect the potential capabilities of the package to construct and maintain arrangements induced by curves embedded on two dimensional surfaces in three space. Most of these capabilities will become available only in future releases though.
- Enhanced the geometry traits concept to handle arrangements embedded on surfaces. Each geometry-traits class must now define the ‘Boundary_category’ tag.
- Fixed a bug in
Arr_polyline_traits_2.h, where the operator that compares two curves failed to evaluate the correct result (true) when the curves are different, but their graphs are identical.
- Permanently removed
IO/Polyline_2_postscript_file_stream.h, as they depend on obsolete features and LEDA.
- Fixed several bugs in the arrangement demo and enhanced it. e.g., fixed background color change, allowed vertex coloring , enabled “smart” color selection, etc.
- Enhanced the arrangement demo with new features, such as allowing the abortion of the merge function (de-select), updated the how-to description, etc.
- Replaced the functions
CGAL::insert_x_monotone_curves()with a single overloaded function
CGAL::insert(). The former 4 functions are now deprecated, and may no longer be supported in future releases.
Envelopes of Surfaces in 3D
- Fixed a bug in the computation of the envelope of unbounded planes caused by multiple removals of vertices at infinity.
2D Regularized Boolean Set-Operations
- Fixed a bug in
connect_holes()that caused failures when connecting holes touching the outer boundary.
- Fixed the concept
GeneralPolygonSetTraits_2. Introduced two new concepts
GpsTraitsGeneralPolygonWithHoles_2. Fixed the definition of the two nested required types
GeneralPolygonSetTraits_2concept. They must model now the two new concepts above.
- Added a default template parameter to
General_polygon_set_2to allow users to pass their specialized DCEL used to instantiate the underlying arrangement.
- Enhanced the BOP demo to use multiple windows.
2D Minkowski Sums
- Fixed a few bugs in the approximate offset function, making it robust to highly degenerate inputs.
- Fixed a bug in the exact Minkowski sum computation when processing degenerate inputs that induce overlapping of contiguous segments in the convolution cycles.
- Optimized the approximate offset function (reduced time consumption up to a factor of 2 in some cases).
- Added functionality to compute the offset (or to approximate the offset) of a
Polygon_with_holes_2(and not just of a
- Added the functionality to compute (or to approximate) the inner offset of a polygon.