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.
Changelog
General
- 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_CODE
can 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
CONTINUE
mode for assertion failures. Functions that allow to change the assertion behaviour are now declared in<CGAL/assertions_behaviour.h>
. - Qt3 based demos are still there but the documentation has been removed
as the
CGAL::Qt_Widget
will be deprecated. - Qt4 based demos use the Qt GraphicsView framework and the libQGLViewer.
Installation
install_cgal
has 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.
Number Types
- 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.
Linear Kernel
- We recommend that you use the
object_cast()
function instead ofassign()
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_2
andConstruct_supporting_line_3
have 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_3
as well as predicates and constructions have been added to the kernel. - The missing intersection/do_intersect between two
Line_3
objects have been added.
3D Triangulations
- 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.
STL Extensions:
- 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
by
<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.
2D Arrangements
- Changed the name of the arrangement package from
Arrangement_2
toArrangement_on_surface_2
to 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/Arr_postscript_file_stream.h
andIO/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_curve()
,CGAL::insert_curves()
,CGAL::insert_x_monotone_curve()
, andCGAL::insert_x_monotone_curves()
with a single overloaded functionCGAL::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 conceptsGpsTraitsGeneralPolygon_2
andGpsTraitsGeneralPolygonWithHoles_2
. Fixed the definition of the two nested required typesPolygon_2
andPolygon_with_holes_2
of theGeneralPolygonSetTraits_2
concept. They must model now the two new concepts above. - Added a default template parameter to
General_polygon_set_2
to 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 aPolygon_2
). - Added the functionality to compute (or to approximate) the inner offset of a polygon.