mirror of https://github.com/CGAL/cgal
Merge remote-tracking branch 'cgal/releases/CGAL-4.8-branch'
This commit is contained in:
commit
6326ea2372
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue