renaming package to Kinetic_space_partition

This commit is contained in:
Sven Oesau 2023-12-13 20:52:32 +01:00
parent 9ed7ec2406
commit c868c0fc91
12 changed files with 214 additions and 2128 deletions

View File

@ -102,7 +102,7 @@
\package_listing{Scale_space_reconstruction_3} \package_listing{Scale_space_reconstruction_3}
\package_listing{Advancing_front_surface_reconstruction} \package_listing{Advancing_front_surface_reconstruction}
\package_listing{Polygonal_surface_reconstruction} \package_listing{Polygonal_surface_reconstruction}
\package_listing{Kinetic_shape_partition} \package_listing{Kinetic_space_partition}
\package_listing{Optimal_transportation_reconstruction_2} \package_listing{Optimal_transportation_reconstruction_2}
\cgalPackageSection{PartGeometryProcessing,Geometry Processing} \cgalPackageSection{PartGeometryProcessing,Geometry Processing}

View File

@ -13,7 +13,7 @@
#ifndef CGAL_KSP_2_DATA_STRUCTURE_H #ifndef CGAL_KSP_2_DATA_STRUCTURE_H
#define CGAL_KSP_2_DATA_STRUCTURE_H #define CGAL_KSP_2_DATA_STRUCTURE_H
#include <CGAL/license/Kinetic_shape_partition.h> #include <CGAL/license/Kinetic_space_partition.h>
#include <CGAL/KSP/utils.h> #include <CGAL/KSP/utils.h>
#include <CGAL/KSP_2/Support_line.h> #include <CGAL/KSP_2/Support_line.h>
@ -38,11 +38,11 @@ public:
typedef typename Kernel::Line_2 Line_2; typedef typename Kernel::Line_2 Line_2;
typedef typename Kernel::Segment_2 Segment_2; typedef typename Kernel::Segment_2 Segment_2;
typedef KSP_2::Support_line<Kernel> Support_line; typedef Support_line<Kernel> Support_line;
typedef KSP_2::Segment Segment; typedef Segment Segment;
typedef KSP_2::Vertex<FT> Vertex; typedef Vertex<FT> Vertex;
typedef KSP_2::Meta_vertex<Point_2> Meta_vertex; typedef Meta_vertex<Point_2> Meta_vertex;
typedef std::vector<Support_line> Support_lines; typedef std::vector<Support_line> Support_lines;
typedef std::vector<Segment> Segments; typedef std::vector<Segment> Segments;
@ -460,7 +460,7 @@ public:
for (std::size_t i = 0; i < 4; ++i) for (std::size_t i = 0; i < 4; ++i)
{ {
Point_2 point; Point_2 point;
if (!KSP::intersection(m_support_lines[i].line(), m_support_lines.back().line(), point)) if (!KSP::internal::intersection(m_support_lines[i].line(), m_support_lines.back().line(), point))
continue; continue;
FT position = m_support_lines.back().to_1d(point); FT position = m_support_lines.back().to_1d(point);

View File

@ -13,15 +13,13 @@
#ifndef CGAL_KSP_2_EVENT_H #ifndef CGAL_KSP_2_EVENT_H
#define CGAL_KSP_2_EVENT_H #define CGAL_KSP_2_EVENT_H
#include <CGAL/license/Kinetic_shape_partition.h> #include <CGAL/license/Kinetic_space_partition.h>
#include <CGAL/KSP/utils.h> #include <CGAL/KSP/utils.h>
namespace CGAL namespace CGAL {
{ namespace KSP_2 {
namespace internal {
namespace KSP_2
{
template <typename GeomTraits> template <typename GeomTraits>
class Event_queue; class Event_queue;
@ -45,10 +43,10 @@ private:
public: public:
Event () { } Event() { }
Event (std::size_t vertex_idx, std::size_t meta_vertex_idx, FT time) Event(std::size_t vertex_idx, std::size_t meta_vertex_idx, FT time)
: m_vertex_idx (vertex_idx), m_meta_vertex_idx (meta_vertex_idx), m_time (time) : m_vertex_idx(vertex_idx), m_meta_vertex_idx(meta_vertex_idx), m_time(time)
{ } { }
const std::size_t& vertex_idx() const { return m_vertex_idx; } const std::size_t& vertex_idx() const { return m_vertex_idx; }
@ -67,8 +65,9 @@ public:
}; };
} // namespace internal
}} // namespace CGAL::KSP_2 } // namespace KSP_2
} // namespace CGAL
#endif // CGAL_KSP_2_EVENT_H #endif // CGAL_KSP_2_EVENT_H

View File

@ -13,7 +13,7 @@
#ifndef CGAL_KSP_2_EVENT_QUEUE_H #ifndef CGAL_KSP_2_EVENT_QUEUE_H
#define CGAL_KSP_2_EVENT_QUEUE_H #define CGAL_KSP_2_EVENT_QUEUE_H
#include <CGAL/license/Kinetic_shape_partition.h> #include <CGAL/license/Kinetic_space_partition.h>
#include <CGAL/KSP/utils.h> #include <CGAL/KSP/utils.h>
#include <CGAL/KSP_2/Event.h> #include <CGAL/KSP_2/Event.h>
@ -23,11 +23,9 @@
#include <boost/multi_index/identity.hpp> #include <boost/multi_index/identity.hpp>
#include <boost/multi_index/member.hpp> #include <boost/multi_index/member.hpp>
namespace CGAL namespace CGAL {
{ namespace KSP_2 {
namespace internal {
namespace KSP_2
{
template <typename GeomTraits> template <typename GeomTraits>
class Event_queue class Event_queue
@ -36,7 +34,7 @@ public:
typedef GeomTraits Kernel; typedef GeomTraits Kernel;
typedef typename Kernel::FT FT; typedef typename Kernel::FT FT;
typedef KSP_2::Event<GeomTraits> Event; typedef Event<GeomTraits> Event;
private: private:
@ -65,9 +63,9 @@ public:
bool empty() const { return m_queue.empty(); } bool empty() const { return m_queue.empty(); }
std::size_t size() const { return m_queue.size(); } std::size_t size() const { return m_queue.size(); }
void push (const Event& ev) void push(const Event& ev)
{ {
m_queue.insert (ev); m_queue.insert(ev);
} }
const Queue_by_time& queue_by_time() const { return m_queue.template get<0>(); } const Queue_by_time& queue_by_time() const { return m_queue.template get<0>(); }
@ -75,7 +73,7 @@ public:
Queue_by_time& queue_by_time() { return m_queue.template get<0>(); } Queue_by_time& queue_by_time() { return m_queue.template get<0>(); }
Queue_by_event_idx& queue_by_event_idx() { return m_queue.template get<1>(); } Queue_by_event_idx& queue_by_event_idx() { return m_queue.template get<1>(); }
Event pop () Event pop()
{ {
Queue_iterator iter = queue_by_time().begin(); Queue_iterator iter = queue_by_time().begin();
Event out = *iter; Event out = *iter;
@ -89,19 +87,20 @@ public:
std::cerr << e << std::endl; std::cerr << e << std::endl;
} }
void erase_vertex_events (std::size_t vertex_idx, std::vector<Event>& events) void erase_vertex_events(std::size_t vertex_idx, std::vector<Event>& events)
{ {
std::pair<Queue_by_event_idx_iterator, Queue_by_event_idx_iterator> std::pair<Queue_by_event_idx_iterator, Queue_by_event_idx_iterator>
range = queue_by_event_idx().equal_range(vertex_idx); range = queue_by_event_idx().equal_range(vertex_idx);
std::copy (range.first, range.second, std::back_inserter (events)); std::copy(range.first, range.second, std::back_inserter(events));
queue_by_event_idx().erase (range.first, range.second); queue_by_event_idx().erase(range.first, range.second);
} }
}; };
} // namespace internal
}} // namespace CGAL::KSP_2 } // namespace KSP_2
} // namespace CGAL
#endif // CGAL_KSP_2_EVENT_QUEUE_H #endif // CGAL_KSP_2_EVENT_QUEUE_H

View File

@ -13,16 +13,14 @@
#ifndef CGAL_KSP_2_META_VERTEX_H #ifndef CGAL_KSP_2_META_VERTEX_H
#define CGAL_KSP_2_META_VERTEX_H #define CGAL_KSP_2_META_VERTEX_H
#include <CGAL/license/Kinetic_shape_partition.h> #include <CGAL/license/Kinetic_space_partition.h>
#include <CGAL/KSP/utils.h> #include <CGAL/KSP/utils.h>
#include <set> #include <set>
namespace CGAL namespace CGAL {
{ namespace KSP_2 {
namespace internal {
namespace KSP_2
{
template <typename Point_2> template <typename Point_2>
class Meta_vertex class Meta_vertex
@ -36,29 +34,36 @@ private:
public: public:
Meta_vertex () { } Meta_vertex() { }
Meta_vertex (const Point_2& point) : m_point (point) { } Meta_vertex(const Point_2& point) : m_point(point) { }
const Point_2& point() const { return m_point; } const Point_2& point() const { return m_point; }
const std::set<std::size_t>& support_lines_idx() const { return m_support_lines_idx; } const std::set<std::size_t>& support_lines_idx() const { return m_support_lines_idx; }
std::set<std::size_t>& support_lines_idx() { return m_support_lines_idx; } std::set<std::size_t>& support_lines_idx() { return m_support_lines_idx; }
void make_deadend_of (std::size_t support_line_idx) void make_deadend_of(std::size_t support_line_idx)
{ m_deadends.insert (support_line_idx); } {
m_deadends.insert(support_line_idx);
}
bool is_deadend_of (std::size_t support_line_idx) const bool is_deadend_of(std::size_t support_line_idx) const
{ return m_deadends.find(support_line_idx) != m_deadends.end(); } {
return m_deadends.find(support_line_idx) != m_deadends.end();
}
void make_no_longer_deadend_of (std::size_t support_line_idx) void make_no_longer_deadend_of(std::size_t support_line_idx)
{ m_deadends.erase (support_line_idx); } {
m_deadends.erase(support_line_idx);
}
}; };
} // namespace internal
}} // namespace CGAL::KSP_2 } // namespace KSP_2
} // namespace CGAL
#endif // CGAL_KSP_2_META_VERTEX_H #endif // CGAL_KSP_2_META_VERTEX_H

View File

@ -13,13 +13,11 @@
#ifndef CGAL_KSP_2_SEGMENT_H #ifndef CGAL_KSP_2_SEGMENT_H
#define CGAL_KSP_2_SEGMENT_H #define CGAL_KSP_2_SEGMENT_H
#include <CGAL/license/Kinetic_shape_partition.h> #include <CGAL/license/Kinetic_space_partition.h>
namespace CGAL namespace CGAL {
{ namespace KSP_2 {
namespace internal {
namespace KSP_2
{
class Segment class Segment
{ {
@ -32,10 +30,10 @@ private:
public: public:
Segment () { } Segment() { }
Segment (std::size_t input_idx, std::size_t support_line_idx) Segment(std::size_t input_idx, std::size_t support_line_idx)
: m_input_idx (input_idx), m_support_line_idx (support_line_idx) { } : m_input_idx(input_idx), m_support_line_idx(support_line_idx) { }
const std::size_t& input_idx() const { return m_input_idx; } const std::size_t& input_idx() const { return m_input_idx; }
std::size_t& input_idx() { return m_input_idx; } std::size_t& input_idx() { return m_input_idx; }
@ -47,8 +45,9 @@ public:
std::size_t& support_line_idx() { return m_support_line_idx; } std::size_t& support_line_idx() { return m_support_line_idx; }
}; };
} // namespace internal
}} // namespace CGAL::KSP_2 } // namespace KSP_2
} // namespace CGAL
#endif // CGAL_KSP_2_POLYGON_H #endif // CGAL_KSP_2_POLYGON_H

View File

@ -13,16 +13,14 @@
#ifndef CGAL_KSP_2_SUPPORT_LINE_H #ifndef CGAL_KSP_2_SUPPORT_LINE_H
#define CGAL_KSP_2_SUPPORT_LINE_H #define CGAL_KSP_2_SUPPORT_LINE_H
#include <CGAL/license/Kinetic_shape_partition.h> #include <CGAL/license/Kinetic_space_partition.h>
#include <CGAL/KSP/utils.h> #include <CGAL/KSP/utils.h>
#include <CGAL/KSP_2/Vertex.h> #include <CGAL/KSP_2/Vertex.h>
namespace CGAL namespace CGAL {
{ namespace KSP_2 {
namespace internal {
namespace KSP_2
{
template <typename GeomTraits> template <typename GeomTraits>
class Support_line class Support_line
@ -47,18 +45,18 @@ private:
public: public:
Support_line () { } Support_line() { }
Support_line (const Segment_2& segment) Support_line(const Segment_2& segment)
: m_minimum ((std::numeric_limits<FT>::max)()) : m_minimum((std::numeric_limits<FT>::max)())
, m_maximum (-(std::numeric_limits<FT>::max)()) , m_maximum(-(std::numeric_limits<FT>::max)())
, m_connected_components(1) , m_connected_components(1)
{ {
m_origin = CGAL::midpoint (segment.source(), segment.target()); m_origin = CGAL::midpoint(segment.source(), segment.target());
m_vector = KSP::normalize (Vector_2 (segment.source(), segment.target())); m_vector = KSP::internal::normalize(Vector_2(segment.source(), segment.target()));
} }
Line_2 line() const { return Line_2 (m_origin, m_vector); } Line_2 line() const { return Line_2(m_origin, m_vector); }
const Point_2& origin() const { return m_origin; } const Point_2& origin() const { return m_origin; }
const Vector_2& vector() const { return m_vector; } const Vector_2& vector() const { return m_vector; }
@ -73,14 +71,14 @@ public:
CGAL::Bbox_2 bbox() const CGAL::Bbox_2 bbox() const
{ {
Point_2 pmin = to_2d (m_minimum); Point_2 pmin = to_2d(m_minimum);
Point_2 pmax = to_2d (m_maximum); Point_2 pmax = to_2d(m_maximum);
return pmin.bbox() + pmax.bbox(); return pmin.bbox() + pmax.bbox();
} }
Segment_2 segment_2() const Segment_2 segment_2() const
{ {
return Segment_2 (to_2d (m_minimum), to_2d (m_maximum)); return Segment_2(to_2d(m_minimum), to_2d(m_maximum));
} }
const std::vector<std::size_t>& segments_idx() const { return m_segments_idx; } const std::vector<std::size_t>& segments_idx() const { return m_segments_idx; }
@ -89,12 +87,12 @@ public:
const std::vector<std::size_t>& meta_vertices_idx() const { return m_meta_vertices_idx; } const std::vector<std::size_t>& meta_vertices_idx() const { return m_meta_vertices_idx; }
std::vector<std::size_t>& meta_vertices_idx() { return m_meta_vertices_idx; } std::vector<std::size_t>& meta_vertices_idx() { return m_meta_vertices_idx; }
FT to_1d (const Point_2& point) const FT to_1d(const Point_2& point) const
{ {
return m_vector * Vector_2 (m_origin, point); return m_vector * Vector_2(m_origin, point);
} }
Point_2 to_2d (const FT& point) const { return m_origin + point * m_vector; } Point_2 to_2d(const FT& point) const { return m_origin + point * m_vector; }
}; };
@ -107,7 +105,7 @@ bool operator== (const Support_line<Kernel>& a, const Support_line<Kernel>& b)
if (CGAL::abs(va * vb) < 0.99999) if (CGAL::abs(va * vb) < 0.99999)
return false; return false;
return (CGAL::approximate_sqrt(CGAL::squared_distance (b.origin(), a.line())) < 1e-10); return (CGAL::approximate_sqrt(CGAL::squared_distance(b.origin(), a.line())) < 1e-10);
} }
@ -121,7 +119,9 @@ bool operator==<CGAL::Exact_predicates_exact_constructions_kernel>
} }
#endif #endif
}} // namespace CGAL::KSP_2 } // namespace internal
} // namespace KSP_2
} // namespace CGAL
#endif // CGAL_KSP_2_SUPPORT_LINE_H #endif // CGAL_KSP_2_SUPPORT_LINE_H

View File

@ -13,15 +13,13 @@
#ifndef CGAL_KSP_2_VERTEX_H #ifndef CGAL_KSP_2_VERTEX_H
#define CGAL_KSP_2_VERTEX_H #define CGAL_KSP_2_VERTEX_H
#include <CGAL/license/Kinetic_shape_partition.h> #include <CGAL/license/Kinetic_space_partition.h>
#include <CGAL/KSP/utils.h> #include <CGAL/KSP/utils.h>
namespace CGAL namespace CGAL {
{ namespace KSP_2 {
namespace internal {
namespace KSP_2
{
template <typename FT> template <typename FT>
class Vertex class Vertex
@ -36,16 +34,16 @@ private:
public: public:
Vertex () { } Vertex() { }
Vertex (FT point, Vertex(FT point,
std::size_t segment_idx = KSP::no_element(), std::size_t segment_idx = std::size_t(-1),
unsigned int remaining_intersections = 0) unsigned int remaining_intersections = 0)
: m_point (point) : m_point(point)
, m_direction (0) , m_direction(0)
, m_segment_idx (segment_idx) , m_segment_idx(segment_idx)
, m_remaining_intersections(remaining_intersections) , m_remaining_intersections(remaining_intersections)
, m_meta_vertex_idx (KSP::no_element()) , m_meta_vertex_idx(std::size_t(-1))
{ {
} }
@ -55,7 +53,7 @@ public:
FT point(FT time) const { return m_point + time * m_direction; } FT point(FT time) const { return m_point + time * m_direction; }
const FT& direction() const { return m_direction; } const FT& direction() const { return m_direction; }
FT& direction() { return m_direction; } FT& direction() { return m_direction; }
FT speed() const { return CGAL::abs (m_direction); } FT speed() const { return CGAL::abs(m_direction); }
const unsigned int& remaining_intersections() const { return m_remaining_intersections; } const unsigned int& remaining_intersections() const { return m_remaining_intersections; }
unsigned int& remaining_intersections() { return m_remaining_intersections; } unsigned int& remaining_intersections() { return m_remaining_intersections; }
@ -81,8 +79,8 @@ public:
}; };
} // namespace internal
}} // namespace CGAL::KSP_2 } // namespace KSP_2
} // namespace CGAL
#endif // CGAL_KSP_2_VERTEX_H #endif // CGAL_KSP_2_VERTEX_H

View File

@ -10,10 +10,10 @@
// //
// Author(s) : Simon Giraudot // Author(s) : Simon Giraudot
#ifndef CGAL_KINETIC_SHAPE_RECONSTRUCTION_2_H #ifndef CGAL_KINETIC_SPACE_PARTITION_2_H
#define CGAL_KINETIC_SHAPE_PARTITION_2_H #define CGAL_KINETIC_SPACE_PARTITION_2_H
#include <CGAL/license/Kinetic_shape_partition.h> #include <CGAL/license/Kinetic_space_partition.h>
#include <CGAL/box_intersection_d.h> #include <CGAL/box_intersection_d.h>
@ -30,7 +30,7 @@ namespace CGAL
{ {
template <typename GeomTraits> template <typename GeomTraits>
class Kinetic_shape_partition_2 class Kinetic_space_partition_2
{ {
public: public:
@ -43,15 +43,15 @@ public:
typedef typename Kernel::Ray_2 Ray_2; typedef typename Kernel::Ray_2 Ray_2;
typedef typename Kernel::Vector_2 Vector_2; typedef typename Kernel::Vector_2 Vector_2;
typedef KSP_2::Data_structure<Kernel> Data; typedef KSP_2::internal::Data_structure<Kernel> Data;
typedef typename Data::Support_line Support_line; typedef typename Data::Support_line Support_line;
typedef typename Data::Segment Segment; typedef typename Data::Segment Segment;
typedef typename Data::Vertex Vertex; typedef typename Data::Vertex Vertex;
typedef typename Data::Meta_vertex Meta_vertex; typedef typename Data::Meta_vertex Meta_vertex;
typedef KSP_2::Event<Kernel> Event; typedef KSP_2::internal::Event<Kernel> Event;
typedef KSP_2::Event_queue<Kernel> Event_queue; typedef KSP_2::internal::Event_queue<Kernel> Event_queue;
private: private:
@ -60,7 +60,7 @@ private:
public: public:
Kinetic_shape_partition_2() {} Kinetic_space_partition_2() {}
template <typename SegmentRange, typename SegmentMap> template <typename SegmentRange, typename SegmentMap>
void partition (const SegmentRange& segments, SegmentMap segment_map, void partition (const SegmentRange& segments, SegmentMap segment_map,
@ -124,7 +124,7 @@ public:
const Support_line& support_line = m_data.support_line(i); const Support_line& support_line = m_data.support_line(i);
for (std::size_t s : support_line.segments_idx()) for (std::size_t s : support_line.segments_idx())
{ {
if (s == KSP::no_element()) if (s == std::size_t(-1))
{ {
if (verbose) if (verbose)
std::cerr << "ERROR: Support_line[" << i std::cerr << "ERROR: Support_line[" << i
@ -162,21 +162,21 @@ public:
{ {
const Segment& segment = m_data.segment(i); const Segment& segment = m_data.segment(i);
if (segment.source_idx() == KSP::no_element()) if (segment.source_idx() == std::size_t(-1))
{ {
if (verbose) if (verbose)
std::cerr << "ERROR: Segment[" << i std::cerr << "ERROR: Segment[" << i
<< "] has source Vertex[-1]" << std::endl; << "] has source Vertex[-1]" << std::endl;
return false; return false;
} }
if (segment.target_idx() == KSP::no_element()) if (segment.target_idx() == std::size_t(-1))
{ {
if (verbose) if (verbose)
std::cerr << "ERROR: Segment[" << i std::cerr << "ERROR: Segment[" << i
<< "] has source Vertex[-1]" << std::endl; << "] has source Vertex[-1]" << std::endl;
return false; return false;
} }
if (segment.support_line_idx() == KSP::no_element()) if (segment.support_line_idx() == std::size_t(-1))
{ {
if (verbose) if (verbose)
std::cerr << "ERROR: Segment[" << i std::cerr << "ERROR: Segment[" << i
@ -209,8 +209,8 @@ public:
<< "] acting both as source and target" << std::endl; << "] acting both as source and target" << std::endl;
return false; return false;
} }
if (m_data.source_of_segment(segment).meta_vertex_idx() != KSP::no_element() if (m_data.source_of_segment(segment).meta_vertex_idx() != std::size_t(-1)
&& m_data.target_of_segment(segment).meta_vertex_idx() != KSP::no_element() && m_data.target_of_segment(segment).meta_vertex_idx() != std::size_t(-1)
&& m_data.source_of_segment(segment).meta_vertex_idx() == m_data.target_of_segment(segment).meta_vertex_idx()) && m_data.source_of_segment(segment).meta_vertex_idx() == m_data.target_of_segment(segment).meta_vertex_idx())
{ {
if (verbose) if (verbose)
@ -261,14 +261,14 @@ public:
{ {
const Vertex& vertex = m_data.vertex(i); const Vertex& vertex = m_data.vertex(i);
if (vertex.segment_idx() == KSP::no_element()) if (vertex.segment_idx() == std::size_t(-1))
{ {
if (verbose) if (verbose)
std::cerr << "ERROR: Vertex[" << i std::cerr << "ERROR: Vertex[" << i
<< "] is on Segment[-1]" << std::endl; << "] is on Segment[-1]" << std::endl;
return false; return false;
} }
// if (vertex.meta_vertex_idx() == KSP::no_element()) // if (vertex.meta_vertex_idx() == std::size_t(-1))
// { // {
// if (verbose) // if (verbose)
// std::cerr << "ERROR: Vertex[" << i // std::cerr << "ERROR: Vertex[" << i
@ -618,7 +618,7 @@ private:
!= m_data.segment(segment_idx_b).support_line_idx()); != m_data.segment(segment_idx_b).support_line_idx());
Point_2 point; Point_2 point;
if (!KSP::intersection(segments_2[segment_idx_a], segments_2[segment_idx_b], point)) if (!KSP::internal::intersection(segments_2[segment_idx_a], segments_2[segment_idx_b], point))
return; return;
todo.push_back (std::make_tuple (point, todo.push_back (std::make_tuple (point,
@ -712,7 +712,7 @@ private:
continue; continue;
Point_2 point; Point_2 point;
if (!KSP::intersection(si, segments_2[segment_idx], point)) if (!KSP::internal::intersection(si, segments_2[segment_idx], point))
continue; continue;
Support_line& sli = m_data.support_line_of_vertex(vertex); Support_line& sli = m_data.support_line_of_vertex(vertex);
@ -896,7 +896,7 @@ private:
m_data.vertex(ev.vertex_idx()).remaining_intersections() --; m_data.vertex(ev.vertex_idx()).remaining_intersections() --;
// If there are still intersections to be made, propagate // If there are still intersections to be made, propagate
std::size_t new_vertex_idx = KSP::no_element(); std::size_t new_vertex_idx = std::size_t(-1);
if (m_data.vertex(ev.vertex_idx()).remaining_intersections() != 0) if (m_data.vertex(ev.vertex_idx()).remaining_intersections() != 0)
new_vertex_idx = m_data.propagate_segment (ev.vertex_idx()); new_vertex_idx = m_data.propagate_segment (ev.vertex_idx());
else else
@ -912,7 +912,7 @@ private:
std::vector<Event> events; std::vector<Event> events;
m_queue.erase_vertex_events (old_vertex, events); m_queue.erase_vertex_events (old_vertex, events);
if (new_vertex != KSP::no_element()) if (new_vertex != std::size_t(-1))
for (Event& ev : events) for (Event& ev : events)
{ {
ev.vertex_idx() = new_vertex; ev.vertex_idx() = new_vertex;
@ -934,13 +934,13 @@ private:
CGAL_assertion (support_line.meta_vertices_idx().size() > 1); CGAL_assertion (support_line.meta_vertices_idx().size() > 1);
std::size_t beginning = KSP::no_element(); std::size_t beginning = std::size_t(-1);
std::size_t end = KSP::no_element(); std::size_t end = std::size_t(-1);
for (std::size_t segment_idx : support_line.segments_idx()) for (std::size_t segment_idx : support_line.segments_idx())
{ {
// New segment // New segment
if (beginning == KSP::no_element()) if (beginning == std::size_t(-1))
{ {
beginning = m_data.source_of_segment(segment_idx).meta_vertex_idx(); beginning = m_data.source_of_segment(segment_idx).meta_vertex_idx();
end = m_data.target_of_segment(segment_idx).meta_vertex_idx(); end = m_data.target_of_segment(segment_idx).meta_vertex_idx();
@ -974,4 +974,4 @@ private:
} // namespace CGAL } // namespace CGAL
#endif // CGAL_KINETIC_SHAPE_RECONSTRUCTION_2_H #endif // CGAL_KINETIC_SPACE_PARTITION_2_H

View File

@ -7,7 +7,7 @@
#include <CGAL/Real_timer.h> #include <CGAL/Real_timer.h>
#include <CGAL/Surface_mesh.h> #include <CGAL/Surface_mesh.h>
#include <CGAL/Aff_transformation_2.h> #include <CGAL/Aff_transformation_2.h>
#include <CGAL/Kinetic_shape_partition_2.h> #include <CGAL/Kinetic_space_partition_2.h>
using SC = CGAL::Simple_cartesian<double>; using SC = CGAL::Simple_cartesian<double>;
using EPECK = CGAL::Exact_predicates_exact_constructions_kernel; using EPECK = CGAL::Exact_predicates_exact_constructions_kernel;
@ -23,8 +23,8 @@ using Transform = CGAL::Aff_transformation_2<EPECK>;
using Random = CGAL::Random; using Random = CGAL::Random;
using Mesh = CGAL::Surface_mesh<Point_2>; using Mesh = CGAL::Surface_mesh<Point_2>;
using Exact_reconstruction = CGAL::Kinetic_shape_partition_2<EPECK>; using Exact_reconstruction = CGAL::Kinetic_space_partition_2<EPECK>;
using Inexact_reconstruction = CGAL::Kinetic_shape_partition_2<EPICK>; using Inexact_reconstruction = CGAL::Kinetic_space_partition_2<EPICK>;
Random cgal_rand; Random cgal_rand;
@ -130,7 +130,7 @@ void test_segments(
std::vector<typename Kernel::Segment_2> segments; std::vector<typename Kernel::Segment_2> segments;
get_segments_from_exact<Kernel>(exact_segments, segments); get_segments_from_exact<Kernel>(exact_segments, segments);
CGAL::Kinetic_shape_partition_2<Kernel> ksp; CGAL::Kinetic_space_partition_2<Kernel> ksp;
ksp.partition(segments, CGAL::Identity_property_map<typename Kernel::Segment_2>(), k, 2); ksp.partition(segments, CGAL::Identity_property_map<typename Kernel::Segment_2>(), k, 2);
segments.clear(); segments.clear();
ksp.output_partition_edges_to_segment_soup(std::back_inserter(segments)); ksp.output_partition_edges_to_segment_soup(std::back_inserter(segments));

View File

@ -1,7 +1,7 @@
#include <CGAL/Simple_cartesian.h> #include <CGAL/Simple_cartesian.h>
#include <CGAL/Exact_predicates_exact_constructions_kernel.h> #include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Kinetic_shape_partition_3.h> #include <CGAL/Kinetic_space_partition_3.h>
#include <CGAL/Real_timer.h> #include <CGAL/Real_timer.h>
#include <CGAL/IO/OFF.h> #include <CGAL/IO/OFF.h>
#include <CGAL/IO/PLY.h> #include <CGAL/IO/PLY.h>
@ -19,7 +19,7 @@ bool run_test(
const std::vector<std::vector<unsigned int> >& results) { const std::vector<std::vector<unsigned int> >& results) {
using Point_3 = typename Kernel::Point_3; using Point_3 = typename Kernel::Point_3;
using KSP = CGAL::Kinetic_shape_partition_3<Kernel>; using KSP = CGAL::Kinetic_space_partition_3<Kernel>;
std::string filename = input_filename; std::string filename = input_filename;
std::ifstream input_file_off(filename); std::ifstream input_file_off(filename);
@ -38,13 +38,12 @@ bool run_test(
std::cout << input_filename << std::endl; std::cout << input_filename << std::endl;
KSP ksp(CGAL::parameters::verbose(true).debug(true)); for (std::size_t i = 0; i < ks.size(); i++) {
KSP ksp(CGAL::parameters::verbose(false).debug(false));
ksp.insert(input_vertices, input_faces); ksp.insert(input_vertices, input_faces);
ksp.initialize(); ksp.initialize();
for (std::size_t i = 0; i < ks.size(); i++) {
//std::cout << std::endl << "--INPUT K: " << k << std::endl; //std::cout << std::endl << "--INPUT K: " << k << std::endl;
ksp.partition(ks[i]); ksp.partition(ks[i]);
@ -79,38 +78,38 @@ void run_all_tests() {
//run_test<Kernel>("20-inserted-polygons.ply", { 3 }, results); //run_test<Kernel>("20-inserted-polygons.ply", { 3 }, results);
results[0] = { 837, 855, 228 }; results[0] = { 58, 89, 20 };
results[1] = { 919, 1043, 285 }; results[1] = { 63, 102, 24 };
results[2] = { 955, 1279, 360 }; results[2] = { 63, 106, 26 };
run_test<Kernel>("data/stress-test-5/test-2-rnd-polygons-20-4.off", { 1, 2, 3 }, results); run_test<Kernel>("data/stress-test-5/test-2-rnd-polygons-20-4.off", { 1, 2, 3 }, results);
results[0] = { 333, 497, 133 }; results[0] = { 206, 385, 99 };
results[1] = { 339, 529, 143 }; results[1] = { 232, 449, 118 };
results[2] = { 345, 575, 158 }; results[2] = { 265, 540, 147 };
run_test<Kernel>("data/real-data-test/test-15-polygons.off", { 1, 2, 3 }, results); run_test<Kernel>("data/real-data-test/test-15-polygons.off", { 1, 2, 3 }, results);
results[0] = { 53, 49, 10 }; results[0] = { 39, 49, 10 };
results[1] = { 54, 63, 14 }; results[1] = { 48, 70, 16 };
results[2] = { 54, 77, 18 }; results[2] = { 54, 84, 20 };
run_test<Kernel>("data/edge-case-test/test-same-time.off", { 1, 2, 3 }, results); run_test<Kernel>("data/edge-case-test/test-same-time.off", { 1, 2, 3 }, results);
// Edge tests. // Edge tests.
results[0] = { 18, 20, 4 }; results[0] = { 18, 20, 4 };
run_test<Kernel>("data/edge-case-test/test-2-polygons.off", { 1 }, results); run_test<Kernel>("data/edge-case-test/test-2-polygons.off", { 1 }, results);
results[0] = { 24, 29, 6 }; results[0] = { 22, 25, 5 };
run_test<Kernel>("data/edge-case-test/test-4-polygons.off", { 1 }, results); run_test<Kernel>("data/edge-case-test/test-4-polygons.off", { 1 }, results);
results[0] = { 24, 29, 6 }; results[0] = { 22, 25, 5 };
run_test<Kernel>("data/edge-case-test/test-5-polygons.off", { 1 }, results); run_test<Kernel>("data/edge-case-test/test-5-polygons.off", { 1 }, results);
results[0] = { 53, 52, 11 }; results[0] = { 40, 52, 11 };
results[1] = { 54, 77, 18 }; results[1] = { 51, 77, 18 };
run_test<Kernel>("data/edge-case-test/test-local-global-1.off", { 1, 2 }, results); run_test<Kernel>("data/edge-case-test/test-local-global-1.off", { 1, 2 }, results);
results[0] = { 53, 52, 11 }; results[0] = { 40, 52, 11 };
results[1] = { 53, 73, 17 }; results[1] = { 49, 73, 17 };
results[2] = { 54, 77, 18 }; results[2] = { 54, 84, 20 };
run_test<Kernel>("data/edge-case-test/test-local-global-2.off", { 1, 2, 3 }, results); run_test<Kernel>("data/edge-case-test/test-local-global-2.off", { 1, 2, 3 }, results);
// Stress tests 0. // Stress tests 0.
@ -124,34 +123,34 @@ void run_all_tests() {
run_test<Kernel>("data/stress-test-0/test-1-polygon-d.off", { 1 }, results); run_test<Kernel>("data/stress-test-0/test-1-polygon-d.off", { 1 }, results);
results[0] = { 20, 22, 4 }; results[0] = { 20, 22, 4 };
run_test<Kernel>("data/stress-test-0/test-2-polygons-ab.off", { 1 }, results); run_test<Kernel>("data/stress-test-0/test-2-polygons-ab.off", { 1 }, results);
results[0] = { 20, 19, 3 }; results[0] = { 19, 19, 3 };
results[1] = { 20, 22, 4 }; results[1] = { 20, 22, 4 };
run_test<Kernel>("data/stress-test-0/test-2-polygons-ac.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-0/test-2-polygons-ac.off", { 1, 2 }, results);
results[0] = { 20, 22, 4 }; results[0] = { 20, 22, 4 };
run_test<Kernel>("data/stress-test-0/test-2-polygons-ad.off", { 1 }, results); run_test<Kernel>("data/stress-test-0/test-2-polygons-ad.off", { 1 }, results);
results[0] = { 18, 18, 3 }; results[0] = { 18, 18, 3 };
run_test<Kernel>("data/stress-test-0/test-2-polygons-bc.off", { 1 }, results); run_test<Kernel>("data/stress-test-0/test-2-polygons-bc.off", { 1 }, results);
results[0] = { 19, 18, 3 }; results[0] = { 18, 18, 3 };
results[1] = { 19, 21, 4 }; results[1] = { 19, 21, 4 };
run_test<Kernel>("data/stress-test-0/test-2-polygons-bd.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-0/test-2-polygons-bd.off", { 1, 2 }, results);
results[0] = { 19, 21, 4 }; results[0] = { 19, 21, 4 };
run_test<Kernel>("data/stress-test-0/test-2-polygons-cd.off", { 1 }, results); run_test<Kernel>("data/stress-test-0/test-2-polygons-cd.off", { 1 }, results);
results[0] = { 27, 32, 6 }; results[0] = { 27, 32, 6 };
run_test<Kernel>("data/stress-test-0/test-3-polygons-abc.off", { 1 }, results); run_test<Kernel>("data/stress-test-0/test-3-polygons-abc.off", { 1 }, results);
results[0] = { 30, 33, 6 }; results[0] = { 28, 33, 6 };
results[1] = { 30, 39, 8 }; results[1] = { 30, 39, 8 };
run_test<Kernel>("data/stress-test-0/test-3-polygons-abd.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-0/test-3-polygons-abd.off", { 1, 2 }, results);
results[0] = { 28, 32, 6 }; results[0] = { 27, 32, 6 };
results[1] = { 28, 35, 7 }; results[1] = { 28, 35, 7 };
run_test<Kernel>("data/stress-test-0/test-3-polygons-acd.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-0/test-3-polygons-acd.off", { 1, 2 }, results);
results[0] = { 26, 28, 5 }; results[0] = { 25, 28, 5 };
results[1] = { 26, 31, 6 }; results[1] = { 26, 31, 6 };
run_test<Kernel>("data/stress-test-0/test-3-polygons-bcd.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-0/test-3-polygons-bcd.off", { 1, 2 }, results);
results[0] = { 38, 46, 9 }; results[0] = { 36, 46, 9 };
results[1] = { 38, 52, 11 }; results[1] = { 38, 52, 11 };
run_test<Kernel>("data/stress-test-0/test-4-polygons-abcd.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-0/test-4-polygons-abcd.off", { 1, 2 }, results);
results[0] = { 66, 76, 16 }; results[0] = { 54, 76, 16 };
results[1] = { 67, 102, 24 }; results[1] = { 64, 102, 24 };
results[2] = { 67, 109, 26 }; results[2] = { 67, 109, 26 };
run_test<Kernel>("data/stress-test-0/test-6-polygons.off", { 1, 2, 3 }, results); run_test<Kernel>("data/stress-test-0/test-6-polygons.off", { 1, 2, 3 }, results);
@ -165,13 +164,13 @@ void run_all_tests() {
run_test<Kernel>("data/stress-test-1/test-3-rnd-polygons-1-4.off", { 1 }, results); run_test<Kernel>("data/stress-test-1/test-3-rnd-polygons-1-4.off", { 1 }, results);
results[0] = { 14, 13, 2 }; results[0] = { 14, 13, 2 };
run_test<Kernel>("data/stress-test-1/test-4-rnd-polygons-1-4.off", { 1 }, results); run_test<Kernel>("data/stress-test-1/test-4-rnd-polygons-1-4.off", { 1 }, results);
results[0] = { 20, 18, 3 }; results[0] = { 18, 18, 3 };
results[1] = { 20, 22, 4 }; results[1] = { 20, 22, 4 };
run_test<Kernel>("data/stress-test-1/test-5-rnd-polygons-2-4.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-1/test-5-rnd-polygons-2-4.off", { 1, 2 }, results);
results[0] = { 19, 18, 3 }; results[0] = { 18, 18, 3 };
results[1] = { 19, 21, 4 }; results[1] = { 19, 21, 4 };
run_test<Kernel>("data/stress-test-1/test-6-rnd-polygons-2-4.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-1/test-6-rnd-polygons-2-4.off", { 1, 2 }, results);
results[0] = { 20, 22, 4 }; results[0] = { 18, 18, 3 };
run_test<Kernel>("data/stress-test-1/test-7-rnd-polygons-2-4.off", { 1 }, results); run_test<Kernel>("data/stress-test-1/test-7-rnd-polygons-2-4.off", { 1 }, results);
// Stress tests 2. // Stress tests 2.
@ -184,38 +183,38 @@ void run_all_tests() {
run_test<Kernel>("data/stress-test-2/test-3-rnd-polygons-1-4.off", { 1 }, results); run_test<Kernel>("data/stress-test-2/test-3-rnd-polygons-1-4.off", { 1 }, results);
results[0] = { 14, 13, 2 }; results[0] = { 14, 13, 2 };
run_test<Kernel>("data/stress-test-2/test-4-rnd-polygons-1-3.off", { 1 }, results); run_test<Kernel>("data/stress-test-2/test-4-rnd-polygons-1-3.off", { 1 }, results);
results[0] = { 19, 17, 3 }; results[0] = { 17, 17, 3 };
results[1] = { 19, 21, 4 }; results[1] = { 19, 21, 4 };
run_test<Kernel>("data/stress-test-2/test-5-rnd-polygons-2-4.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-2/test-5-rnd-polygons-2-4.off", { 1, 2 }, results);
results[0] = { 26, 31, 6 }; results[0] = { 22, 23, 4 };
run_test<Kernel>("data/stress-test-2/test-6-rnd-polygons-3-4.off", { 1 }, results); run_test<Kernel>("data/stress-test-2/test-6-rnd-polygons-3-4.off", { 1 }, results);
// Stress tests 3. // Stress tests 3.
results[0] = { 20, 18, 3 }; results[0] = { 18, 18, 3 };
results[1] = { 20, 22, 4 }; results[1] = { 20, 22, 4 };
run_test<Kernel>("data/stress-test-3/test-1-rnd-polygons-2-3.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-3/test-1-rnd-polygons-2-3.off", { 1, 2 }, results);
results[0] = { 17, 17, 3 }; results[0] = { 17, 17, 3 };
run_test<Kernel>("data/stress-test-3/test-2-rnd-polygons-2-3.off", { 1 }, results); run_test<Kernel>("data/stress-test-3/test-2-rnd-polygons-2-3.off", { 1 }, results);
results[0] = { 19, 18, 3 }; results[0] = { 18, 18, 3 };
results[1] = { 19, 21, 4 }; results[1] = { 19, 21, 4 };
run_test<Kernel>("data/stress-test-3/test-3-rnd-polygons-2-3.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-3/test-3-rnd-polygons-2-3.off", { 1, 2 }, results);
results[0] = { 19, 17, 3 }; results[0] = { 17, 17, 3 };
results[1] = { 19, 21, 4 }; results[1] = { 19, 21, 4 };
run_test<Kernel>("data/stress-test-3/test-4-rnd-polygons-2-4.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-3/test-4-rnd-polygons-2-4.off", { 1, 2 }, results);
//results[0] = { 12, 11, 2 }; //results[0] = { 12, 11, 2 };
//run_test<Kernel>("data/stress-test-3/test-5-rnd-polygons-1-3.off", { 1 }, results); //run_test<Kernel>("data/stress-test-3/test-5-rnd-polygons-1-3.off", { 1 }, results);
results[0] = { 19, 18, 3 }; results[0] = { 18, 18, 3 };
results[1] = { 19, 21, 4 }; results[1] = { 19, 21, 4 };
run_test<Kernel>("data/stress-test-3/test-6-rnd-polygons-2-3.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-3/test-6-rnd-polygons-2-3.off", { 1, 2 }, results);
results[0] = { 22, 21, 3 }; results[0] = { 21, 21, 3 };
results[1] = { 22, 24, 4 }; results[1] = { 22, 24, 4 };
run_test<Kernel>("data/stress-test-3/test-7-rnd-polygons-2-4.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-3/test-7-rnd-polygons-2-4.off", { 1, 2 }, results);
results[0] = { 18, 17, 3 }; results[0] = { 17, 17, 3 };
results[1] = { 18, 20, 4 }; results[1] = { 18, 20, 4 };
run_test<Kernel>("data/stress-test-3/test-8-rnd-polygons-2-10.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-3/test-8-rnd-polygons-2-10.off", { 1, 2 }, results);
results[0] = { 36, 37, 7 }; results[0] = { 31, 37, 7 };
results[1] = { 39, 46, 10 }; results[1] = { 34, 46, 10 };
results[2] = { 39, 57, 13 }; results[2] = { 39, 57, 13 };
run_test<Kernel>("data/stress-test-3/test-9-rnd-polygons-4-4.off", { 1, 2, 3 }, results); run_test<Kernel>("data/stress-test-3/test-9-rnd-polygons-4-4.off", { 1, 2, 3 }, results);
results[0] = { 55, 84, 19 }; results[0] = { 55, 84, 19 };
@ -223,61 +222,61 @@ void run_all_tests() {
// Stress tests 4. // Stress tests 4.
results[0] = { 20, 22, 4 }; results[0] = { 17, 17, 3 };
run_test<Kernel>("data/stress-test-4/test-1-rnd-polygons-2-6.off", { 1 }, results); run_test<Kernel>("data/stress-test-4/test-1-rnd-polygons-2-6.off", { 1 }, results);
results[0] = { 29, 32, 6 }; results[0] = { 27, 32, 6 };
results[1] = { 29, 38, 8 }; results[1] = { 29, 38, 8 };
run_test<Kernel>("data/stress-test-4/test-2-rnd-polygons-3-8.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-4/test-2-rnd-polygons-3-8.off", { 1, 2 }, results);
results[0] = { 37, 38, 7 }; results[0] = { 32, 38, 7 };
results[1] = { 37, 45, 9 }; results[1] = { 35, 45, 9 };
results[2] = { 37, 51, 11 }; results[2] = { 37, 51, 11 };
run_test<Kernel>("data/stress-test-4/test-3-rnd-polygons-4-4.off", { 1, 2, 3 }, results); run_test<Kernel>("data/stress-test-4/test-3-rnd-polygons-4-4.off", { 1, 2, 3 }, results);
results[0] = { 35, 27, 5 }; results[0] = { 25, 27, 5 };
results[1] = { 37, 41, 8 }; results[1] = { 33, 41, 8 };
results[2] = { 37, 53, 12 }; results[2] = { 37, 53, 12 };
run_test<Kernel>("data/stress-test-4/test-4-rnd-polygons-4-6.off", { 1, 2, 3 }, results); run_test<Kernel>("data/stress-test-4/test-4-rnd-polygons-4-6.off", { 1, 2, 3 }, results);
results[0] = { 83, 105, 24 }; results[0] = { 61, 91, 20 };
results[1] = { 83, 128, 31 }; results[1] = { 73, 121, 29 };
results[2] = { 83, 128, 31 }; results[2] = { 83, 145, 36 };
run_test<Kernel>("data/stress-test-4/test-5-rnd-polygons-6-4.off", { 1, 2, 3}, results); run_test<Kernel>("data/stress-test-4/test-5-rnd-polygons-6-4.off", { 1, 2, 3 }, results);
results[0] = { 50, 62, 13 }; results[0] = { 45, 62, 13 };
results[1] = { 50, 75, 17 }; results[1] = { 50, 75, 17 };
run_test<Kernel>("data/stress-test-4/test-6-rnd-polygons-5-6.off", { 1, 2 }, results); run_test<Kernel>("data/stress-test-4/test-6-rnd-polygons-5-6.off", { 1, 2 }, results);
results[0] = { 98, 105, 24 }; results[0] = { 64, 97, 22 };
results[1] = { 104, 147, 36 }; results[1] = { 84, 141, 34 };
results[2] = { 104, 157, 39 }; results[2] = { 88, 151, 37 };
run_test<Kernel>("data/stress-test-4/test-7-rnd-polygons-7-6.off", { 1, 2, 3 }, results); run_test<Kernel>("data/stress-test-4/test-7-rnd-polygons-7-6.off", { 1, 2, 3 }, results);
results[0] = { 69, 77, 16 }; results[0] = { 56, 77, 16 };
results[1] = { 69, 107, 25 }; results[1] = { 68, 107, 25 };
results[2] = { 69, 110, 26 }; results[2] = { 69, 110, 26 };
run_test<Kernel>("data/stress-test-4/test-8-rnd-polygons-7-8.off", { 1, 2, 3 }, results); run_test<Kernel>("data/stress-test-4/test-8-rnd-polygons-7-8.off", { 1, 2, 3 }, results);
results[0] = { 243, 304, 74 }; results[0] = { 172, 304, 74 };
results[1] = { 248, 360, 93 }; results[1] = { 192, 366, 95 };
results[2] = { 248, 384, 101}; results[2] = { 198, 382, 100};
run_test<Kernel>("data/stress-test-4/test-9-rnd-polygons-12-4.off", { 1, 2, 3 }, results); run_test<Kernel>("data/stress-test-4/test-9-rnd-polygons-12-4.off", { 1, 2, 3 }, results);
// Stress tests 5. // Stress tests 5.
results[0] = { 386, 349, 83 }; results[0] = { 202, 351, 84 };
results[1] = { 417, 459, 115 }; results[1] = { 232, 427, 107 };
results[2] = { 444, 616, 165 }; results[2] = { 284, 558, 146 };
run_test<Kernel>("data/stress-test-5/test-1-rnd-polygons-15-6.off", { 1, 2, 3 }, results); run_test<Kernel>("data/stress-test-5/test-1-rnd-polygons-15-6.off", { 1, 2, 3 }, results);
results[0] = { 837, 855, 228 }; results[0] = { 58, 89, 20 };
results[1] = { 919, 1043, 285 }; results[1] = { 63, 102, 24 };
results[2] = { 955, 1279, 360 }; results[2] = { 63, 106, 26 };
run_test<Kernel>("data/stress-test-5/test-2-rnd-polygons-20-4.off", { 1, 2, 3 }, results); run_test<Kernel>("data/stress-test-5/test-2-rnd-polygons-20-4.off", { 1, 2, 3 }, results);
// Real data tests. // Real data tests.
results[0] = { 128, 162, 38 }; results[0] = { 91, 143, 33 };
results[1] = { 133, 220, 56 }; results[1] = { 109, 187, 46 };
results[2] = { 133, 241, 62 }; results[2] = { 127, 233, 60 };
run_test<Kernel>("data/real-data-test/test-10-polygons.off", { 1, 2, 3 }, results); run_test<Kernel>("data/real-data-test/test-10-polygons.off", { 1, 2, 3 }, results);
results[0] = { 2225, 1360, 347 }; results[0] = { 1006, 2067, 552 };
results[1] = { 2336, 1540, 403 }; results[1] = { 973, 1984, 527 };
results[2] = { 2527, 2018, 550 }; results[2] = { 1186, 2560, 708 };
run_test<Kernel>("data/real-data-test/test-40-polygons.ply", { 1, 2, 3 }, results); run_test<Kernel>("data/real-data-test/test-40-polygons.ply", { 1, 2, 3 }, results);
const auto kernel_name = boost::typeindex::type_id<Kernel>().pretty_name(); const auto kernel_name = boost::typeindex::type_id<Kernel>().pretty_name();