mirror of https://github.com/CGAL/cgal
Merge pull request #3226 from maxGimeno/Convex_hull_3-Make_minimal_hull-GF
Convex_hull_3: Make it minimal.
This commit is contained in:
commit
e8850746f4
|
|
@ -355,11 +355,8 @@ find_visible_set(TDS_2& tds,
|
|||
std::map<typename TDS_2::Vertex_handle, typename TDS_2::Edge>& outside,
|
||||
const Traits& traits)
|
||||
{
|
||||
typedef typename Traits::Plane_3 Plane_3;
|
||||
typedef typename TDS_2::Face_handle Face_handle;
|
||||
typedef typename TDS_2::Vertex_handle Vertex_handle;
|
||||
typename Traits::Has_on_positive_side_3 has_on_positive_side =
|
||||
traits.has_on_positive_side_3_object();
|
||||
|
||||
std::vector<Vertex_handle> vertices;
|
||||
vertices.reserve(10);
|
||||
|
|
@ -385,9 +382,10 @@ find_visible_set(TDS_2& tds,
|
|||
// if haven't already seen this facet
|
||||
if (f->info() == 0) {
|
||||
f->info() = VISITED;
|
||||
Plane_3 plane(f->vertex(0)->point(),f->vertex(1)->point(),f->vertex(2)->point());
|
||||
Is_on_positive_side_of_plane_3<Traits> is_on_positive_side(
|
||||
traits,f->vertex(0)->point(),f->vertex(2)->point(),f->vertex(1)->point());
|
||||
int ind = f->index(*vis_it);
|
||||
if ( has_on_positive_side(plane, point) ){ // is visible
|
||||
if ( !is_on_positive_side(point) ){ // is visible
|
||||
visible.push_back(f);
|
||||
Vertex_handle vh = f->vertex(ind);
|
||||
if(vh->info() == 0){ vertices.push_back(vh); vh->info() = VISITED;}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,14 @@
|
|||
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
|
||||
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
|
||||
#include <CGAL/Polyhedron_3.h>
|
||||
#include <CGAL/convex_hull_3.h>
|
||||
#include <CGAL/Side_of_triangle_mesh.h>
|
||||
#include <CGAL/convexity_check_3.h>
|
||||
#include <fstream>
|
||||
#include <cassert>
|
||||
|
||||
typedef CGAL::Epick K;
|
||||
typedef CGAL::Epeck EK;
|
||||
|
||||
int main()
|
||||
{
|
||||
|
|
@ -18,8 +22,20 @@ int main()
|
|||
|
||||
CGAL::Polyhedron_3<K> r;
|
||||
CGAL::convex_hull_3(pointset.begin(), pointset.end(), r);
|
||||
|
||||
assert(r.size_of_vertices()==82);
|
||||
|
||||
CGAL::Polyhedron_3<EK> s;
|
||||
CGAL::copy_face_graph(r,s);
|
||||
assert(CGAL::is_strongly_convex_3(s));
|
||||
|
||||
CGAL::Cartesian_converter<K, EK> to_EK;
|
||||
CGAL::Side_of_triangle_mesh<CGAL::Polyhedron_3<EK>, EK> sotm(s);
|
||||
|
||||
|
||||
BOOST_FOREACH(K::Point_3 p, pointset)
|
||||
{
|
||||
assert(sotm(to_EK(p)) != CGAL::ON_UNBOUNDED_SIDE);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,6 +49,10 @@ Release date: September 2018
|
|||
to reflect the real needs of the code (some types and operators were used
|
||||
in the code but did not appear in the concepts).
|
||||
|
||||
### Convex hull 3
|
||||
|
||||
- Fix a bug in the computation of the 3D convex hull that was leaving extra points
|
||||
within subset of coplanar points that do not belong to the minimal convex hull.
|
||||
|
||||
### Point Set Processing
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue