Merge remote-tracking branch 'cgal/releases/CGAL-4.8-branch'

This commit is contained in:
Sébastien Loriot 2016-06-16 16:19:04 +02:00
commit 6326ea2372
7 changed files with 30 additions and 65 deletions

View File

@ -1,51 +1,14 @@
Subject: CGAL 4.8 Released, Computational Geometry Algorithms Library
Subject: CGAL 4.8.1 Released, Computational Geometry Algorithms Library
Content-Type: text/plain; charset="utf-8"
Body:
The CGAL Open Source Project is pleased to announce the release 4.8
The CGAL Open Source Project is pleased to announce the release 4.8.1
of CGAL, the Computational Geometry Algorithms Library.
Besides fixes to existing packages, the following has changed since
CGAL 4.7:
Version 4.8.1 is a bug-fix release for version 4.8. The list of fixed bugs
can be seen on Github:
o General
- The support for Qt3 is dropped and all demos using it got removed.
o Installation
- Starting with Visual C++ 2015 we no longer require Boost.Thread as we
use the C++11 keyword thread_local and the C+11 class std::mutex.
- The same holds for g++ 4.8 or later when the C++11 standard is used.
o Optimal Transportation Curve Reconstruction (new package)
- This package implements a method to reconstruct and simplify 2D point
sets. The input is a set of 2D points with mass attributes, possibly
hampered by noise and outliers. The output is a set of line segments
and isolated points which approximate the input points.
o 3D Mesh Generation
- Add support of 3D gray level images as input for the tetrahedral mesh
generation.
o Polygon Mesh Processing
- Add a new triangle-based isotropic remeshing algorithm for
triangulated surface meshes.
o Point Set Processing
- Add Concurrency_tag to the functions compute_average_spacing(),
edge_aware_upsample_point_set(), jet_estimate_normals(),
jet_smooth_point_set(), and pca_estimate_normals().
See http://www.cgal.org/releases.html for a complete list of changes.
https://github.com/CGAL/cgal/issues?q=milestone%3A4.8.1
The CGAL project is a collaborative effort to develop a robust,

View File

@ -131,7 +131,7 @@ namespace CGAL {
}
inline FT min_distance_to_rectangle(const Query_item& q,
const Kd_tree_rectangle<FT,D>& r,std::vector<FT>& dists) {
const Kd_tree_rectangle<FT,D>& r,std::vector<FT>& dists) const {
FT distance = FT(0);
typename SearchTraits::Construct_cartesian_const_iterator_d construct_it=traits.construct_cartesian_const_iterator_d_object();
typename SearchTraits::Cartesian_const_iterator_d qit = construct_it(q),
@ -166,7 +166,7 @@ namespace CGAL {
}
inline FT max_distance_to_rectangle(const Query_item& q,
const Kd_tree_rectangle<FT,D>& r,std::vector<FT>& dists ) {
const Kd_tree_rectangle<FT,D>& r,std::vector<FT>& dists ) const {
FT distance=FT(0);
typename SearchTraits::Construct_cartesian_const_iterator_d construct_it=traits.construct_cartesian_const_iterator_d_object();
typename SearchTraits::Cartesian_const_iterator_d qit = construct_it(q),

View File

@ -88,7 +88,7 @@ namespace CGAL {
}
inline FT min_distance_to_rectangle(const Sphere_d& q,
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) {
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) const {
Point_d c= Construct_center_d()(q);
FT distance = FT(0);
Construct_cartesian_const_iterator_d construct_it=traits.construct_cartesian_const_iterator_d_object();
@ -129,7 +129,7 @@ namespace CGAL {
}
inline FT max_distance_to_rectangle(const Sphere_d& q,
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) {
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) const {
Construct_center_d construct_center_d;
Point_d c = construct_center_d(q);
FT distance=FT(0);

View File

@ -85,7 +85,7 @@ namespace CGAL {
}
inline FT min_distance_to_rectangle(const Query_item& q,
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) {
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) const {
FT distance = FT(0);
typename SearchTraits::Construct_cartesian_const_iterator_d construct_it=
traits.construct_cartesian_const_iterator_d_object();
@ -131,7 +131,7 @@ namespace CGAL {
inline
FT
max_distance_to_rectangle(const Query_item& q,
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) {
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) const {
FT distance=FT(0);
typename SearchTraits::Construct_cartesian_const_iterator_d construct_it=
traits.construct_cartesian_const_iterator_d_object();

View File

@ -92,27 +92,29 @@ public:
struct Construct_cartesian_const_iterator_d: public Base_traits::Construct_cartesian_const_iterator_d{
PointPropertyMap ppmap;
using Base_traits::Construct_cartesian_const_iterator_d::operator();
typedef typename Base_traits::Construct_cartesian_const_iterator_d Base;
Construct_cartesian_const_iterator_d(const typename Base_traits::Construct_cartesian_const_iterator_d& base, const PointPropertyMap& ppmap_)
:Base_traits::Construct_cartesian_const_iterator_d(base), ppmap(ppmap_){}
typename Base_traits::Cartesian_const_iterator_d operator()(const Point_with_info& p) const
{ return this->operator() (get(ppmap,p)); }
{ return Base::operator() (get(ppmap,p)); }
typename Base_traits::Cartesian_const_iterator_d operator()(const Point_with_info& p, int) const
{ return this->operator() (get(ppmap,p),0); }
{ return Base::operator() (get(ppmap,p),0); }
};
struct Construct_iso_box_d: public Base::Construct_iso_box_d{
PointPropertyMap ppmap;
typedef typename Base_traits::FT FT; // needed for VC++, because otherwise it is taken from the private typedef of the base class
typedef typename Base::Construct_iso_box_d Base_functor;
Iso_box_d operator() () const {
return static_cast<const typename Base::Construct_iso_box_d* >(this)->operator() ();
return Base_functor::operator() ();
}
Iso_box_d operator() (const Point_with_info& p, const Point_with_info& q) const
{
return static_cast<const typename Base::Construct_iso_box_d* >(this)->operator() (get(ppmap,p),get(ppmap,q));
return Base_functor::operator() (get(ppmap,p),get(ppmap,q));
}
};
@ -120,7 +122,7 @@ public:
Construct_cartesian_const_iterator_d construct_cartesian_const_iterator_d_object() const {
return Construct_cartesian_const_iterator_d(
static_cast<const Base*>(this)->construct_cartesian_const_iterator_d_object(),
Base::construct_cartesian_const_iterator_d_object(),
ppmap);
}
};
@ -148,30 +150,30 @@ public:
FT transformed_distance(const Query_item& p1, const Point_with_info& p2) const
{
return this->transformed_distance(p1,get(ppmap,p2));
return Base_distance::transformed_distance(p1,get(ppmap,p2));
}
template <class FT,class Dimension>
FT min_distance_to_rectangle(const Query_item& p, const CGAL::Kd_tree_rectangle<FT,Dimension>& b) const
{
return static_cast<const Base_distance*>(this)->min_distance_to_rectangle(p,b);
return Base_distance::min_distance_to_rectangle(p,b);
}
template <class FT,class Dimension>
FT min_distance_to_rectangle(const Query_item& p, const CGAL::Kd_tree_rectangle<FT,Dimension>& b,std::vector<FT>& dists)
FT min_distance_to_rectangle(const Query_item& p, const CGAL::Kd_tree_rectangle<FT,Dimension>& b,std::vector<FT>& dists) const
{
return static_cast<Base_distance*>(this)->min_distance_to_rectangle(p,b,dists);
return Base_distance::min_distance_to_rectangle(p,b,dists);
}
template <class FT,class Dimension>
FT max_distance_to_rectangle(const Query_item& p,const CGAL::Kd_tree_rectangle<FT,Dimension>& b) const
{
return static_cast<const Base_distance*>(this)->max_distance_to_rectangle(p,b);
return Base_distance::max_distance_to_rectangle(p,b);
}
template <class FT,class Dimension>
FT max_distance_to_rectangle(const Query_item& p,const CGAL::Kd_tree_rectangle<FT,Dimension>& b,std::vector<FT>& dists)
FT max_distance_to_rectangle(const Query_item& p,const CGAL::Kd_tree_rectangle<FT,Dimension>& b,std::vector<FT>& dists) const
{
return static_cast<Base_distance*>(this)->max_distance_to_rectangle(p,b,dists);
return Base_distance::max_distance_to_rectangle(p,b,dists);
}
};

View File

@ -246,7 +246,7 @@ namespace CGAL {
inline
FT
min_distance_to_rectangle(const Query_item& q,
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) {
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) const {
FT distance = FT(0);
typename SearchTraits::Construct_cartesian_const_iterator_d construct_it=
traits.construct_cartesian_const_iterator_d_object();
@ -326,7 +326,7 @@ namespace CGAL {
inline
FT
max_distance_to_rectangle(const Query_item& q,
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) {
const Kd_tree_rectangle<FT,Dimension>& r,std::vector<FT>& dists) const {
FT distance=FT(0);
typename SearchTraits::Construct_cartesian_const_iterator_d construct_it=
traits.construct_cartesian_const_iterator_d_object();

View File

@ -26,7 +26,7 @@ struct Distance {
template <class TreeTraits>
double min_distance_to_rectangle(const Point& p,
const CGAL::Kd_tree_rectangle<TreeTraits>& b,std::vector<double>& dists){
const CGAL::Kd_tree_rectangle<TreeTraits>& b,std::vector<double>& dists) const {
double distance(0.0), h = p.x();
if (h < b.min_coord(0)){
dists[0] = (b.min_coord(0)-h);
@ -76,7 +76,7 @@ struct Distance {
template <class TreeTraits>
double max_distance_to_rectangle(const Point& p,
const CGAL::Kd_tree_rectangle<TreeTraits>& b,std::vector<double>& dists){
const CGAL::Kd_tree_rectangle<TreeTraits>& b,std::vector<double>& dists) const {
double h = p.x();
dists[0] = (h >= (b.min_coord(0)+b.max_coord(0))/2.0) ?
@ -98,6 +98,6 @@ struct Distance {
double transformed_distance(double d) const { return d*d; }
double inverse_of_transformed_distance(double d) { return std::sqrt(d); }
double inverse_of_transformed_distance(double d) const { return std::sqrt(d); }
}; // end of struct Distance