merge from trunk

This commit is contained in:
Laurent Rineau 2011-04-20 13:56:23 +00:00
commit b4bf7e3f58
28 changed files with 263 additions and 133 deletions

3
.gitattributes vendored
View File

@ -166,13 +166,13 @@ Algebraic_kernel_d/include/CGAL/RS/p.h -text
Algebraic_kernel_d/include/CGAL/RS/pagealloc.h -text
Algebraic_kernel_d/include/CGAL/RS/polynomial_1_constructors.h -text
Algebraic_kernel_d/include/CGAL/RS/polynomial_1_eval.h -text
Algebraic_kernel_d/include/CGAL/RS/polynomial_1_functors.h -text
Algebraic_kernel_d/include/CGAL/RS/polynomial_1_io.h -text
Algebraic_kernel_d/include/CGAL/RS/polynomial_1_member.h -text
Algebraic_kernel_d/include/CGAL/RS/polynomial_1_operators.h -text
Algebraic_kernel_d/include/CGAL/RS/polynomial_1_parser.h -text
Algebraic_kernel_d/include/CGAL/RS/polynomial_1_utils.h -text
Algebraic_kernel_d/include/CGAL/RS/polynomial_converter.h -text
Algebraic_kernel_d/include/CGAL/RS/polynomial_functors.h -text
Algebraic_kernel_d/include/CGAL/RS/pp.h -text
Algebraic_kernel_d/include/CGAL/RS/primes.h -text
Algebraic_kernel_d/include/CGAL/RS/refine_1.h -text
@ -1901,6 +1901,7 @@ Maintenance/public_release/announcement/CGAL-3.6-beta1 -text
Maintenance/public_release/announcement/CGAL-3.6.1 -text
Maintenance/public_release/announcement/CGAL-3.7 -text
Maintenance/public_release/announcement/CGAL-3.7-beta1 -text
Maintenance/public_release/announcement/CGAL-3.8 -text
Maintenance/public_release/announcement/CGAL-3.8-beta -text
Maintenance/public_release/scripts/precompiled_demos_zips -text
Maintenance/public_release/scripts/prepare_release -text

View File

@ -22,7 +22,7 @@
#include <CGAL/Polynomial.h>
#include <CGAL/Polynomial_traits_d.h>
#include <CGAL/Polynomial_type_generator.h>
#include <CGAL/RS/functors.h>
#include <CGAL/RS/functors_1.h>
template <class _C,class _G=CGAL::Rsgcd_1>
struct Algebraic_kernel_rs_1{

View File

@ -189,7 +189,7 @@ class Ugcd:public Primes{
return dG;
};
}; // class Primes
}; // class Ugcd
} // namespace RS_MGCD
} // namespace CGAL

View File

@ -134,7 +134,7 @@ the check fails, an error message similar to
\end{verbatim}
%
is written to the standard error stream and the program is aborted. If
an additional explanantion should be given to the user,%
an additional explanation should be given to the user,%
\ccIndexSubitem{checks}{adding failure message to}
macros \ccc{CGAL_<check_type>_msg(<Cond>,<Msg>)} can be used. The text in
\ccc{<Msg>} is just appended to the failure message given above.

View File

@ -241,7 +241,7 @@ function that returns an instance of this functor. The name of this
function should be the (uncapitalized) name of the
functor followed by the suffix \ccc{_object}.%
%\index{object functions@{\ccFont \_object} functions}
For example, the function that retuns an instance of the
For example, the function that returns an instance of the
\ccc{Less_xy_2} functor is called \ccc{less_xy_2_object}.
\ccIndexSubitemEnd{naming scheme}{kernel traits}
@ -406,7 +406,7 @@ optional affiliation or e-mail address.
For example and demo programs, the inclusion of the copyright notice is not
necessary as this will get in the way if the program is included in the
documentation. However, these files should always contain the name of
the file realtive to the \texttt{CGAL\_HOME} directory
the file relative to the \texttt{CGAL\_HOME} directory
(\eg, \nonlinkedpath|examples/Convex_hull_3/convex_hull_3.cpp|)
so the file can be located when seen out of context (\eg, in the documentation
or from the demos web page).

View File

@ -27,7 +27,7 @@ to do in order to evaluate handles and iterators during the debugging phase
\section{Graphical debugging\label{sec:graphical_debugging}}
\ccIndexSubitemBegin{debugging}{graphical}
\cgal\ packages usually provide a graphical demo that demostrates the
\cgal\ packages usually provide a graphical demo that demonstrates the
functionality in the package. Many times this demo is simply a fancier
version of a program that was used in the early stages of development as a
(graphical) debugging tool. In many cases, the output of a geometric
@ -51,7 +51,7 @@ to develop
\ccIndexMainItemBegin{cross-checker}
A cross-checker is a powerful means to allow for efficient
maintainence of your code. A cross-checker for a given concept is a
maintenance of your code. A cross-checker for a given concept is a
model of that concept \ccIndexMainItemDef{cross-checker} that is
constructed from another model or models (one of which is the one you
wish to check). In order to implement the functionality required by
@ -111,7 +111,7 @@ bool curve_is_vertical(const X_curve & cv) const
}
\end{verbatim}
Notice that the class \ccc{Binary_triats_checker} has template parameters
Notice that the class \ccc{Binary_traits_checker} has template parameters
named \ccc{Traits1} and \ccc{Traits2}, and a third parameter named
\ccc{Adapter}. One of the traits classes is the one to be tested and the
other is (presumably) a traits class that always gives the right answer.
@ -185,7 +185,7 @@ and similar problems:
instead.
\end{itemize}
Note: You can also use watches to continously examine such values during
Note: You can also use watches to continuously examine such values during
execution.
\ccIndexSubitemEnd{debugging}{interactive}
\ccIndexSubitemEnd{handles}{and debugging}

View File

@ -42,7 +42,7 @@ programs. In particular:
\item As of release 2.3, you can include only the kernel include file
(\eg, \texttt{Cartesian.h} or \texttt{Homogeneous.h}) to get all
kernel classes as well as the \texttt{basic.h} file. All example
and demo programs should do this. For exmaple, you should have
and demo programs should do this. For example, you should have
simply:
\begin{verbatim}
#include <CGAL/Cartesian.h>
@ -150,7 +150,7 @@ here the better), you should do the following:
the image files should be as follows:
\centerline{\ccc{<program>_}\texttt{[big|small].[gif|jpg]}},
where \textit{$<$prog\_name$>$} is the name of the program from which
the screen shots were made (an nice menmonic name like
the screen shots were made (an nice mnemonic name like
\ccc{alpha_shapes_2} or \ccc{hull_of_int_points_2}).
\item Create the \texttt{.exe} file for use under Windows (probably with the

View File

@ -191,7 +191,7 @@ know the type of the representation object. It maintains a \ccc{Rep*} pointer.
Therefore, this pointer must be cast to a pointer to the actual type
in the classes derived from \ccc{Handle}. Moreover, since the \ccc{Handle}
calls the destructor for the representation through a \ccc{Rep*}, the
desctructor of \ccc{Rep} must be virtual. Finally, debugging is difficult,
destructor of \ccc{Rep} must be virtual. Finally, debugging is difficult,
again, because the \ccc{Handle} class does not know the type of the
representation object.
Making the actual type of the representation object a template parameter

View File

@ -9,28 +9,18 @@
% $Date$
% =============================================================================
\InternalOnly{
\chapter{Sources of Information\label{chap:info}}
\ccChapterRelease{Chapter Version: 1.0}
\ccChapterAuthor{Susan Hert ({\tt hert@mpi-sb.mpg.de})}
\section{Recommended reading\label{sec:recommended_reading}}
}
\ExternalOnly{
\chapter{Recommended Reading\label{chap:info}}
}
The following books and papers are recommended as references:
\begin{description}
\item[\cite{cgal:a-gps-98}] -- Mathew Austern's introduction to the \stl\
using the concept/model style of presentation. Austern wrote the
WWW \stl\ documenataion at SGI.
WWW \stl\ documentation at SGI.
\item[\cite{cgal:s-cpl-97}] -- Bjarne Stroustrup's introduction to
\CC\ and the \stl\ for those who already know some \CC.
Stroustrup is the designer and original implementor of \CC.
Stroustrup is the designer and original implementer of \CC.
\item[\cite{cgal:ll-cp-98}] -- Stanley Lippman and Josee Lajoie's
\CC\ primer.
@ -44,7 +34,4 @@ The following books and papers are recommended as references:
\item [\cite{hhkps-aegk-01}] -- The new \cgal\ kernel design paper.
\end{description}
\InternalOnly{
\input{Developers_manual/web_documents}
}

View File

@ -48,13 +48,13 @@ In \cgal, we also define the concept of
which behaves roughly
like a pointer to an object without an increment or decrement operation.
More details about handles and their requirements can be found in
the \ccAnchor{http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Circulator/Chapter_main.html}{chapter Circuators and Handles} of the Support Library part of \cgal\ manual.
the \ccAnchor{http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Circulator/Chapter_main.html}{chapter Circulators and Handles} of the Support Library part of \cgal\ manual.
Section~\ref{sec:handle_vs_it_vs_circ} below discusses when handles
should be used in your code.
\ccIndexMainItemEnd{handles}
The concepts of iterators is relatively well described in textbooks such as
Stroustrup's book ({\em The C++ Programming Langage} \cite{cgal:s-cpl-97})
Stroustrup's book ({\em The C++ Programming Language} \cite{cgal:s-cpl-97})
and Austern's book ({\em Generic Programming and the \stl} \cite{cgal:a-gps-98})
and in chapter \ccAnchor{http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Circulator/Chapter_main.html}{Handles and Circulators} of the
{\em Support Library} part of the \cgal\ manual.
@ -127,7 +127,7 @@ to get values from the input iterators,
statements like \ccc{*it = ...} are likely to be illegal.
On the other hand, output iterators are designed for write operations,
and the only legal use of the operator * of an output iterator
\ccc{it} is in the assignement \ccc{ *it = ....}.
\ccc{it} is in the assignment \ccc{ *it = ....}.
The code of a standard copy function of the \stl\
provides an example of both of these operations:
@ -186,9 +186,9 @@ and used to output values to the output stream to which it is bound.
\ccIndexSubitem{\ccFont ostream_iterator}{extension}
\cgal\ provides extensions of the classes \ccc{istream_iterator}
and \ccc{ostream_iterator}. The class \ccc{CGAL::Ostream_iterator<T,Stream>}
is an output iterator adaptator for the stream class \ccc{Stream} and value
is an output iterator adaptor for the stream class \ccc{Stream} and value
\ccIndexSubitem{adaptor}{output iterator}
type \ccc{T}. It provides output iterators that can be used to ouput values
type \ccc{T}. It provides output iterators that can be used to output values
of type \ccc{T} to objects of the class \ccc{Stream}.
For example, the following code fragment inserts a list of segments into
a window stream (\ie, it draws the segments in the window) using the
@ -473,7 +473,7 @@ Requirements:
\item Take care that decrement of the past-the-end value
is, in accordance with the standard, a legal operation for a
bidirectionnal iterator.
bidirectional iterator.
\ccIndexSubitem{iterators}{bidirectional}
\ccIndexSubsubitem{iterators}{past-the-end value}{decrement of}
This can, for example, be used to get the last element of

View File

@ -38,7 +38,7 @@ Section~\ref{sec:NewKernelTraits} below.
\section{Different kernels\label{sec:different_kernels}}
\cgal\ provides different kernels, thay can differ by internal
\cgal\ provides different kernels, they can differ by internal
representation of objects (e.g. cartesian versus homogeneous)
or provide different functionalities (e.g. circular kernel).
When creating a new package, the authors have to specify clearly

View File

@ -103,10 +103,12 @@ Requirements:
\begin{itemize}
\item all names defined by \cgal\ are in namespace \ccc{CGAL}
(including namespaces nested in namespace \ccc{CGAL}).
\item qualify calls of \ccc{is_zero}, \ccc{is_one}, \ccc{is_negative},
\ccc{is_positive}, \ccc{sign}, \ccc{abs}, \ccc{compare},
\ccc{square} by \texttt{CGAL\_NTS}.
\ccIndexSubitem{qualification}{\ccFont CGAL_NTS}%
\item explicitly prefix calls to template functions of CGAL
(such as \ccc{square}, \ccc{sign}, \ccc{abs}, \dots) by \ccc{CGAL::}
to ensure the functions used are the one from CGAL and not one from another
library. If you want to allow an optimized function from another library
to be used, then you should not qualify the call and document it explicitly
(if appropriate).
\end{itemize}
%% Recommendations:

View File

@ -115,7 +115,7 @@ example is the use of container classes and algorithms from the
\index{boost} \ccIndexMainItem{boost} During the past few years,
\cgal\ has moved towards using on concepts and ideas from the boost
libraries, as well as providing interfaces towards boost
libraries. These include the boost graph libary and the boost property
libraries. These include the boost graph library and the boost property
maps library.
{\bf Complete and Minimal Interfaces.}

View File

@ -104,7 +104,7 @@ piece of code that depends on whether you have \leda-4.0 or later.
\section{Identifying compilers and architectures\label{sec:which_compiler}}
\ccIndexSubitem{compilers}{identifying}
\ccIndexSubitem{macros}{for compiler identification}
\ccIndexSubitem{flag}{for copmiler}
\ccIndexSubitem{flag}{for compiler}
Every compiler defines some macros that allow you to identify it; see
the following table.
@ -224,7 +224,7 @@ give an overview. See the section on
\ccAnchor{http://www.cgal.org/Manual/doc_html/installation/Chapter_installation.html#Section_17}{troubleshooting} in the installation guide
for more explanation of some of these problems and known workarounds.
Be sure to have a look at \texttt{Installation/config/testfiles/} to have an
uptodate version of this list.
up-to-date version of this list.
\begin{description}
\item[{\tt CGAL\_CFG\_LONGNAME\_BUG}]~\\

View File

@ -24,7 +24,7 @@ some applications the fraction of bad inputs compared to all possible
inputs is small, but for other applications this fraction is large.
\cgal\ has a layered design. The correctness of some components depends
on the correctness of the componenents that are used. Correctness of
on the correctness of the components that are used. Correctness of
a component means behaving according to its (mathematical) specification.
Simply speaking, the source of the robustness problem is that the default
hardware-supported arithmetic does not really fulfill the requirements of
@ -83,7 +83,7 @@ computing the lexicographically smaller point for two given points.
numerical input data. \cgal\ also provides\footnote{at present, for the
dimension 2/3 Cartesian kernel(s) only.}
% The homogeneous counterpart still needs revision.}
specialisation of the primitives
specialization of the primitives
that (are still fairly generic and) guarantee exact predicate results and
much higher efficiency than exact number types like arbitrary precision
integers or rationals. The efficiency relies on the use of speedy

View File

@ -1333,7 +1333,7 @@ any problems.
crosslinked to the definition of that entity.
\item[{\bf Solution:}] Sometimes, the preferred solution is to
chosse a better name for the entity under consideration. For
choose a better name for the entity under consideration. For
example, a traits class for a planar map should be called
\ccc{Planar_map_traits} rather than \ccc{Traits}. Another
possibility is to add the command \verb|\ccHtmlNoClassLinks| before

View File

@ -166,7 +166,7 @@ Here are the access rules:
After each commit, an automatic mail is sent to the
\texttt{cgal-commits@lists.gforge.inria.fr} mailing-list which records
the log message as well as the URLs to the corresponding diffs within
the ViewCVS interface. Maintainers and developpers can subscribe
to it in order to check what gets commited to their packages.
the ViewCVS interface. Maintainers and developers can subscribe
to it in order to check what gets committed to their packages.
\index{SVN server|)}

View File

@ -261,8 +261,8 @@ ways you can customize this script to meet you needs:
and in this way test with your new files without overwriting
the originals.
\item Export additional environment variables by ading lines to the
\ccIndexSubitem{enviornment variables}{test suite}
\item Export additional environment variables by adding lines to the
\ccIndexSubitem{environment variables}{test suite}
\ccIndexSubitem{test suite}{environment variables}
{\tt run\_testsuite} script. As an example, it will be demonstrated
how to export the {\tt LD\_LIBRARY\_PATH} by editing \texttt{run\_testsuite}.%

View File

@ -447,7 +447,7 @@ all CPU time for itself. The default value is {\tt ''-19''}.
{\tt ULIMIT\_OPTIONS} specifies the command line options to pass to the
{\tt ulimit} command, which is used to prevent the test-suite from using
various system ressources. It can be used to help killing looping programs.
various system resources. It can be used to help killing looping programs.
For example, specifying {\tt ''-c 0 -t 10800 -v 2000000''} will prevent
the creation of dumped core files, will stop processes after 3 hours,
and will kill them if they reach 2GB of memory.
@ -509,7 +509,7 @@ use the -D option to define cmake variables and -G
to define a generator if the default is not right for you.
The cmake variables {\tt WITH\_CGALCORE, WITH\_CGALimageIO, WITH\_CGALPDB and WITH\_CGALQt}
The cmake variables {\tt WITH\_CGALCORE, WITH\_CGALimageIO and WITH\_CGALQt}
are used to enable or disable those \cgal\ components. These are all ON by default.
You should you define them with OFF if any of those components do not work in your platform.
For {\tt these and only these} cmake variables you can define them as environment variables
@ -572,7 +572,7 @@ export CXX=<some compiler not detected by cmake>
export CXXFLAGS='-std=c++0x'
export WITH_CGALimageIO=OFF
cmake -DWITH_CGALPDB=OFF -DCMAKE_BUILD_TYPE=Release ../../..
cmake -DWITH_CGALCORE=OFF -DCMAKE_BUILD_TYPE=Release ../../..
make
\end{verbatim}
@ -735,7 +735,7 @@ QTDIR=/usr/local/qt2 PARASOFT=/usr/local/parasoft /usr/local/bin/zsh -c\"
\end{verbatim}
{\tt CGAL\_URL} is the URL where internal releases are available.
The {\tt LATEST} file is comming from the same location. If this will change,
The {\tt LATEST} file is coming from the same location. If this will change,
you may change either {\tt CGAL\_URL}, or {\tt LATEST\_LOCATION}
in {\tt .autocgalrc}.

View File

@ -1,77 +0,0 @@
\section{Web documents and pages\label{sec:web_pages}}
Here we provide a list of the documents and web pages that contain
information you might find useful. Most of these documents
are protected by a password, which you can obtain by asking one of the
other developers.
\begin{itemize}
\item \ccAnchor{http://www.cgal.org}{The CGAL home page}
\begin{ccTexOnly}
--- \path|http://www.cgal.org|
\end{ccTexOnly}
\item
\ccAnchor{https://cgal.geometryfactory.com/CGAL/Members/wiki/Main_Page}{The
CGAL developers wiki}
\begin{ccTexOnly}
--- \path|https://cgal.geometryfactory.com/CGAL/Members/wiki/Main_Page|
\end{ccTexOnly}
\item \ccAnchor{http://www.cgal.org/Manual/latest/doc_html/cgal_manual/contents.html}{Manuals of the latest public release}
\begin{ccTexOnly}
--- \path|http://www.cgal.org/Manual/latest/doc_html/cgal_manual/contents.html|
\end{ccTexOnly}
\item \ccAnchor{https://cgal.geometryfactory.com/CGAL/Members/Manual_test/LAST/}{Manuals of the latest internal release}
\begin{ccTexOnly}
--- \path|https://cgal.geometryfactory.com/CGAL/Members/Manual_test/LAST/|
\end{ccTexOnly}
\item \ccAnchor{http://www.cgal.org/Members/Manual_tools/}{The Manual Tools}
\begin{ccTexOnly}
--- \path|http://www.cgal.org/Members/Manual_tools|
\end{ccTexOnly}
\item \ccAnchor{https://gforge.inria.fr/plugins/scmsvn/viewcvs.php/?root=cgal}{Browse SVN Repository}
\begin{ccTexOnly}
--- \path|https://gforge.inria.fr/plugins/scmsvn/viewcvs.php/?root=cgal|
\end{ccTexOnly}
\item \ccAnchor{http://www.cgal.org/Members/svn_cgal/}{Documentation of CGAL SVN hosted by InriaGForge}
\begin{ccTexOnly}
--- \path|http://www.cgal.org/Members/svn_cgal/|
\end{ccTexOnly}
\item \ccAnchor{http://cgal.geometryfactory.com/CGAL/Members/Releases/}{Internal release page}
\begin{ccTexOnly}
--- \path|http://cgal.geometryfactory.com/CGAL/Members/Releases/|
\end{ccTexOnly}
\item \ccAnchor{http://cgal.geometryfactory.com/CGAL/Members/testsuite/}{Test suite results}
\begin{ccTexOnly}
--- \path|http://cgal.geometryfactory.com/CGAL/Members/testsuite/|
\end{ccTexOnly}
\item \ccAnchor{https://lists-sop.inria.fr/sympa/arc/cgal-develop}{Archive of {\tt cgal-develop}}
\begin{ccTexOnly}
---
\path|https://lists-sop.inria.fr/sympa/arc/cgal-develop|
\end{ccTexOnly}
\item \ccAnchor{https://lists-sop.inria.fr/sympa/arc/cgal-discuss}{Archive of {\tt cgal-discuss-l}}
\begin{ccTexOnly}
---
\path|https://lists-sop.inria.fr/sympa/arc/cgal-discuss|
\end{ccTexOnly}
\item \ccAnchor{http://cgal-discuss.949826.n4.nabble.com/}{Archive of
{\tt cgal-discuss-l} through the Nabble interface}
\begin{ccTexOnly}
---
\path|http://cgal-discuss.949826.n4.nabble.com/|
\end{ccTexOnly}
\end{itemize}

View File

@ -39,7 +39,7 @@ A f()
return A();
}
#include <algorithm>
#include <utility>
A&& f(A&& a)
{

View File

@ -0,0 +1,25 @@
// Copyright (c) 2011 INRIA Saclay (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; version 2.1 of the License.
// See the file LICENSE.LGPL distributed with CGAL.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
// Author(s) : Marc Glisse
//| If a compiler does not support static_assert (from C++0x)
//| CGAL_CFG_NO_STATIC_ASSERT is set.
int main(){
static_assert(true,"Everything is fine");
}

View File

@ -0,0 +1,29 @@
// Copyright (c) 2011 INRIA Saclay (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; version 2.1 of the License.
// See the file LICENSE.LGPL distributed with CGAL.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
// Author(s) : Marc Glisse
//| If a compiler wants us to remove the template keyword in default
//| parameters, CGAL_CFG_TEMPLATE_IN_DEFAULT_PARAMETER_BUG is set.
//| Bug found in sunCC 5.11.
template < typename A, typename B, typename C =
typename A :: template T < B > :: type >
// here
struct S {};
int main(){}

View File

@ -0,0 +1,69 @@
Subject: CGAL 3.8 Released, Computational Geometry Algorithms Library
Body:
The CGAL Open Source Project is pleased to announce the Release 3.8
of CGAL, the Computational Geometry Algorithms Library.
Besides fixes to existing packages major features where added
in the following packages.
o 3D Mesh Generation
This package now can handle sharp features: the 3D Mesh
generation package now offers the possibility to get in the
final mesh an accurate representation of 1-dimensional
sharp features present in the description of the input domain.
o 2D and 3D Triangulations
Add a way to efficiently insert a range of points with information
into a Delaunay and Regular triangulation.
o 3D Alpha Shapes
The new class Fixed_alpha_shape_3 provides a robust and
faster way to compute one alpha shape (with a fixed value of alpha).
See http://www.cgal.org/releases.html for a complete list of changes.
The CGAL project is a collaborative effort to develop a robust,
easy-to-use, and efficient C++ software library of geometric data
structures and algorithms, like
- triangulations (2D constrained triangulations and Delaunay
triangulations in 2D and 3D),
- Voronoi diagrams (for 2D and 3D points, 2D additively weighted
Voronoi diagrams, and segment Voronoi diagrams),
- Boolean operations on polygons and polyhedra,
- Regularized Boolean operations on polygons with curved arcs
- arrangements of curves,
- mesh algorithms (2D Delaunay mesh generation and 3D surface mesh
generation, surface mesh subdivision and parameterization),
- alpha shapes (in 2D and 3D),
- convex hull algorithms (in 2D, 3D and dD),
- operations on polygons (straight skeleton and offset polygon),
- search structures (kd trees for nearest neighbor search, and
range and segment trees),
- interpolation (natural neighbor interpolation and placement of
streamlines),
- optimization algorithms (smallest enclosing sphere of points or
spheres, smallest enclosing ellipsoid of points, principal
component analysis),
- kinetic data structures
Some modules are distributed under the terms of the LGPL Open Source
license (GNU Lesser General Public License v2.1).
Most modules are distributed under the terms of the QPL Open Source
license (Q Public License v1.0).
If your intended usage does not meet the criteria of the
aforementioned licenses, a commercial license can be purchased from
GeometryFactory (http://www.geometryfactory.com/).
For further information and for downloading the library and its
documentation, please visit the CGAL web site: http://www.cgal.org/

View File

@ -1,3 +1,96 @@
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_3.h>
#include <CGAL/Triangulation_vertex_base_with_info_3.h>
#include <CGAL/Mesh_3/Robust_intersection_traits_3.h>
#include <CGAL/Mesh_triangulation_3.h>
#include <CGAL/Mesh_complex_3_in_triangulation_3.h>
#include <CGAL/Mesh_criteria_3.h>
#include <CGAL/Polyhedral_mesh_domain_3.h>
#include <CGAL/make_mesh_3.h>
#include <CGAL/refine_mesh_3.h>
#include <CGAL/IO/Polyhedron_iostream.h>
#include <CGAL/Mesh_domain_with_polyline_features_3.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Mesh_3::Robust_intersection_traits_3<K> Geom_traits;
typedef Geom_traits::Point_3 Point_3;
typedef CGAL::Polyhedron_3<Geom_traits> Polyhedron;
typedef CGAL::Mesh_domain_with_polyline_features_3<
CGAL::Polyhedral_mesh_domain_3<Polyhedron, Geom_traits> > MD_IntersectedLines;
typedef CGAL::Mesh_triangulation_3<MD_IntersectedLines>::type Tr_MDI;
typedef CGAL::Mesh_criteria_3<Tr_MDI> Mesh_criteria_MDI;
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr_MDI> C3t3_MDI;
typedef C3t3_MDI::Facets_in_complex_iterator Facet_Iter_inComplex;
typedef std::vector<Point_3> InterPolyline;
typedef std::list<InterPolyline> InterPolylines;
using namespace CGAL::parameters;
int main()
{
//constructing the bounding box by triangles
Polyhedron bounding_box;
//top face
bounding_box.make_triangle(Point_3(100,100,100), Point_3(0,100,100), Point_3(0,0,100));
bounding_box.make_triangle(Point_3(100,100,100), Point_3(0,0,100), Point_3(100,0,100));
//bottom face
bounding_box.make_triangle(Point_3(100,100,0), Point_3(100,0,0), Point_3(0,0,0));
bounding_box.make_triangle(Point_3(100,100,0), Point_3(0,0,0), Point_3(0,100,0));
//front face
bounding_box.make_triangle(Point_3(0,0,0), Point_3(100,0,100), Point_3(0,0,100));
bounding_box.make_triangle(Point_3(0,0,0), Point_3(100,0,0), Point_3(100,0,100));
//back face
bounding_box.make_triangle(Point_3(0,100,0), Point_3(0,100,100), Point_3(100,100,100));
bounding_box.make_triangle(Point_3(100,100,100), Point_3(100,100,0), Point_3(0,100,0));
//left face
bounding_box.make_triangle(Point_3(0,0,0), Point_3(0,0,100), Point_3(0,100,100));
bounding_box.make_triangle(Point_3(0,0,0), Point_3(0,100,100), Point_3(0,100,0));
//right face
bounding_box.make_triangle(Point_3(100,100,100), Point_3(100,0,0), Point_3(100,100,0));
bounding_box.make_triangle(Point_3(100,100,100), Point_3(100,0,100), Point_3(100,0,0));
//constructing the input polyhedral face
std::vector<Polyhedron*> AllSurfaces;
Polyhedron NewPoly_1;
NewPoly_1.make_triangle(Point_3(20,20,20), Point_3(25,20,20), Point_3(25,40,20));
NewPoly_1.make_triangle(Point_3(20,20,20), Point_3(25,40,20), Point_3(20,40,20));
AllSurfaces.push_back(&NewPoly_1);
Polyhedron NewPoly_2;
NewPoly_2.make_triangle(Point_3(25,40,20), Point_3(25,20,20), Point_3(60,20,20));
NewPoly_2.make_triangle(Point_3(60,40,20), Point_3(25,40,20), Point_3(60,20,20));
AllSurfaces.push_back(&NewPoly_2);
std::ofstream file;
file.open("input_1.off");
file << NewPoly_1;
file.close();
file.open("input_2.off");
file << NewPoly_2;
file.close();
file.open("bbox.off");
file << bounding_box;
file.close();
//constructing the line feature
InterPolylines interPolySet;
InterPolyline interLine;
interLine.push_back(Point_3(25,40,20));
interLine.push_back(Point_3(25,20,20));
interPolySet.push_back(interLine);
//generating the mesh
MD_IntersectedLines domain(AllSurfaces.begin(), AllSurfaces.end(), bounding_box);
domain.add_features(interPolySet.begin(), interPolySet.end());
Mesh_criteria_MDI criteria(edge_size = 5, facet_angle=20, cell_size=5, facet_topology = CGAL::FACET_VERTICES_ON_SURFACE);
C3t3_MDI c3t3 = CGAL::make_mesh_3<C3t3_MDI>(domain, criteria, no_exude(), no_perturb());
//output
std::ofstream medit_file("out_1.mesh");
c3t3.output_to_medit(medit_file);
medit_file.close();
}
#if 0
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Mesh_triangulation_3.h>
@ -42,3 +135,4 @@ int main()
std::ofstream medit_file("out.mesh");
c3t3.output_to_medit(medit_file);
}
#endif

View File

@ -377,7 +377,7 @@ public:
}
/// Returns past-the-end iterator on facet of the 1D complex
Edges_in_complex_iterator edges_in_complex_end() const
Edges_in_complex_iterator edges_in_complex_end(const Curve_segment_index& = Curve_segment_index()) const
{
return CGAL::filter_iterator(this->triangulation().finite_edges_end(),
Edge_iterator_not_in_complex(*this));