-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cleaned up; replaced 'typedef' with 'using'; replaced CGAL::Timer wit…
…h std::chrono
- Loading branch information
Showing
3 changed files
with
97 additions
and
155 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,81 +1,63 @@ | ||
//! \file examples/Envelope_3/ex_envelope_planes.cpp | ||
// Constructing the lower and the upper envelope of a set of planes. | ||
|
||
#include <iostream> | ||
#include <list> | ||
|
||
#include <CGAL/Exact_rational.h> | ||
#include <CGAL/Cartesian.h> | ||
#include <CGAL/Env_plane_traits_3.h> | ||
#include <CGAL/envelope_3.h> | ||
#include <iostream> | ||
#include <list> | ||
|
||
typedef CGAL::Exact_rational Number_type; | ||
typedef CGAL::Cartesian<Number_type> Kernel; | ||
typedef Kernel::Plane_3 Plane_3; | ||
typedef CGAL::Env_plane_traits_3<Kernel> Traits_3; | ||
typedef Traits_3::Surface_3 Surface_3; | ||
typedef CGAL::Envelope_diagram_2<Traits_3> Envelope_diagram_2; | ||
|
||
using Number_type = CGAL::Exact_rational; | ||
using Kernel = CGAL::Cartesian<Number_type>; | ||
using Plane_3 = Kernel::Plane_3; | ||
using Traits_3 = CGAL::Env_plane_traits_3<Kernel>; | ||
using Surface_3 = Traits_3::Surface_3; | ||
using Envelope_diagram_2 = CGAL::Envelope_diagram_2<Traits_3>; | ||
|
||
/* Auxiliary function - print the features of the given envelope diagram. */ | ||
void print_diagram (const Envelope_diagram_2& diag) | ||
{ | ||
void print_diagram(const Envelope_diagram_2& diag) { | ||
// Go over all arrangement faces. | ||
Envelope_diagram_2::Face_const_iterator fit; | ||
Envelope_diagram_2::Ccb_halfedge_const_circulator ccb; | ||
Envelope_diagram_2::Surface_const_iterator sit; | ||
|
||
for (fit = diag.faces_begin(); fit != diag.faces_end(); ++fit) | ||
{ | ||
for (auto fit = diag.faces_begin(); fit != diag.faces_end(); ++fit) { | ||
// Print the face boundary. | ||
|
||
// Print the vertices along the outer boundary of the face. | ||
ccb = fit->outer_ccb(); | ||
std::cout << "[Face] "; | ||
do | ||
{ | ||
if(!ccb->is_fictitious()) | ||
std::cout << '(' << ccb->curve() << ") "; | ||
++ccb; | ||
} while (ccb != fit->outer_ccb()); | ||
auto ccb = fit->outer_ccb(); | ||
std::cout << "[Face] "; | ||
do if (!ccb->is_fictitious()) std::cout << '(' << ccb->curve() << ") "; | ||
while (++ccb != fit->outer_ccb()); | ||
|
||
// Print the planes that induce the envelope on this face. | ||
std::cout << "--> " << fit->number_of_surfaces() | ||
<< " planes:"; | ||
std::cout << "--> " << fit->number_of_surfaces() << " planes:"; | ||
|
||
for (sit = fit->surfaces_begin(); sit != fit->surfaces_end(); ++sit) | ||
for (auto sit = fit->surfaces_begin(); sit != fit->surfaces_end(); ++sit) | ||
std::cout << ' ' << sit->plane(); | ||
std::cout << std::endl; | ||
} | ||
|
||
return; | ||
} | ||
|
||
/* The main program: */ | ||
int main () | ||
{ | ||
int main() { | ||
// Construct the input planes. | ||
std::list<Surface_3> planes; | ||
std::list<Surface_3> planes; | ||
|
||
planes.push_back (Surface_3(Plane_3(0, -1, 1, 0))); | ||
planes.push_back (Surface_3(Plane_3(-1, 0, 1, 0))); | ||
planes.push_back (Surface_3(Plane_3(0, 1 , 1, 0))); | ||
planes.push_back (Surface_3(Plane_3(1, 0, 1, 0))); | ||
planes.push_back(Surface_3(Plane_3(0, -1, 1, 0))); | ||
planes.push_back(Surface_3(Plane_3(-1, 0, 1, 0))); | ||
planes.push_back(Surface_3(Plane_3(0, 1 , 1, 0))); | ||
planes.push_back(Surface_3(Plane_3(1, 0, 1, 0))); | ||
|
||
// Compute and print the minimization diagram. | ||
Envelope_diagram_2 min_diag; | ||
|
||
CGAL::lower_envelope_3 (planes.begin(), planes.end(), min_diag); | ||
|
||
Envelope_diagram_2 min_diag; | ||
CGAL::lower_envelope_3(planes.begin(), planes.end(), min_diag); | ||
std::cout << std::endl << "The minimization diagram:" << std::endl; | ||
print_diagram (min_diag); | ||
print_diagram(min_diag); | ||
|
||
// Compute and print the maximization diagram. | ||
Envelope_diagram_2 max_diag; | ||
|
||
CGAL::upper_envelope_3 (planes.begin(), planes.end(), max_diag); | ||
|
||
Envelope_diagram_2 max_diag; | ||
CGAL::upper_envelope_3(planes.begin(), planes.end(), max_diag); | ||
std::cout << std::endl << "The maximization diagram:" << std::endl; | ||
print_diagram (max_diag); | ||
|
||
return (0); | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,110 +1,82 @@ | ||
//! \file examples/Envelope_3/ex_envelope_triangles.cpp | ||
// Constructing the lower and the upper envelope of a set of triangles. | ||
|
||
#include <iostream> | ||
#include <list> | ||
|
||
#include <CGAL/Exact_rational.h> | ||
#include <CGAL/Cartesian.h> | ||
#include <CGAL/Env_triangle_traits_3.h> | ||
#include <CGAL/Env_surface_data_traits_3.h> | ||
#include <CGAL/envelope_3.h> | ||
#include <iostream> | ||
#include <list> | ||
|
||
typedef CGAL::Exact_rational Number_type; | ||
typedef CGAL::Cartesian<Number_type> Kernel; | ||
typedef CGAL::Env_triangle_traits_3<Kernel> Traits_3; | ||
typedef Kernel::Point_3 Point_3; | ||
typedef Traits_3::Surface_3 Triangle_3; | ||
typedef CGAL::Env_surface_data_traits_3<Traits_3, char> Data_traits_3; | ||
typedef Data_traits_3::Surface_3 Data_triangle_3; | ||
typedef CGAL::Envelope_diagram_2<Data_traits_3> Envelope_diagram_2; | ||
using Number_type = CGAL::Exact_rational; | ||
using Kernel = CGAL::Cartesian<Number_type>; | ||
using Traits_3 = CGAL::Env_triangle_traits_3<Kernel>; | ||
using Point_3 = Kernel::Point_3; | ||
using Triangle_3 = Traits_3::Surface_3; | ||
using Data_traits_3 = CGAL::Env_surface_data_traits_3<Traits_3, char>; | ||
using Data_triangle_3 = Data_traits_3::Surface_3; | ||
using Envelope_diagram_2 = CGAL::Envelope_diagram_2<Data_traits_3>; | ||
|
||
/* Auxiliary function - print the features of the given envelope diagram. */ | ||
void print_diagram (const Envelope_diagram_2& diag) | ||
{ | ||
void print_diagram(const Envelope_diagram_2& diag) { | ||
// Go over all arrangement faces. | ||
Envelope_diagram_2::Face_const_iterator fit; | ||
Envelope_diagram_2::Ccb_halfedge_const_circulator ccb; | ||
Envelope_diagram_2::Surface_const_iterator sit; | ||
|
||
for (fit = diag.faces_begin(); fit != diag.faces_end(); ++fit) | ||
{ | ||
for (auto fit = diag.faces_begin(); fit != diag.faces_end(); ++fit) { | ||
// Print the face boundary. | ||
if (fit->is_unbounded()) | ||
{ | ||
std::cout << "[Unbounded face]"; | ||
} | ||
else | ||
{ | ||
if (fit->is_unbounded()) std::cout << "[Unbounded face]"; | ||
else { | ||
// Print the vertices along the outer boundary of the face. | ||
ccb = fit->outer_ccb(); | ||
auto ccb = fit->outer_ccb(); | ||
std::cout << "[Face] "; | ||
do | ||
{ | ||
std::cout << '(' << ccb->target()->point() << ") "; | ||
++ccb; | ||
} while (ccb != fit->outer_ccb()); | ||
do std::cout << '(' << ccb->target()->point() << ") "; | ||
while (++ccb != fit->outer_ccb()); | ||
} | ||
|
||
// Print the labels of the triangles that induce the envelope on this face. | ||
std::cout << "--> " << fit->number_of_surfaces() | ||
<< " triangles:"; | ||
std::cout << "--> " << fit->number_of_surfaces() << " triangles:"; | ||
|
||
for (sit = fit->surfaces_begin(); sit != fit->surfaces_end(); ++sit) | ||
for (auto sit = fit->surfaces_begin(); sit != fit->surfaces_end(); ++sit) | ||
std::cout << ' ' << sit->data(); | ||
std::cout << std::endl; | ||
} | ||
|
||
// Go over all arrangement edges. | ||
Envelope_diagram_2::Edge_const_iterator eit; | ||
Envelope_diagram_2::Edge_const_iterator eit; | ||
|
||
for (eit = diag.edges_begin(); eit != diag.edges_end(); ++eit) | ||
{ | ||
for (auto eit = diag.edges_begin(); eit != diag.edges_end(); ++eit) { | ||
// Print the labels of the triangles that induce the envelope on this edge. | ||
std::cout << "[Edge] (" << eit->source()->point() | ||
<< ") (" << eit->target()->point() | ||
<< ") --> " << eit->number_of_surfaces() | ||
<< ") (" << eit->target()->point() | ||
<< ") --> " << eit->number_of_surfaces() | ||
<< " triangles:"; | ||
|
||
for (sit = eit->surfaces_begin(); sit != eit->surfaces_end(); ++sit) | ||
for (auto sit = eit->surfaces_begin(); sit != eit->surfaces_end(); ++sit) | ||
std::cout << ' ' << sit->data(); | ||
std::cout << std::endl; | ||
} | ||
|
||
return; | ||
} | ||
|
||
/* The main program: */ | ||
int main () | ||
{ | ||
int main() { | ||
// Construct the input triangles, makred A and B. | ||
std::list<Data_triangle_3> triangles; | ||
|
||
triangles.push_back (Data_triangle_3 (Triangle_3 (Point_3 (0, 0, 0), | ||
Point_3 (0, 6, 0), | ||
Point_3 (5, 3, 4)), | ||
'A')); | ||
triangles.push_back (Data_triangle_3 (Triangle_3 (Point_3 (6, 0, 0), | ||
Point_3 (6, 6, 0), | ||
Point_3 (1, 3, 4)), | ||
'B')); | ||
std::list<Data_triangle_3> triangles; | ||
auto t1 = Triangle_3(Point_3 (0, 0, 0), Point_3 (0, 6, 0), Point_3 (5, 3, 4)); | ||
triangles.push_back(Data_triangle_3(t1, 'A')); | ||
auto t2 = Triangle_3(Point_3 (6, 0, 0), Point_3 (6, 6, 0), Point_3 (1, 3, 4)); | ||
triangles.push_back(Data_triangle_3(t2, 'B')); | ||
|
||
// Compute and print the minimization diagram. | ||
Envelope_diagram_2 min_diag; | ||
|
||
CGAL::lower_envelope_3 (triangles.begin(), triangles.end(), | ||
min_diag); | ||
|
||
Envelope_diagram_2 min_diag; | ||
CGAL::lower_envelope_3(triangles.begin(), triangles.end(), min_diag); | ||
std::cout << std::endl << "The minimization diagram:" << std::endl; | ||
print_diagram (min_diag); | ||
print_diagram(min_diag); | ||
|
||
// Compute and print the maximization diagram. | ||
Envelope_diagram_2 max_diag; | ||
|
||
CGAL::upper_envelope_3 (triangles.begin(), triangles.end(), | ||
max_diag); | ||
|
||
Envelope_diagram_2 max_diag; | ||
CGAL::upper_envelope_3 (triangles.begin(), triangles.end(), max_diag); | ||
std::cout << std::endl << "The maximization diagram:" << std::endl; | ||
print_diagram (max_diag); | ||
|
||
return (0); | ||
return 0; | ||
} |