mirror of https://github.com/CGAL/cgal
more on AABB demo
This commit is contained in:
parent
aa4dcf9b6f
commit
1dfddba18a
|
|
@ -10,7 +10,7 @@ if(COMMAND cmake_policy)
|
||||||
cmake_policy(SET CMP0003 NEW)
|
cmake_policy(SET CMP0003 NEW)
|
||||||
endif(COMMAND cmake_policy)
|
endif(COMMAND cmake_policy)
|
||||||
|
|
||||||
foreach(INCDIR ../include ../../../STL_Extension/include ../../../GraphicsView/include ../../../filtered_kernel/include )
|
foreach(INCDIR ../../include ../../../../STL_Extension/include ../../../GraphicsView/include ../../../filtered_kernel/include )
|
||||||
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${INCDIR}")
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${INCDIR}")
|
||||||
include_directories (BEFORE "${CMAKE_CURRENT_SOURCE_DIR}/${INCDIR}")
|
include_directories (BEFORE "${CMAKE_CURRENT_SOURCE_DIR}/${INCDIR}")
|
||||||
endif()
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -312,8 +312,62 @@ void Scene::benchmark_intersections()
|
||||||
bench_nb_intersections(tree);
|
bench_nb_intersections(tree);
|
||||||
bench_any_intersection(tree);
|
bench_any_intersection(tree);
|
||||||
bench_all_intersections(tree);
|
bench_all_intersections(tree);
|
||||||
|
bench_all_intersected_primitives(tree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Scene::bench_all_intersected_primitives(Facet_tree& tree)
|
||||||
|
{
|
||||||
|
std::list<Primitive_id> primitive_ids;
|
||||||
|
|
||||||
|
QTime time;
|
||||||
|
time.start();
|
||||||
|
std::cout << "Benchmark all_intersected_primitives" << std::endl;
|
||||||
|
|
||||||
|
// with ray
|
||||||
|
unsigned int nb = 0;
|
||||||
|
while(time.elapsed() < 1000)
|
||||||
|
{
|
||||||
|
Point p = random_point();
|
||||||
|
Point q = random_point();
|
||||||
|
Ray ray(p,q);
|
||||||
|
tree.all_intersected_primitives(ray,std::back_inserter(primitive_ids));
|
||||||
|
nb++;
|
||||||
|
}
|
||||||
|
double speed = 1000.0 * nb / time.elapsed();
|
||||||
|
std::cout << speed << " queries/s with ray" << std::endl;
|
||||||
|
primitive_ids.clear();
|
||||||
|
|
||||||
|
// with line
|
||||||
|
nb = 0;
|
||||||
|
time.start();
|
||||||
|
while(time.elapsed() < 1000)
|
||||||
|
{
|
||||||
|
Point p = random_point();
|
||||||
|
Point q = random_point();
|
||||||
|
Line line(p,q);
|
||||||
|
tree.all_intersected_primitives(line,std::back_inserter(primitive_ids));
|
||||||
|
nb++;
|
||||||
|
}
|
||||||
|
speed = 1000.0 * nb / time.elapsed();
|
||||||
|
std::cout << speed << " queries/s with line" << std::endl;
|
||||||
|
primitive_ids.clear();
|
||||||
|
|
||||||
|
// with segment
|
||||||
|
nb = 0;
|
||||||
|
time.start();
|
||||||
|
while(time.elapsed() < 1000)
|
||||||
|
{
|
||||||
|
Point p = random_point();
|
||||||
|
Point q = random_point();
|
||||||
|
Segment segment(p,q);
|
||||||
|
tree.all_intersected_primitives(segment,std::back_inserter(primitive_ids));
|
||||||
|
nb++;
|
||||||
|
}
|
||||||
|
speed = 1000.0 * nb / time.elapsed();
|
||||||
|
std::cout << speed << " queries/s with segment" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Scene::bench_do_intersect(Facet_tree& tree)
|
void Scene::bench_do_intersect(Facet_tree& tree)
|
||||||
{
|
{
|
||||||
QTime time;
|
QTime time;
|
||||||
|
|
|
||||||
|
|
@ -93,11 +93,13 @@ private:
|
||||||
typedef CGAL::AABB_traits<Kernel, Primitive> Traits;
|
typedef CGAL::AABB_traits<Kernel, Primitive> Traits;
|
||||||
typedef CGAL::AABB_tree<Traits> Facet_tree;
|
typedef CGAL::AABB_tree<Traits> Facet_tree;
|
||||||
typedef Facet_tree::Object_and_primitive_id Object_and_primitive_id;
|
typedef Facet_tree::Object_and_primitive_id Object_and_primitive_id;
|
||||||
|
typedef Facet_tree::Primitive_id Primitive_id;
|
||||||
|
|
||||||
void bench_do_intersect(Facet_tree& tree);
|
void bench_do_intersect(Facet_tree& tree);
|
||||||
void bench_nb_intersections(Facet_tree& tree);
|
void bench_nb_intersections(Facet_tree& tree);
|
||||||
void bench_any_intersection(Facet_tree& tree);
|
void bench_any_intersection(Facet_tree& tree);
|
||||||
void bench_all_intersections(Facet_tree& tree);
|
void bench_all_intersections(Facet_tree& tree);
|
||||||
|
void bench_all_intersected_primitives(Facet_tree& tree);
|
||||||
}; // end class Scene
|
}; // end class Scene
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue