fixes and modifications to tests

This commit is contained in:
Iordan Iordanov 2018-06-04 17:18:43 +02:00
parent 158fcfd24b
commit 4e98d38ac9
12 changed files with 77 additions and 32 deletions

View File

@ -0,0 +1,23 @@
---- for best results, make sure that you have compiled me in Release mode ----
iteration 1: inserting into hyperbolic periodic triangulation... DONE! (# of vertices = 1000000, time = 50.3773 secs)
iteration 1: inserting into Euclidean non-periodic triangulation... DONE! (# of vertices = 1000000, time = 20.7566 secs)
iteration 2: inserting into hyperbolic periodic triangulation... DONE! (# of vertices = 1000000, time = 58.7336 secs)
iteration 2: inserting into Euclidean non-periodic triangulation... DONE! (# of vertices = 1000000, time = 24.6808 secs)
iteration 3: inserting into hyperbolic periodic triangulation... DONE! (# of vertices = 1000000, time = 57.6734 secs)
iteration 3: inserting into Euclidean non-periodic triangulation... DONE! (# of vertices = 1000000, time = 23.9461 secs)
iteration 4: inserting into hyperbolic periodic triangulation... DONE! (# of vertices = 1000000, time = 54.9728 secs)
iteration 4: inserting into Euclidean non-periodic triangulation... DONE! (# of vertices = 1000000, time = 21.1166 secs)
iteration 5: inserting into hyperbolic periodic triangulation... DONE! (# of vertices = 1000000, time = 51.4028 secs)
iteration 5: inserting into Euclidean non-periodic triangulation... DONE! (# of vertices = 1000000, time = 21.3222 secs)
iteration 6: inserting into hyperbolic periodic triangulation... DONE! (# of vertices = 1000000, time = 50.6842 secs)
iteration 6: inserting into Euclidean non-periodic triangulation... DONE! (# of vertices = 1000000, time = 21.144 secs)
iteration 7: inserting into hyperbolic periodic triangulation... DONE! (# of vertices = 1000000, time = 52.2119 secs)
iteration 7: inserting into Euclidean non-periodic triangulation... DONE! (# of vertices = 1000000, time = 21.848 secs)
iteration 8: inserting into hyperbolic periodic triangulation... DONE! (# of vertices = 1000000, time = 52.7987 secs)
iteration 8: inserting into Euclidean non-periodic triangulation... DONE! (# of vertices = 1000000, time = 23.4349 secs)
iteration 9: inserting into hyperbolic periodic triangulation... DONE! (# of vertices = 1000000, time = 56.7236 secs)
iteration 9: inserting into Euclidean non-periodic triangulation... DONE! (# of vertices = 1000000, time = 22.5812 secs)
iteration 10: inserting into hyperbolic periodic triangulation... DONE! (# of vertices = 1000000, time = 56.6275 secs)
iteration 10: inserting into Euclidean non-periodic triangulation... DONE! (# of vertices = 1000000, time = 22.441 secs)
Hyperbolic periodic triangulation: average time = 54.2206
Euclidean non-periodic triangulation: average time = 22.3271

View File

@ -1,6 +1,6 @@
#include <iostream> #include <iostream>
#include <CGAL/CORE_Expr.h> #include <CGAL/CORE_Expr.h>
#include <CGAL/Exact_complex.h> #include <CGAL/internal/Exact_complex.h>
#include <CGAL/Point_2.h> #include <CGAL/Point_2.h>
#include <CGAL/Circle_2.h> #include <CGAL/Circle_2.h>
#include <CGAL/Cartesian.h> #include <CGAL/Cartesian.h>

View File

@ -7,7 +7,7 @@
#include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h> #include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h>
#include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h> #include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h>
#include <CGAL/Periodic_4_hyperbolic_triangulation_dummy_14.h> #include <CGAL/internal/Periodic_4_hyperbolic_triangulation_dummy_14.h>
#include <CGAL/Hyperbolic_octagon_translation.h> #include <CGAL/Hyperbolic_octagon_translation.h>
#include <CGAL/Algebraic_kernel_for_circles_2_2.h> #include <CGAL/Algebraic_kernel_for_circles_2_2.h>
#include <CGAL/Circular_kernel_2.h> #include <CGAL/Circular_kernel_2.h>

View File

@ -4,7 +4,7 @@
#include <boost/random/uniform_smallint.hpp> #include <boost/random/uniform_smallint.hpp>
#include <boost/random/variate_generator.hpp> #include <boost/random/variate_generator.hpp>
#include <CGAL/point_generators_2.h> #include <CGAL/point_generators_2.h>
#include <CGAL/Hyperbolic_random_points_in_disc_2.h> //#include <CGAL/Hyperbolic_random_points_in_disc_2.h>
#include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h> #include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h>
#include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h> #include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h>
#include <CGAL/Hyperbolic_octagon_translation.h> #include <CGAL/Hyperbolic_octagon_translation.h>
@ -61,21 +61,18 @@ int main(int argc, char** argv) {
for (int exec = 1; exec <= iters; exec++) { for (int exec = 1; exec <= iters; exec++) {
std::vector<Point_double> v;
std::vector<Point> pts; std::vector<Point> pts;
CGAL::Random_points_in_disc_2<Point_double, Creator> g(0.85);
Hyperbolic_random_points_in_disc_2_double(v, 5*N, -1, 0.159);
int cnt = 0; int cnt = 0;
int idx = 0;
do { do {
Point pt = Point(v[idx].x(), v[idx].y()); Point_double pd = *(++g);
Point pt = Point(pd.x(), pd.y());
if (pred(pt) != CGAL::ON_UNBOUNDED_SIDE) { if (pred(pt) != CGAL::ON_UNBOUNDED_SIDE) {
pts.push_back(pt); pts.push_back(pt);
cnt++; cnt++;
} }
idx++; } while (cnt < N);
} while (cnt < N && idx < v.size());
if (cnt < N) { if (cnt < N) {
cout << "I failed to generate all the random points! Exiting..." << endl; cout << "I failed to generate all the random points! Exiting..." << endl;

View File

@ -100,7 +100,7 @@ int main(int argc, char** argv) {
CGAL::Timer tt; CGAL::Timer tt;
tt.start(); tt.start();
tr.insert(pts.begin(), pts.end(), true); tr.insert(pts.begin(), pts.end());
tt.stop(); tt.stop();
cout << "DONE! (# of vertices = " << tr.number_of_vertices() << ", time = " << tt.time() << " secs)" << endl; cout << "DONE! (# of vertices = " << tr.number_of_vertices() << ", time = " << tt.time() << " secs)" << endl;
extime += tt.time(); extime += tt.time();

View File

@ -8,7 +8,8 @@
#include <CGAL/Delaunay_triangulation_2.h> #include <CGAL/Delaunay_triangulation_2.h>
#include <CGAL/Cartesian.h> #include <CGAL/Cartesian.h>
#include <CGAL/determinant.h> #include <CGAL/determinant.h>
#include <CGAL/CORE_Expr.h>
#include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h>
#include <CGAL/Timer.h> #include <CGAL/Timer.h>
typedef double NT; typedef double NT;
@ -18,6 +19,13 @@ typedef Kernel::Point_2
typedef Triangulation::Vertex_handle Vertex_handle; typedef Triangulation::Vertex_handle Vertex_handle;
typedef CGAL::Creator_uniform_2<double, Point> Creator; typedef CGAL::Creator_uniform_2<double, Point> Creator;
typedef CORE::Expr NT2;
typedef CGAL::Cartesian<NT2> Kernel2;
typedef CGAL::Periodic_4_hyperbolic_Delaunay_triangulation_traits_2<Kernel2,
CGAL::Hyperbolic_octagon_translation> Traits2;
typedef Traits2::Side_of_original_octagon Side_of_original_octagon;
using std::cout; using std::cout;
using std::endl; using std::endl;
@ -37,23 +45,27 @@ int main(int argc, char** argv) {
cout << "---- for best results, make sure that you have compiled me in Release mode ----" << endl; cout << "---- for best results, make sure that you have compiled me in Release mode ----" << endl;
double extime = 0.0; double extime = 0.0;
Side_of_original_octagon pred;
for (int exec = 1; exec <= iters; exec++) { for (int exec = 1; exec <= iters; exec++) {
std::vector<Point> pts; std::vector<Point> pts;
pts.reserve(N); CGAL::Random_points_in_disc_2<Point, Creator> g(0.85);
CGAL::Random_points_in_disc_2<Point, Creator> g(1.0);
CGAL::cpp11::copy_n( g, N, std::back_inserter(pts)); int cnt = 0;
do {
Point pt = *(++g);
if (pred(pt) != CGAL::ON_UNBOUNDED_SIDE) {
pts.push_back(pt);
cnt++;
}
} while (cnt < N);
cout << "iteration " << exec << ": inserting into triangulation (rational dummy points)... "; cout.flush(); cout << "iteration " << exec << ": inserting into triangulation (rational dummy points)... "; cout.flush();
Triangulation tr; Triangulation tr;
//tr.insert_dummy_points(true);
CGAL::Timer tt; CGAL::Timer tt;
tt.start(); tt.start();
tr.insert(pts.begin(), pts.end()); tr.insert(pts.begin(), pts.end());
//for (int j = 0; j < pts.size(); j++) {
// tr.insert(pts[j]);
//}
tt.stop(); tt.stop();
cout << "DONE! (# of vertices = " << tr.number_of_vertices() << ", time = " << tt.time() << " secs)" << endl; cout << "DONE! (# of vertices = " << tr.number_of_vertices() << ", time = " << tt.time() << " secs)" << endl;
extime += tt.time(); extime += tt.time();

View File

@ -7,7 +7,7 @@
#include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h> #include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h>
#include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h> #include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h>
#include <CGAL/Periodic_4_hyperbolic_triangulation_dummy_14.h> #include <CGAL/internal/Periodic_4_hyperbolic_triangulation_dummy_14.h>
#include <CGAL/Hyperbolic_octagon_translation.h> #include <CGAL/Hyperbolic_octagon_translation.h>
#include <CGAL/Algebraic_kernel_for_circles_2_2.h> #include <CGAL/Algebraic_kernel_for_circles_2_2.h>
#include <CGAL/Circular_kernel_2.h> #include <CGAL/Circular_kernel_2.h>
@ -55,7 +55,7 @@ int main(void) {
cout << "---- locating dummy points (all should be vertices) ----" << endl; cout << "---- locating dummy points (all should be vertices) ----" << endl;
for (int j = 0; j < 14; j++) { for (int j = 0; j < 14; j++) {
Point query = tr.get_dummy_point(j); Point query = tr.get_dummy_point(j);
fh = tr.locate(query, lt, li); fh = tr.hyperbolic_locate(query, lt, li);
assert(lt == Triangulation::VERTEX); assert(lt == Triangulation::VERTEX);
cout << " dummy point " << j << ": OK " << endl; cout << " dummy point " << j << ": OK " << endl;
} }
@ -63,13 +63,13 @@ int main(void) {
cout << "---- locating the midpoint of a Euclidean segment ----" << endl; cout << "---- locating the midpoint of a Euclidean segment ----" << endl;
Point p1 = tr.get_dummy_point(0), p2 = tr.get_dummy_point(1); Point p1 = tr.get_dummy_point(0), p2 = tr.get_dummy_point(1);
Point query = midpoint(p1, p2); Point query = midpoint(p1, p2);
fh = tr.locate(query, lt, li); fh = tr.hyperbolic_locate(query, lt, li);
assert(lt == Triangulation::EDGE); assert(lt == Triangulation::EDGE);
cout << " located as edge OK" << endl; cout << " located as edge OK" << endl;
cout << "---- inserting a single point and locating it ----" << endl; cout << "---- inserting a single point and locating it ----" << endl;
Vertex_handle v = tr.insert(Point(-0.4, -0.1)); Vertex_handle v = tr.insert(Point(-0.4, -0.1));
fh = tr.locate(v->point(), lt, li); fh = tr.hyperbolic_locate(v->point(), lt, li);
assert(lt == Triangulation::VERTEX); assert(lt == Triangulation::VERTEX);
cout << " located as vertex OK" << endl; cout << " located as vertex OK" << endl;

View File

@ -3,8 +3,8 @@
#include <CGAL/Point_2.h> #include <CGAL/Point_2.h>
#include <CGAL/Circle_2.h> #include <CGAL/Circle_2.h>
#include <CGAL/Cartesian.h> #include <CGAL/Cartesian.h>
#include <CGAL/Exact_complex.h> #include <CGAL/internal/Exact_complex.h>
#include <CGAL/Hyperbolic_octagon_translation_matrix.h> #include <CGAL/internal/Hyperbolic_octagon_translation_matrix.h>
#include <vector> #include <vector>
using namespace CGAL; using namespace CGAL;

View File

@ -5,7 +5,7 @@
#include <boost/random/uniform_smallint.hpp> #include <boost/random/uniform_smallint.hpp>
#include <boost/random/variate_generator.hpp> #include <boost/random/variate_generator.hpp>
#include <CGAL/point_generators_2.h> #include <CGAL/point_generators_2.h>
#include <CGAL/Hyperbolic_random_points_in_disc_2.h> //#include <CGAL/Random_points_in_disc_2.h>
#include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h> #include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_2.h>
#include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h> #include <CGAL/Periodic_4_hyperbolic_Delaunay_triangulation_traits_2.h>
@ -44,10 +44,10 @@ int main(int argc, char** argv) {
int max = -1; int max = -1;
double mean = 0.0; double mean = 0.0;
for (int j = 0; j < iter; j++) { for (int j = 0; j < iter; j++) {
cout << "Iteration " << (j+1) << "/" << iter << "..." << endl; //cout << "Iteration " << (j+1) << "/" << iter << "..." << endl;
std::vector<Point_double> v; std::vector<Point_double> v;
Hyperbolic_random_points_in_disc_2_double(v, N, -1, 0.159); CGAL::Random_points_in_disc_2<Point_double, Creator> g(0.85);
Triangulation tr; Triangulation tr;
assert(tr.is_valid(true)); assert(tr.is_valid(true));
@ -55,7 +55,7 @@ int main(int argc, char** argv) {
int cnt = 0; int cnt = 0;
int idx = 0; int idx = 0;
do { do {
Point_double pt = v[idx++]; Point_double pt = *(++g);
if (pred(pt) != CGAL::ON_UNBOUNDED_SIDE) { if (pred(pt) != CGAL::ON_UNBOUNDED_SIDE) {
tr.insert(Point(pt.x(), pt.y())); tr.insert(Point(pt.x(), pt.y()));
cnt++; cnt++;
@ -66,7 +66,7 @@ int main(int argc, char** argv) {
continue; continue;
} }
assert(tr.is_valid()); assert(tr.is_valid());
std::cout << cnt << std::endl;
if (cnt > max) if (cnt > max)
max = cnt; max = cnt;
if (cnt < min) if (cnt < min)

View File

@ -23,7 +23,7 @@ int main(void) {
Triangulation tr; Triangulation tr;
CGAL_assertion(tr.is_valid()); CGAL_assertion(tr.is_valid());
cout << "triangulation works!" << cout << "triangulation works!" << std::endl;
cout << "nb of vertices: " << tr.number_of_vertices() << endl; cout << "nb of vertices: " << tr.number_of_vertices() << endl;
cout << "nb of faces: " << tr.number_of_faces() << endl; cout << "nb of faces: " << tr.number_of_faces() << endl;

View File

@ -4,7 +4,7 @@
#include <CGAL/Circle_2.h> #include <CGAL/Circle_2.h>
#include <CGAL/Cartesian.h> #include <CGAL/Cartesian.h>
// #include <CGAL/Hyperbolic_octagon_translation_matrix.h> // #include <CGAL/Hyperbolic_octagon_translation_matrix.h>
#include <CGAL/Exact_complex.h> #include <CGAL/internal/Exact_complex.h>
#include <CGAL/Hyperbolic_octagon_translation.h> #include <CGAL/Hyperbolic_octagon_translation.h>
#include <vector> #include <vector>

View File

@ -0,0 +1,13 @@
Test ran on 04/06/2018, 11:18am
=================================================
Finished 100 iterations!
Minimum number of points inserted: 30
Maximum number of points inserted: 147
Average number of points inserted: 61.66
Context
=================================================
There were some doubts about how correct it is to say that we used random points
uniformly distributed in the hyperbolic metric. I ran the test with points
distributed uniformly in the Euclidean metric, and these are the results.