Removed Ron from maintainer list. Updated Ron's email address. Cleaned up documentation and example programs

This commit is contained in:
Efi Fogel 2014-08-28 17:05:57 +03:00
parent 7ce44a2615
commit f48ce38473
26 changed files with 270 additions and 353 deletions

View File

@ -432,7 +432,7 @@ function template computes the offset of a given polygon \f$ P\f$
by a rational radius \f$ r\f$ in an exact manner. The input by a rational radius \f$ r\f$ in an exact manner. The input
polygon $P$ must be either simple or degenerate consisting of two polygon $P$ must be either simple or degenerate consisting of two
vertices (representing a line segment). The `traits` argument must model vertices (representing a line segment). The `traits` argument must model
the concept `ArrangementTraits_2`; it should be capable of handling the concept `ArrangementTraits_2` and it should be capable of handling
conic arcs in an exact manner---using an instance of the conic arcs in an exact manner---using an instance of the
`Arr_conic_traits_2` class template with the number `Arr_conic_traits_2` class template with the number
types provided by the <span class="textsc">Core</span> library is the types provided by the <span class="textsc">Core</span> library is the
@ -455,69 +455,73 @@ considerably slower:
\cgalExample{Minkowski_sum_2/exact_offset.cpp} \cgalExample{Minkowski_sum_2/exact_offset.cpp}
\cgalAdvancedBegin \cgalAdvancedBegin
Both functions `approximated_offset_2()` and `offset_polygon_2()` Both functions templates `approximated_offset_2()` and `offset_polygon_2()`
also have overloaded versions that accept a decomposition strategy also have overloaded versions that accept a decomposition strategy
and use the polygon-decomposition approach to compute (or approximate) and use the polygon-decomposition approach to compute (or approximate)
the offset. These functions are less efficient than their counterparts the offset. These functions are typically considerably slower than their
that employ the convolution approach, and are only included in the package counterparts that employ the convolution approach. However, similar to the
for the sake of completeness. functions that compute the general Minkowski sum, they are able to compute
the offset of polygons with holes, given a decomposition strategy that
handles polygons with holes, such as the
'Polygon_vertical_decomposition_2<Kernel>' class template.
\cgalAdvancedEnd \cgalAdvancedEnd
\subsection mink_ssecinner_offset Computing Inner Offsets \subsection mink_ssecinner_offset Computing Inner Offsets
An operation closely related to the offset computation, is obtaining the An operation closely related to the (outer) offset computation, is
<I>inner offset</I> of a polygon, or <I>insetting</I> it by a given radius. computing the <I>inner offset</I> of a polygon, or <I>insetting</I> it
The inset of a polygon \f$ P\f$ with radius \f$ r\f$ is the set of points by a given radius. The inset of a polygon \f$ P\f$ with radius
iside \f$ P\f$ whose distance from the polygon boundary, denoted \f$ r\f$ is the set of points iside \f$ P\f$ the distance of which
\f$ \partial P\f$, is at least \f$ r\f$, namely: from the polygon boundary, denoted \f$ \partial P\f$, is at least \f$ r\f$,
\f$ \{ p \in P \;|\; {\rm dist}(p, \partial P) \geq r \}\f$. namely: \f$ \{ p \in P \;|\; {\rm dist}(p, \partial P) \geq r \}\f$.
Note that the resulting set may not be connected in case \f$ P\f$ is a Note that the resulting point set may be dicconnected when \f$ P\f$ is a
non-convex polygon that has some narrow components, and thus is non-convex polygon that has some narrow components. In such a case the
characterized by a (possibly empty) set of polygons whose edges are resulting set is characterized by a (possibly empty) set of polygons the
line segments and circular arcs of radius \f$ r\f$. edges of which are line segments and circular arcs of radius \f$ r\f$.
The offset can be computed using the convolution method if we traverse the The inset can be computed using the convolution method traversing the
polygon in a <I>clockwise</I> orientation (and not in <I>counterclockwise</I> polygon in a <I>clockwise</I> order (as oppose to the
orientation, as done in case of ofsetting a polygon). <I>counterclockwise</I> order applied in the case of ofsetting a polygon).
As in case of the offset functions, the Minkowski-sum package contains two As with the (outer) offset functions, the Minkowski-sum package contains two
functions for insetting a simple polygon: functions for insetting a simple polygon, namely,
`approximated_inset_2(P, r, eps, oi)` and `inset_polygon_2(P, r, traits, oi)`.
The function \link approximated_inset_2() `approximated_inset_2(P, r, eps, oi)`\endlink accepts a polygon The \link approximated_inset_2() `approximated_inset_2(P, r, eps, oi)`\endlink
\f$ P\f$, an inset radius \f$ r\f$ and \f$ \varepsilon > 0\f$. It constructs an function template accepts a polygon \f$ P\f$, an inset radius \f$ r\f$,
approximation for the inset of \f$ P\f$ by the radius \f$ r\f$, with the approximation (a floating-point number) \f$ \epsilon > 0 \f$, and an output
error bounded by \f$ \varepsilon\f$. The function returns its output via the iterator `oi`, whose value-type must be an instance of the class template
output iterator `oi`, whose value-type must be `Gps_circle_segment_traits_2::Polygon_2`. . It constructs an approximation
`Gps_circle_segment_traits_2::Polygon_2` representing of the inset of \f$ P\f$ by the radius \f$ r\f$, where the approximation
the polygons that approximates the inset polygon. error is bounded by \f$ \epsilon\f$. The function returns the polygons that
approximate the inset polygon through the output iterator `oi`.
\cgalExample{Minkowski_sum_2/approx_inset.cpp} \cgalExample{Minkowski_sum_2/approx_inset.cpp}
Similarly, the function Similarly, the function template
\link inset_polygon_2() `inset_polygon_2(P, r, traits, oi)` \endlink computes \link inset_polygon_2() `inset_polygon_2(P, r, traits, oi)` \endlink
the exact inset of \f$ P\f$ with radius \f$ r\f$, and returns its output via the given computes the exact inset of \f$ P\f$ with radius \f$ r\f$, and returns
output iterator `oi`. The `traits` parameter should be an instance of its output through the given output iterator `oi`. The `traits` parameter
an arrangement-traits class that is capable of handling conic arcs in an must model the concept `ArrangementTraits_2` and it should be capable of
exact manner, whereas `oi`'s value-type must be handling conic arcs in an exact manner, whereas the value-type of `oi`
`Gps_traits_2::Polygon_2`. must be an instance of `Gps_traits_2::Polygon_2`.
\cgalExample{Minkowski_sum_2/exact_inset.cpp} \cgalExample{Minkowski_sum_2/exact_inset.cpp}
\cgalAdvancedBegin Unlike the functions that compute the offsets, there are no overloaded
Unlike the offset functions, there are no overloaded versions of the inset versions of the functions that compute the insets and use convex polygon
functions that use convex polygon decomposition to compute insets, as this decomposition, as decomposition approach cannot be easily generalized for
method cannot be easily generalized for inset computations. inset computations.
\cgalAdvancedEnd
In this context let us mention that there exist overloaded versions of the The package also provides overloaded versions of the functions
functions
\link approximated_offset_2() `approximated_offset_2(P, r, eps)`\endlink \link approximated_offset_2() `approximated_offset_2(P, r, eps)`\endlink
and and
\link offset_polygon_2() `offset_polygon_2(P, r, traits)`\endlink \link offset_polygon_2() `offset_polygon_2(P, r, traits)`\endlink
that accept a <I>polygon with holes</I> that accept a <I>polygon with holes</I>
\f$ P\f$ and computed its offset. This ofset is obtain by taking the outer offset \f$ P\f$ and compute its offset. This ofset is obtain by computing the
of \f$ P\f$'s outer boundary, and computing the inner offsets of \f$ P\f$'s holes. outer offset of the outer boundary of \f$ P\f$'s, and computing the inner
The former polygon defines the output boundary of \f$ P \oplus B_r\f$, and the latter offsets of the holes of \f$ P\f$. The former polygon defines the output
define the holes within the result. boundary of \f$ P \oplus B_r\f$, and the latter define the holes within
the result.
\section Minkowski_sum_2Acknowledgements Acknowledgements \section Minkowski_sum_2Acknowledgements Acknowledgements

View File

@ -1,63 +1,48 @@
//! \file examples/Minkowski_sum_2/approx_inset.cpp //! \file examples/Minkowski_sum_2/approx_inset.cpp
// Computing the approximated inset of a polygon. // Computing the approximated inset of a polygon.
#include "ms_rational_nt.h" #include <fstream>
#include <CGAL/Lazy_exact_nt.h>
#include <CGAL/Cartesian.h>
#include <CGAL/approximated_offset_2.h>
#include <CGAL/offset_polygon_2.h>
#include <CGAL/Timer.h>
#include <iostream> #include <iostream>
#include <list>
#include <boost/timer.hpp>
typedef CGAL::Lazy_exact_nt<Number_type> Lazy_exact_nt; #include <CGAL/basic.h>
#include <CGAL/approximated_offset_2.h>
struct Kernel : public CGAL::Cartesian<Lazy_exact_nt> {}; #include "bops_circular.h"
typedef CGAL::Polygon_2<Kernel> Polygon_2;
typedef CGAL::Gps_circle_segment_traits_2<Kernel> Gps_traits_2; typedef CGAL::Polygon_2<Kernel> Linear_polygon;
typedef Gps_traits_2::Polygon_2 Offset_polygon_2;
typedef Gps_traits_2::Polygon_with_holes_2 Offset_polygon_with_holes_2;
int main () int main(int argc, char* argv[])
{ {
// Open the input file. // Open the input file and read a polygon.
std::ifstream in_file ("tight.dat"); const char* filename = (argc > 1) ? argv[1] : "tight.dat";
std::ifstream in_file(filename);
if (! in_file.is_open()) if (! in_file.is_open()) {
{
std::cerr << "Failed to open the input file." << std::endl; std::cerr << "Failed to open the input file." << std::endl;
return (1); return -1;
} }
// Read the input polygon. // Read the input polygon.
Polygon_2 P; Linear_polygon P;
in_file >> P; in_file >> P;
in_file.close(); in_file.close();
std::cout << "Read an input polygon with " std::cout << "Read an input polygon with " << P.size() << " vertices."
<< P.size() << " vertices." << std::endl; << std::endl;
// Approximate the offset polygon. // Approximate the offset polygon.
const Number_type radius = 1; std::list<Polygon> inset_polygons;
const double err_bound = 0.00001; boost::timer timer;
std::list<Offset_polygon_2> inset_polygons; approximated_inset_2(P, 1, 0.00001, std::back_inserter(inset_polygons));
std::list<Offset_polygon_2>::iterator iit; double secs = timer.elapsed();
CGAL::Timer timer;
timer.start(); std::list<Polygon>::iterator it;
approximated_inset_2 (P, radius, err_bound, std::cout << "The inset comprises " << inset_polygons.size()
std::back_inserter (inset_polygons)); << " polygon(s)." << std::endl;
timer.stop(); for (it = inset_polygons.begin(); it != inset_polygons.end(); ++it)
std::cout << " Polygon with " << it->size() << " vertices." << std::endl;
std::cout << "The inset comprises " std::cout << "Inset computation took " << secs << " seconds." << std::endl;
<< inset_polygons.size() << " polygon(s)." << std::endl; return 0;
for (iit = inset_polygons.begin(); iit != inset_polygons.end(); ++iit)
{
std::cout << " Polygon with "
<< iit->size() << " vertices." << std::endl;
}
std::cout << "Inset computation took "
<< timer.time() << " seconds." << std::endl;
return (0);
} }

View File

@ -0,0 +1,25 @@
#ifndef ARR_CONICS_H
#define ARR_CONICS_H
#include <CGAL/Cartesian.h>
#include <CGAL/CORE_algebraic_number_traits.h>
#include <CGAL/Arr_conic_traits_2.h>
#include <CGAL/Arrangement_2.h>
typedef CGAL::CORE_algebraic_number_traits Nt_traits;
typedef Nt_traits::Rational Rational;
typedef CGAL::Cartesian<Rational> Rat_kernel;
typedef Rat_kernel::Point_2 Rat_point;
typedef Rat_kernel::Segment_2 Rat_segment;
typedef Rat_kernel::Circle_2 Rat_circle;
typedef Nt_traits::Algebraic Algebraic;
typedef CGAL::Cartesian<Algebraic> Alg_kernel;
typedef CGAL::Arr_conic_traits_2<Rat_kernel, Alg_kernel, Nt_traits>
Traits;
typedef Traits::Point_2 Point;
typedef Traits::Curve_2 Conic_arc;
typedef Traits::X_monotone_curve_2 X_monotone_conic_arc;
typedef CGAL::Arrangement_2<Traits> Arrangement;
#endif

View File

@ -1,80 +1,60 @@
//! \file examples/Minkowski_sum_2/exact_inset.cpp //! \file examples/Minkowski_sum_2/exact_inset.cpp
// Computing the exact inner offset of a polygon. // Computing the exact inner offset of a polygon.
#include <iostream>
#include <CGAL/basic.h> #include <CGAL/basic.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE
#include <iostream>
int main() int main()
{ {
std::cout << "Sorry, this example needs CORE ..." << std::endl; std::cout << "Sorry, this example needs CORE ..." << std::endl;
return (0); return 0;
} }
#else #else
#include <CGAL/Cartesian.h> #include <fstream>
#include <CGAL/CORE_algebraic_number_traits.h> #include <boost/timer.hpp>
#include <CGAL/Arr_conic_traits_2.h>
#include <CGAL/Gps_traits_2.h>
#include <CGAL/offset_polygon_2.h> #include <CGAL/offset_polygon_2.h>
#include <CGAL/Timer.h>
#include <iostream>
typedef CGAL::CORE_algebraic_number_traits Nt_traits; #include "arr_conics.h"
typedef Nt_traits::Rational Rational;
typedef Nt_traits::Algebraic Algebraic;
struct Rat_kernel : public CGAL::Cartesian<Rational> {}; typedef CGAL::Polygon_2<Rat_kernel> Polygon;
struct Alg_kernel : public CGAL::Cartesian<Algebraic> {}; typedef CGAL::Gps_traits_2<Traits> Gps_traits;
struct Conic_traits_2 : public CGAL::Arr_conic_traits_2<Rat_kernel, typedef Gps_traits::Polygon_2 Offset_polygon;
Alg_kernel,
Nt_traits> {};
typedef CGAL::Polygon_2<Rat_kernel> Polygon_2; int main(int argc, char* argv[])
typedef CGAL::Gps_traits_2<Conic_traits_2> Gps_traits_2;
typedef Gps_traits_2::Polygon_2 Offset_polygon_2;
int main ()
{
// Open the input file.
std::ifstream in_file ("tight.dat");
if (! in_file.is_open())
{ {
// Open the input file and read the input polygon.
const char* filename = (argc > 1) ? argv[1] : "tight.dat";
std::ifstream in_file(filename);
if (! in_file.is_open()) {
std::cerr << "Failed to open the input file." << std::endl; std::cerr << "Failed to open the input file." << std::endl;
return (1); return -1;
} }
Polygon P;
// Read the input polygon.
Polygon_2 P;
in_file >> P; in_file >> P;
in_file.close(); in_file.close();
std::cout << "Read an input polygon with " << P.size() << " vertices."
std::cout << "Read an input polygon with " << std::endl;
<< P.size() << " vertices." << std::endl;
// Compute the inner offset of the polygon. // Compute the inner offset of the polygon.
Conic_traits_2 traits; Traits traits;
const Rational radius = 1; std::list<Offset_polygon> inset_polygons;
std::list<Offset_polygon_2> inset_polygons; boost::timer timer;
std::list<Offset_polygon_2>::iterator iit; inset_polygon_2(P, 1, traits, std::back_inserter(inset_polygons));
CGAL::Timer timer; double secs = timer.elapsed();
timer.start();
inset_polygon_2 (P, radius, traits,
std::back_inserter (inset_polygons));
timer.stop();
std::list<Offset_polygon>::iterator it;
std::cout << "The inset comprises " std::cout << "The inset comprises "
<< inset_polygons.size() << " polygon(s)." << std::endl; << inset_polygons.size() << " polygon(s)." << std::endl;
for (iit = inset_polygons.begin(); iit != inset_polygons.end(); ++iit) for (it = inset_polygons.begin(); it != inset_polygons.end(); ++it)
{ std::cout << " Polygon with " << it->size() << " vertices."
std::cout << " Polygon with " << std::endl;
<< iit->size() << " vertices." << std::endl; std::cout << "Inset computation took " << secs << " seconds." << std::endl;
} return 0;
std::cout << "Inset computation took "
<< timer.time() << " seconds." << std::endl;
return (0);
} }
#endif #endif

View File

@ -1,75 +1,56 @@
//! \file examples/Minkowski_sum_2/exact_offset.cpp //! \file examples/Minkowski_sum_2/exact_offset.cpp
// Computing the exact offset of a polygon. // Computing the exact offset of a polygon.
#include <iostream>
#include <CGAL/basic.h> #include <CGAL/basic.h>
#ifndef CGAL_USE_CORE #ifndef CGAL_USE_CORE
#include <iostream>
int main() int main()
{ {
std::cout << "Sorry, this example needs CORE ..." << std::endl; std::cout << "Sorry, this example needs CORE ..." << std::endl;
return (0); return 0;
} }
#else #else
#include <CGAL/Cartesian.h> #include <fstream>
#include <CGAL/CORE_algebraic_number_traits.h> #include <boost/timer.hpp>
#include <CGAL/Arr_conic_traits_2.h>
#include <CGAL/Gps_traits_2.h>
#include <CGAL/offset_polygon_2.h> #include <CGAL/offset_polygon_2.h>
#include <CGAL/Timer.h>
#include <iostream>
typedef CGAL::CORE_algebraic_number_traits Nt_traits; #include "arr_conics.h"
typedef Nt_traits::Rational Rational;
typedef Nt_traits::Algebraic Algebraic;
struct Rat_kernel : public CGAL::Cartesian<Rational> {}; typedef CGAL::Polygon_2<Rat_kernel> Polygon;
struct Alg_kernel : public CGAL::Cartesian<Algebraic> {}; typedef CGAL::Gps_traits_2<Traits> Gps_traits;
struct Conic_traits_2 : public CGAL::Arr_conic_traits_2<Rat_kernel, typedef Gps_traits::Polygon_with_holes_2 Offset_polygon_with_holes;
Alg_kernel,
Nt_traits> {};
typedef CGAL::Polygon_2<Rat_kernel> Polygon_2; int main(int argc, char* argv[])
typedef CGAL::Gps_traits_2<Conic_traits_2> Gps_traits_2;
typedef Gps_traits_2::Polygon_2 Offset_polygon_2;
typedef Gps_traits_2::Polygon_with_holes_2 Offset_polygon_with_holes_2;
int main ()
{
// Open the input file.
std::ifstream in_file ("spiked.dat");
if (! in_file.is_open())
{ {
// Open the input file and read the input polygon.
const char* filename = (argc > 1) ? argv[1] : "spiked.dat";
std::ifstream in_file(filename);
if (! in_file.is_open()) {
std::cerr << "Failed to open the input file." << std::endl; std::cerr << "Failed to open the input file." << std::endl;
return (1); return -1;
} }
Polygon P;
// Read the input polygon.
Polygon_2 P;
in_file >> P; in_file >> P;
in_file.close(); in_file.close();
std::cout << "Read an input polygon with " << P.size() << " vertices."
std::cout << "Read an input polygon with " << std::endl;
<< P.size() << " vertices." << std::endl;
// Compute the offset polygon. // Compute the offset polygon.
Conic_traits_2 traits; Traits traits;
const Rational radius = 5; boost::timer timer;
Offset_polygon_with_holes_2 offset; Offset_polygon_with_holes offset = CGAL::offset_polygon_2(P, 5, traits);
CGAL::Timer timer; double secs = timer.elapsed();
timer.start(); std::cout << "The offset polygon has " << offset.outer_boundary().size()
offset = offset_polygon_2 (P, radius, traits); << " vertices, " << offset.number_of_holes() << " holes."
timer.stop(); << std::endl;
std::cout << "Offset computation took " << secs << " seconds." << std::endl;
std::cout << "The offset polygon has " return 0;
<< offset.outer_boundary().size() << " vertices, "
<< offset.number_of_holes() << " holes." << std::endl;
std::cout << "Offset computation took "
<< timer.time() << " seconds." << std::endl;
return (0);
} }
#endif #endif

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
// Andreas Fabri <Andreas.Fabri@geometryfactory.com> // Andreas Fabri <Andreas.Fabri@geometryfactory.com>
// Laurent Rineau <Laurent.Rineau@geometryfactory.com> // Laurent Rineau <Laurent.Rineau@geometryfactory.com>
// Efi Fogel <efif@post.tau.ac.il> // Efi Fogel <efif@post.tau.ac.il>

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_ARR_LABELED_TRAITS_2_H #ifndef CGAL_ARR_LABELED_TRAITS_2_H
#define CGAL_ARR_LABELED_TRAITS_2_H #define CGAL_ARR_LABELED_TRAITS_2_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
// Efi Fogel <efifogel@gmail.com> // Efi Fogel <efifogel@gmail.com>
#ifndef CGAL_POLYGON_DECOMPOSITION_STRATEGY_ADAPTER_H #ifndef CGAL_POLYGON_DECOMPOSITION_STRATEGY_ADAPTER_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_EXACT_OFFSET_BASE_H #ifndef CGAL_EXACT_OFFSET_BASE_H
#define CGAL_EXACT_OFFSET_BASE_H #define CGAL_EXACT_OFFSET_BASE_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_MINKOWSKI_SUM_LABELS_H #ifndef CGAL_MINKOWSKI_SUM_LABELS_H
#define CGAL_MINKOWSKI_SUM_LABELS_H #define CGAL_MINKOWSKI_SUM_LABELS_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
// Efi Fogel <efifogel@gmail.com> // Efi Fogel <efifogel@gmail.com>
#ifndef CGAL_MINKOWSKI_SUM_CONV_H #ifndef CGAL_MINKOWSKI_SUM_CONV_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_MINKOWSKI_SUM_DECOMP_2_H #ifndef CGAL_MINKOWSKI_SUM_DECOMP_2_H
#define CGAL_MINKOWSKI_SUM_DECOMP_2_H #define CGAL_MINKOWSKI_SUM_DECOMP_2_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_OFFSET_CONV_H #ifndef CGAL_OFFSET_CONV_H
#define CGAL_OFFSET_CONV_H #define CGAL_OFFSET_CONV_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_OFFSET_DECOMP_H #ifndef CGAL_OFFSET_DECOMP_H
#define CGAL_OFFSET_DECOMP_H #define CGAL_OFFSET_DECOMP_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_DECOMPOSITION_STRATEGY_ADAPTER_H #ifndef CGAL_DECOMPOSITION_STRATEGY_ADAPTER_H
#define CGAL_DECOMPOSITION_STRATEGY_ADAPTER_H #define CGAL_DECOMPOSITION_STRATEGY_ADAPTER_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_UNION_OF_CURVE_CYCLES_2_H #ifndef CGAL_UNION_OF_CURVE_CYCLES_2_H
#define CGAL_UNION_OF_CURVE_CYCLES_2_H #define CGAL_UNION_OF_CURVE_CYCLES_2_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_UNION_OF_CYCLES_2_H #ifndef CGAL_UNION_OF_CYCLES_2_H
#define CGAL_UNION_OF_CYCLES_2_H #define CGAL_UNION_OF_CYCLES_2_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_UNION_OF_SEGMENT_CYCLES_2_H #ifndef CGAL_UNION_OF_SEGMENT_CYCLES_2_H
#define CGAL_UNION_OF_SEGMENT_CYCLES_2_H #define CGAL_UNION_OF_SEGMENT_CYCLES_2_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_POLYGON_CONVEX_DECOMPOSITION_H #ifndef CGAL_POLYGON_CONVEX_DECOMPOSITION_H
#define CGAL_POLYGON_CONVEX_DECOMPOSITION_H #define CGAL_POLYGON_CONVEX_DECOMPOSITION_H

View File

@ -12,9 +12,6 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$
// $Id$
//
// Author(s) : Efi Fogel <efifogel@gmail.com> // Author(s) : Efi Fogel <efifogel@gmail.com>
#ifndef CGAL_POLYGON_VERTICAL_DECOMPOSITION_2_H #ifndef CGAL_POLYGON_VERTICAL_DECOMPOSITION_2_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
// (based on an old version by Eyal Flato) // (based on an old version by Eyal Flato)
// Efi Fogel <efifogel@gmail.com> // Efi Fogel <efifogel@gmail.com>

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_APPROXIMATED_OFFSET_H #ifndef CGAL_APPROXIMATED_OFFSET_H
#define CGAL_APPROXIMATED_OFFSET_H #define CGAL_APPROXIMATED_OFFSET_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
// Efi Fogel <efifogel@gmail.com> // Efi Fogel <efifogel@gmail.com>
#ifndef CGAL_MINKOWSKI_SUM_2_H #ifndef CGAL_MINKOWSKI_SUM_2_H

View File

@ -12,10 +12,7 @@
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// //
// $URL$ // Author(s) : Ron Wein <wein_r@yahoo.com>
// $Id$
//
// Author(s) : Ron Wein <wein@post.tau.ac.il>
#ifndef CGAL_OFFSET_POLYGON_H #ifndef CGAL_OFFSET_POLYGON_H
#define CGAL_OFFSET_POLYGON_H #define CGAL_OFFSET_POLYGON_H

View File

@ -1,2 +1 @@
Ron Wein <wein@post.tau.ac.il>
Efi Fogel <efif@post.tau.ac.il> Efi Fogel <efif@post.tau.ac.il>