removing redefinition of Support_line in KSP_2

This commit is contained in:
Sven Oesau 2024-03-28 19:09:01 +01:00
parent 55c9b036e0
commit fa11cf6fce
2 changed files with 27 additions and 27 deletions

View File

@ -38,13 +38,13 @@ public:
typedef typename Kernel::Line_2 Line_2;
typedef typename Kernel::Segment_2 Segment_2;
typedef Support_line<Kernel> Support_line;
typedef Support_line<Kernel> Support_line_DS;
typedef Segment Segment;
typedef Vertex<FT> Vertex;
typedef Meta_vertex<Point_2> Meta_vertex;
typedef std::vector<Support_line> Support_lines;
typedef std::vector<Support_line_DS> Support_lines;
typedef std::vector<Segment> Segments;
typedef std::vector<Vertex> Vertices;
@ -96,8 +96,8 @@ public:
Segment& segment(std::size_t idx) { return m_segments[idx]; }
std::size_t number_of_support_lines() const { return m_support_lines.size(); }
const Support_line& support_line(std::size_t idx) const { return m_support_lines[idx]; }
Support_line& support_line(std::size_t idx) { return m_support_lines[idx]; }
const Support_line_DS& support_line(std::size_t idx) const { return m_support_lines[idx]; }
Support_line_DS& support_line(std::size_t idx) { return m_support_lines[idx]; }
std::size_t number_of_meta_vertices() const { return m_meta_vertices.size(); }
const Meta_vertex& meta_vertex(std::size_t idx) const { return m_meta_vertices[idx]; }
@ -216,37 +216,37 @@ public:
// Segment/idx -> Support_line
inline const Support_line& support_line_of_segment(const Segment& segment) const
inline const Support_line_DS& support_line_of_segment(const Segment& segment) const
{
return m_support_lines[segment.support_line_idx()];
}
inline Support_line& support_line_of_segment(const Segment& segment)
inline Support_line_DS& support_line_of_segment(const Segment& segment)
{
return m_support_lines[segment.support_line_idx()];
}
inline const Support_line& support_line_of_segment(std::size_t segment_idx) const
inline const Support_line_DS& support_line_of_segment(std::size_t segment_idx) const
{
return support_line_of_segment(m_segments[segment_idx]);
}
inline Support_line& support_line_of_segment(std::size_t segment_idx)
inline Support_line_DS& support_line_of_segment(std::size_t segment_idx)
{
return support_line_of_segment(m_segments[segment_idx]);
}
// Vertex/idx -> Support_line
inline const Support_line& support_line_of_vertex(const Vertex& vertex) const
inline const Support_line_DS& support_line_of_vertex(const Vertex& vertex) const
{
return support_line_of_segment(vertex.segment_idx());
}
inline Support_line& support_line_of_vertex(const Vertex& vertex)
inline Support_line_DS& support_line_of_vertex(const Vertex& vertex)
{
return support_line_of_segment(vertex.segment_idx());
}
inline const Support_line& support_line_of_vertex(std::size_t vertex_idx) const
inline const Support_line_DS& support_line_of_vertex(std::size_t vertex_idx) const
{
return support_line_of_vertex(m_vertices[vertex_idx]);
}
inline Support_line& support_line_of_vertex(std::size_t vertex_idx)
inline Support_line_DS& support_line_of_vertex(std::size_t vertex_idx)
{
return support_line_of_vertex(m_vertices[vertex_idx]);
}
@ -294,7 +294,7 @@ public:
const Meta_vertex& meta_vertex = m_meta_vertices[meta_vertex_idx];
for (std::size_t support_line_idx : meta_vertex.support_lines_idx())
{
const Support_line& support_line = m_support_lines[support_line_idx];
const Support_line_DS& support_line = m_support_lines[support_line_idx];
for (std::size_t segment_idx : support_line.segments_idx())
{
const Segment& segment = m_segments[segment_idx];
@ -309,7 +309,7 @@ public:
{
return point_of_vertex(vertex).bbox();
}
inline CGAL::Bbox_2 bbox(const Support_line& support_line) const
inline CGAL::Bbox_2 bbox(const Support_line_DS& support_line) const
{
return std::accumulate(support_line.segments_idx().begin(), support_line.segments_idx().end(),
CGAL::Bbox_2(),
@ -330,7 +330,7 @@ public:
Segment_2 segment_2(std::size_t segment_idx) const
{
const Segment& segment = m_segments[segment_idx];
const Support_line& support_line = m_support_lines[segment.support_line_idx()];
const Support_line_DS& support_line = m_support_lines[segment.support_line_idx()];
const Vertex& source = m_vertices[segment.source_idx()];
const Vertex& target = m_vertices[segment.target_idx()];
@ -426,14 +426,14 @@ public:
std::size_t add_support_line(const Segment_2& segment)
{
m_support_lines.push_back(Support_line(segment));
m_support_lines.push_back(Support_line_DS(segment));
return std::size_t(m_support_lines.size() - 1);
}
Segment& add_segment(const Segment_2 segment, std::size_t input_idx = std::size_t(-1))
{
// Check if support line exists first
Support_line new_support_line(segment);
Support_line_DS new_support_line(segment);
std::size_t support_line_idx = std::size_t(-1);
for (std::size_t i = 0; i < number_of_support_lines(); ++i)
if (new_support_line == support_line(i))
@ -563,7 +563,7 @@ public:
// std::size_t source_idx = segment.source_idx();
std::size_t target_idx = segment.target_idx();
Support_line& support_line = support_line_of_segment(segment_idx);
Support_line_DS& support_line = support_line_of_segment(segment_idx);
std::sort(meta_vertices_idx.begin(), meta_vertices_idx.end(),
[&](const std::size_t& a,

View File

@ -44,7 +44,7 @@ public:
typedef typename Kernel::Vector_2 Vector_2;
typedef KSP_2::internal::Data_structure<Kernel> Data;
typedef typename Data::Support_line Support_line;
typedef typename Data::Support_line_DS Support_line_DS;
typedef typename Data::Segment Segment;
typedef typename Data::Vertex Vertex;
@ -107,7 +107,7 @@ public:
// Prepare output by sorting segments along support lines;
for (std::size_t i = 0; i < m_data.number_of_support_lines(); ++ i)
{
Support_line& support_line = m_data.support_line(i);
Support_line_DS& support_line = m_data.support_line(i);
std::sort (support_line.segments_idx().begin(), support_line.segments_idx().end(),
[&](const std::size_t& a, const std::size_t& b) -> bool
{
@ -121,7 +121,7 @@ public:
{
for (std::size_t i = 0; i < m_data.number_of_support_lines(); ++ i)
{
const Support_line& support_line = m_data.support_line(i);
const Support_line_DS& support_line = m_data.support_line(i);
for (std::size_t s : support_line.segments_idx())
{
if (s == std::size_t(-1))
@ -555,7 +555,7 @@ private:
void initialize_vertices_directions (Segment& segment, unsigned int k)
{
const Support_line& support_line = m_data.support_line_of_segment (segment);
const Support_line_DS& support_line = m_data.support_line_of_segment (segment);
Vertex& source = m_data.source_of_segment (segment);
Vertex& target = m_data.target_of_segment (segment);
@ -701,7 +701,7 @@ private:
if (m_data.segment_of_vertex(vertex).support_line_idx() == j)
continue;
const Support_line& support_line = m_data.support_line(j);
const Support_line_DS& support_line = m_data.support_line(j);
if (!CGAL::do_overlap(si_bbox, support_line_bboxes[j]))
continue;
@ -715,7 +715,7 @@ private:
if (!KSP::internal::intersection(si, segments_2[segment_idx], point))
continue;
Support_line& sli = m_data.support_line_of_vertex(vertex);
Support_line_DS& sli = m_data.support_line_of_vertex(vertex);
FT dist = CGAL::approximate_sqrt (CGAL::squared_distance (sli.to_2d(vertex.point(0)), point));
FT time = dist / vertex.speed();
@ -755,7 +755,7 @@ private:
// intersection between two colinear segments
for (std::size_t i = 0; i < m_data.number_of_support_lines(); ++ i)
{
Support_line& support_line = m_data.support_line(i);
Support_line_DS& support_line = m_data.support_line(i);
if (support_line.connected_components() < 2)
continue;
@ -814,7 +814,7 @@ private:
for (std::size_t i = 0; i < m_data.number_of_support_lines(); ++ i)
{
Support_line& support_line = m_data.support_line(i);
Support_line_DS& support_line = m_data.support_line(i);
for (std::size_t segment_idx : support_line.segments_idx())
{
@ -930,7 +930,7 @@ private:
{
for (std::size_t i = 0; i < m_data.number_of_support_lines(); ++ i)
{
const Support_line& support_line = m_data.support_line(i);
const Support_line_DS& support_line = m_data.support_line(i);
CGAL_assertion (support_line.meta_vertices_idx().size() > 1);