mirror of https://github.com/CGAL/cgal
494 lines
20 KiB
Plaintext
494 lines
20 KiB
Plaintext
|
|
----------------------------- Release 2.4 ------------------------------------
|
|
Version 2.4 differs from version 2.3 in the platforms that are supported and
|
|
in functionality. There have also been a number of bug fixes for this release.
|
|
|
|
Additional supported platforms:
|
|
Microsoft Visual C++, version 7.
|
|
SunPro 5.3 (with patch 111685-05)
|
|
g++ 3.1
|
|
|
|
The following functionality has been added or changed:
|
|
|
|
Kernels:
|
|
|
|
Point_d has been removed from the 2D and 3D kernels. This type is
|
|
now available from the d-dimensional kernel only.
|
|
|
|
Basic Library:
|
|
|
|
2D Polygon Partition
|
|
- Traits requirements for optimal partitioning have been changed slightly.
|
|
|
|
2D Sweep line
|
|
- A new package that implements a sweep-line algorithm to compute
|
|
arrangements of curves for different families of curves, which are
|
|
not necessarily line segments (e.g., it also works for circular arcs).
|
|
The resulting output can be the list of vertex points, the resulting
|
|
subcurves or a planar map.
|
|
|
|
2D Planar Maps and Arrangements
|
|
|
|
- New quicker insertion functions of Planar_map_2 for cases where more
|
|
precomputed information is available regarding the position of
|
|
the inserted curve in the map.
|
|
|
|
- New query function for planar maps that determines whether a given
|
|
point is within a given face of the planar map.
|
|
|
|
- New iterator over edges of planar maps in addition to the existing
|
|
iterator over halfedges.
|
|
|
|
- New copy constructor and assignment operator for arrangements.
|
|
|
|
Polyhedral Surface
|
|
- new design introduced with release 2.3 now supported by VC7 compiler
|
|
|
|
- Extended functionality of Polyhedron_incremental_builder:
|
|
absolute indexing allows one to add new surfaces to existing ones.
|
|
|
|
2D Triangulation
|
|
|
|
- There is a new triangulation data structure replacing the two
|
|
previous ones. This new data structure is coherent with the 3d
|
|
triangulation data structure and offer the advantages of both
|
|
previous ones. Backward compatibility is ensured and this change
|
|
is transparent for the user of triangulation classes.
|
|
- Constrained and Delaunay constrained triangulations are now able
|
|
to handle intersecting input constraints.
|
|
The behavior of constrained triangulations with repect to
|
|
intersection of input constraints can be customized using
|
|
an intersection tag.
|
|
- A new class Constrained_triangulation_plus offers a constrained
|
|
hierarchy on top of a constrained triangulations. This additionnal
|
|
data structure describes the subdivision of the original constraints
|
|
into edges of the triangulations.
|
|
|
|
|
|
3D Triangulation
|
|
- Running time improved by a better and more compact management of
|
|
memory allocation
|
|
|
|
- Various improvements and small functionalities added:
|
|
|
|
- Triangulation_3<GT,Tds>::triangle() returns a triangle oriented
|
|
towards the outside of the cell c for facet (c,i)
|
|
- New function insert(Point, Locate_type, Cell_handle, int, int)
|
|
which avoids the location step.
|
|
- New function to get access to cells in conflict in a Delaunay
|
|
insertion : find_conflicts() and insert_in_hole()
|
|
- New function TDS::delete_cells(begin, end).
|
|
- New functions : degree(v), reorient(), remove_decrease_dimension(),
|
|
remove_from_simplex().
|
|
|
|
- Changes of interface:
|
|
|
|
- vertices and cells are the same for the triangulation data
|
|
structure and the geometric triangulation
|
|
- the triangulation data structure uses Vertex_handle (resp
|
|
Cell_handle) instead of Vertex* (resp Cell*).
|
|
- incident_cells() and incident_vertices() are templated by output
|
|
iterators
|
|
- changes in the iterators and circulators interface:
|
|
- Iterators and circulators are convertible to handles
|
|
automatically, no need to call "->handle()" anymore.
|
|
- Vertex_iterator split into All_vertices_iterator and
|
|
Finite_vertices_iterator (and similar for cells...).
|
|
- TDS::Edge/Facet iterators now support operator->.
|
|
|
|
2D Search structures
|
|
- additional range search operations taking a predicate functor
|
|
|
|
Support Library:
|
|
|
|
Qt_widget
|
|
- We have added a new class for visualization of 2D CGAL objects.
|
|
It is derived from Trolltech's Qt class QWidget. This code is
|
|
distributed under a dual QPL and commercial license.
|
|
- Some demos were developed for the following packages: 2D Alpha shapes,
|
|
2D Convex Hull, Largest empty 2D rectangle, Maximum k-gon,
|
|
Minimum ellipse, Minimum 2D quadrilateral, 2D polygon partitioning
|
|
2D regular and constrained triangulation.
|
|
- Tutorials are available to help users get used to Qt_widget.
|
|
|
|
Timer
|
|
- Fixed Timer class (for user process time) to have no wrap-around
|
|
anymore on Posix-compliant systems.
|
|
|
|
The following functionality is no longer supported:
|
|
|
|
- Planar maps of infinite curves (the so-called planar map bounding-box).
|
|
|
|
|
|
Bugs in the following packages have been fixed:
|
|
3D Convex hull, 2D Polygon partition, simple polygon generator,
|
|
2D intersections
|
|
|
|
Also, attempts have been made to assure compatability with upcoming LEDA
|
|
releases that introduce the leda namespace.
|
|
|
|
Known problems:
|
|
|
|
- 2D Nef Polyhedra contains a memory leak. Memory problems are also
|
|
the likely cause of occasional run-time errors on some platforms.
|
|
- The d-dimensional convex hull computation produces run-time errors on
|
|
some platforms because of memory management bugs.
|
|
- The new Halfedge Data Structure design introduced with release 2.3
|
|
does not work on VC6. See the release notes in the manual for more
|
|
information.
|
|
|
|
- The following deficiencies relate to planar maps, planar maps of
|
|
intersecting curves (pmwx), arrangements and sweep line.
|
|
|
|
- On KCC, Borland and SunPro we guarantee neither compilation nor
|
|
correct execution for all of the packages above.
|
|
- On VC6 and VC7 we guarantee neither compilation nor correct
|
|
execution of the sweep line package.
|
|
- On CC (on Irix 6.5) the trapezoidal decomposition point location
|
|
strategy is problematic when used with planar maps, pmwx, or
|
|
arrangements (mind that this is the default for planar maps).
|
|
- On CC (on Irix 6.5) sweep line with polyline traits does not compile
|
|
(mind that the so-called leda polyline traits does compile).
|
|
- On g++ (on Irix 6.5) the segment-circle (Arr_segment_circle_traits_2)
|
|
traits does not compile for any of the above packages.
|
|
|
|
|
|
----------------------------- Release 2.3 ------------------------------------
|
|
|
|
Version 2.3 differs from version 2.2 in the platforms that are supported and
|
|
in functionality.
|
|
|
|
Additional supported platforms:
|
|
|
|
Gnu g++ 3.0 on Solaris, Linux
|
|
|
|
The following functionality has been added:
|
|
|
|
Kernels:
|
|
|
|
- The 2D and 3D kernels now serve as models of the new kernel concept
|
|
described in the recent paper, "An Adaptable and Extensible Geometry
|
|
Kernel" by Susan Hert, Micheal Hoffmann, Lutz Kettner, Sylvain Pion,
|
|
and Michael Seel to be presented at WAE 2001 (and soon available as
|
|
a technical report). This new kernel is completely compatible with
|
|
the previous design but is more flexible in that it allows geometric
|
|
predicates as well as objects to be easily exchanged and adapted
|
|
individually to users' needs.
|
|
|
|
- A new kernel called Simple_homogeneous<> is available. It is equivalent
|
|
to Homogeneous<> but without reference-counted objects.
|
|
|
|
- A new kernel called Filtered_kernel<> is available that allows one to
|
|
build kernel traits classes that use exact and efficient predicates.
|
|
|
|
- There are two classes, Cartesian_converter<> and Homogeneous_converter
|
|
that allows one to convert objects between different Cartesian and
|
|
homogeneous kernels, respectively.
|
|
|
|
- A new d-dimensional kernel, Kernel_d is available. It provides diverse
|
|
kernel objects, predicates and constructions in d dimensions with two
|
|
representations based on the kernel families Cartesean_d and Homogeneous_d
|
|
|
|
Basic Library:
|
|
|
|
Almost all packages in the basic library have been adapted to the
|
|
new kernel design to realize the flexibility this design makes possible.
|
|
In several packages, this means that the traits class requirements have
|
|
changed to conform to the function objects offered in the kernels so the
|
|
kernels themselves can be used as traits classes in many instances.
|
|
|
|
2D Convex Hull
|
|
- The traits requirements have changed slightly.
|
|
|
|
3D Convex Hull
|
|
- The convex_hull_3 function now uses a new implementation of the
|
|
quickhull algorithm that no longer requires LEDA.
|
|
- A new convex_hull_incremental_3 function based on the new d-dimensional
|
|
convex hull class is available for comparison purposes
|
|
|
|
Convex_hull_d, Delaunay_d
|
|
Two new application classes offering the calculation of d-dimensional
|
|
convex hulls and delaunay triangulations
|
|
|
|
Polygon
|
|
|
|
- The traits class requirements have been changed.
|
|
- The simplicity test has a completely new implementation.
|
|
- Properties like convexity, simplicity and area can now be cached by
|
|
polygons. You need to set a flag to select this behaviour.
|
|
|
|
Planar Nef Polyhedra
|
|
A new class (Nef_polyhedron_2) representing planar Nef polyhedra =
|
|
rectilinearly bounded points sets that are the result of binary and
|
|
topological operations starting from halfplanes.
|
|
|
|
Planar Polygon Partitioning
|
|
New package offering functions to partition planar polygons into
|
|
convex and y-monotone pieces.
|
|
|
|
Planar Maps and Arrangements
|
|
|
|
- A new class Planar_map_with_intersections_2<Planar_map> for planar maps
|
|
of possibly intersecting, possibly non-x-monotone, possibly overlapping
|
|
curves (like Arrangement_2 but without the hierarchy tree).
|
|
|
|
- I/O utilities for planar maps and arrangements for textual and
|
|
graphical streams. (It is possible to save and later reload built
|
|
planar maps or arrangements.)
|
|
|
|
- New arrangement traits class for line segments and circular arcs
|
|
(Arr_segment_circle_traits<NT>).
|
|
|
|
- New faster traits for polylines specialized for using the LEDA
|
|
rational kernel (Arr_leda_polylines_traits). The LEDA traits for
|
|
segments was also made faster.
|
|
|
|
- A new point location strategy (Pm_simple_point_location<Planar_map>).
|
|
|
|
Halfedge Data Structure
|
|
The halfedge data structure has been completely revised. The new design
|
|
is more in line with the STL naming scheme and it provides a safe and
|
|
coherent type system throughout the whole design (no void* pointers
|
|
anymore), which allows for better extendibility. A user can add new
|
|
incidences in the mesh easily. The new design also uses standard
|
|
allocators with a new template parameter that has a suitable default.
|
|
|
|
The old design is still available, but its use is deprecated, see the
|
|
manual of deprecated packages for its documentation. Reported bugs in
|
|
copying the halfedge data structure (and therefore also polyhedral
|
|
surfaces) have been fixed in both designs. Copying a list based
|
|
representation is now based on hash maps instead of std::map and
|
|
therefore considerably faster.
|
|
|
|
Polyhedral Surface
|
|
The polyhedral surface has been rewritten to work with the new
|
|
halfedge data structure design. The user level interface of the
|
|
CGAL::Polyhedron_3 class is almost backwards compatible with the
|
|
previous class. The exceptions are the template parameter list,
|
|
everything that relies on the flexibility of the underlying
|
|
halfedge data structure, such as a self written facet class, and
|
|
that the distinction between supported normals and supported planes
|
|
has been removed. Only planes are supported. See the manuals for
|
|
suggestions how to handle normals instead of planes.
|
|
|
|
More example programs are provided with polyhedral surfaces,
|
|
for example, one about Euler operator and one computing a subdivision
|
|
surface given a control mesh as input.
|
|
|
|
The old design is still available for backwards compatibility and to
|
|
support older compiler, such as MSVC++6.0. For the polyhedral surface,
|
|
old and new design cannot be used simultaneously (they have identical
|
|
include file names and class names). The include files select
|
|
automatically the old design for MSVC++6.0 and the new design
|
|
otherwise. This automatism can be overwritten by defining appropriate
|
|
macros before the include files. The old design is selected with the
|
|
CGAL_USE_POLYHEDRON_DESIGN_ONE macro. The new design is selected with
|
|
the CGAL_USE_POLYHEDRON_DESIGN_TWO macro.
|
|
|
|
|
|
2D Triangulation
|
|
|
|
The geometric traits class requirements have been changed to conform
|
|
to the new CGAL kernels. CGAL kernel classes can be used as traits
|
|
classes for all 2D triangulations except for regular triangulations.
|
|
|
|
Additionnal functionality:
|
|
- dual method for regular triangulations (to build a power diagram)
|
|
- unified names and signatures for various "find_conflicts()"
|
|
member functions in Delaunay and constrained Delaunay triangulation.
|
|
- As an alternative to the simple insert() member function,
|
|
insertion of points in those triangulation can be performed using the
|
|
combination of find_conflicts() and star_hole() which eventually
|
|
allows the user to keep track of deleted faces.
|
|
|
|
More demos and examples
|
|
|
|
3D Triangulation
|
|
|
|
Major improvements
|
|
- A new class Triangulation_hierarchy_3 that allows a faster point
|
|
location, and thus construction of the Delaunay triangulation
|
|
- A new method for removing a vertex from a Delaunay triangulation
|
|
that solves all degenerate cases
|
|
- Running time of the usual location and insertion methods improved
|
|
|
|
A bit more functionality, such as
|
|
- New geomview output
|
|
- dual methods in Delaunay triangulations to draw the Voronoi diagram
|
|
|
|
More demos and examples
|
|
|
|
Changes in interface
|
|
- Traits classes requirements have been modified
|
|
- The kernel can be used directly as a traits class (except for
|
|
regular triangulation)
|
|
- insert methods in Triangulation_data_structure have a new interface
|
|
|
|
3D Alpha shapes
|
|
A new class (Alpha_shapes_3) that computes Alpha shapes of point sets
|
|
in 3D is available.
|
|
|
|
Geometric Optimisation
|
|
|
|
The traits requirements for Matrix_search and Min_quadrilateral_2
|
|
have been changed to bring them in line with the CGAL kernels.
|
|
|
|
Point_set_2
|
|
|
|
- now independent of LEDA, based on the CGAL Delaunay triangulation and
|
|
converted to kernel traits
|
|
- function template versions of the provided query operations
|
|
|
|
|
|
Support Library:
|
|
----------------
|
|
In_place_list has a new third template parameter
|
|
(with a suitable default) for an STL-compliant allocator.
|
|
|
|
Unique_hash_map is a new support class.
|
|
|
|
Geomview_stream :
|
|
- Geomview version 1.8.1 is now required.
|
|
- no need to have a ~/.geomview file anymore.
|
|
- new output operators for triangulations.
|
|
- new output operators for Ray_2, Line_2, Ray_3, Line_3, Sphere_3.
|
|
- various new manipulators.
|
|
|
|
Number types :
|
|
- Lazy_exact_nt<NT> is a new number type wrapper to speed up exact
|
|
number types.
|
|
- MP_Float is a new multiprecision floating point number type. It can
|
|
do exact additions, subtractions and multiplications over
|
|
floating point values.
|
|
|
|
Window stream
|
|
In cooperation with Algorithmic Solutions, GmBH (distributors of
|
|
the LEDA library), we can now offer a visualization package
|
|
downloadable in binary form that support visualization on a ported
|
|
version of the LEDA window lib.
|
|
|
|
|
|
----------------------------- Release 2.2 ------------------------------------
|
|
|
|
Version 2.2 differs from version 2.2 in the platforms that are supported and
|
|
in functionality.
|
|
|
|
Additional supported platforms:
|
|
|
|
- the KAI compiler (4.0) on Solaris 5.8
|
|
- Borland C++ (5.5)
|
|
|
|
The following functionality has been added:
|
|
|
|
- There is a new, non-reference-counted kernel, Simple_cartesian. Because
|
|
reference counting is not used, and thus coordinates are stored within a
|
|
class, debugging is easier using this kernel. This kernel can also be
|
|
faster in some cases than the reference-counted Cartesian kernel.
|
|
|
|
- New optimisation algorithms:
|
|
|
|
-- Min_annulus_d - Algorithm for computing the smallest enclosing
|
|
annulus of points in arbitrary dimension
|
|
-- Polytope_distance_d - Algorithm for computing the (squared)
|
|
distance between two convex polytopes in arbitrary dimension
|
|
-- Width_3 - Algorithm for computing the (squared) width of points
|
|
sets in three dimensions
|
|
|
|
- 2D Triangulations
|
|
|
|
-- There are now two triangulation data structures available in CGAL.
|
|
The new one uses a list to store the faces and allows one to
|
|
represent two-dimensional triangulations embedded in three spaces
|
|
as well as planar triangulations.
|
|
-- The triangulation hierarchy which allows fast location query
|
|
is now available.
|
|
|
|
- Inifinite objects can now be included in planar maps.
|
|
|
|
- Removal as well as insertions of vertices for 3D Delaunay triangulations
|
|
is now possible.
|
|
|
|
- A generator for ``random'' simple polygons is now available.
|
|
|
|
- In directory demo/Robustness, programs that demonstrate typical robustness
|
|
problems in geometric computing are presented along with the solutions to
|
|
these problems that CGAL provides.
|
|
|
|
The following functionality has been removed:
|
|
|
|
-- The binary operations on polygons (union, intersection ...) have been
|
|
removed since the code could not be adapted to all supported
|
|
platforms. Arrangements can often be used as a substitute.
|
|
|
|
--------------------------------- Release 2.1 --------------------------------
|
|
|
|
Version 2.1 differs from version 2.0 in the platforms that are supported and
|
|
in functionality.
|
|
|
|
Supported platforms:
|
|
|
|
- the newest gnu compiler (2.95.2) on Sun, SGI, Linux and Windows.
|
|
- the Microsoft Visual C++ compiler, version 6.
|
|
- the mips CC compiler version 7.3 under Irix.
|
|
|
|
Support for the old g++ compiler (2.8) and for mips CC 7.2 has been dropped.
|
|
|
|
The following functionality has been added:
|
|
|
|
- Alpha shapes and weighted alpha shapes in 2D. Alpha shapes are a
|
|
generalization of the convex hull of a point set.
|
|
- Arrangements in 2D. Arrangements are related to and based on planar maps.
|
|
The major difference between the two is that curves are allowed to
|
|
intersect in the case of arrangements.
|
|
- Extensions to triangulations in 2D. Constrained triangulations are now
|
|
dynamic: they support insertions of new constraint as well as removal of
|
|
existing constraints. There are also constrained Delaunay triangulations.
|
|
- Triangulations in 3D were added, both Delaunay triangulations and regular
|
|
triangulations.
|
|
- Min_quadrilateral optimisations have been added. These are algorithms to
|
|
compute the minimum enclosing rectangle/parallelogram (arbitrary
|
|
orientation) and the minimum enclosing strip of a convex point set.
|
|
- 2d Point_set is a package for 2d range search operations, Delaunay
|
|
triangulation, nearest neighbor queries. This package works only if
|
|
LEDA is installed.
|
|
- Support for GeoWin visualization library. This also depends on LEDA.
|
|
- Support for using the CLN number type together with CGAL.
|
|
|
|
----------------------------- Release 2.0 ------------------------------------
|
|
|
|
The main difference from release 1.2 is the introduction of namespaces --
|
|
namespace std for code from the standard library and namespace CGAL for
|
|
the CGAL library.
|
|
|
|
----------------------------- Release 1.2 ------------------------------------
|
|
|
|
Additions to release 1.1 include:
|
|
- topological map
|
|
- planar map overlay
|
|
- regular and constrained triangulations
|
|
|
|
----------------------------- Release 1.1 ------------------------------------
|
|
|
|
Additions to release 1.0 include:
|
|
|
|
- 3D intersections
|
|
- kD points
|
|
- 3D convex hull
|
|
- kD smallest enclosing sphere
|
|
|
|
|
|
----------------------------- Release 1.0 ------------------------------------
|
|
|
|
Additions to release 0.9 include:
|
|
|
|
- Polyhedral surfaces
|
|
- Halfedge Data Structure
|
|
- Planar maps
|
|
|
|
----------------------------- Release 0.9 ------------------------------------
|
|
|
|
Initial (beta) release of the CGAL library.
|
|
|
|
------------------------------------------------------------------------------
|
|
EOF
|