Refine sampling (WIP)

This commit is contained in:
Simon Giraudot 2015-11-25 10:47:43 +01:00
parent 1f4191bbc7
commit a1da4ab306
1 changed files with 40 additions and 1 deletions

View File

@ -211,7 +211,9 @@ namespace internal {
std::cerr << " -> " << m_points.size () - size_before << " corner point(s) created." << std::endl;
}
std::cerr << "Refining sampling... " << std::endl;
refine_sampling (double epsilon);
std::cerr << " -> Done" << std::endl;
}
template <typename BackInserter>
@ -882,6 +884,43 @@ namespace internal {
m_status.push_back (CORNER);
}
}
void refine_sampling (double epsilon)
{
double d_DeltaEdge = std::sqrt (2.) * epsilon;
// Work in progress
//
//
for (std::size_t k = 0; k < m_corners.size(); ++ k)
{
if (!(m_corners[k].active))
continue;
for (std::size_t ed = 0; ed < m_corners[k].edges.size(); ++ ed)
{
const Edge& edge = m_corners[k].edges[ed];
for (std::size_t i = 0; i < edge.indices.size(); ++ i)
{
//if too close from a corner, ->remove
if (CGAL::squared_distance (m_corners[k].support, m_points[edge.indices[i]])
< d_DeltaEdge * d_DeltaEdge)
m_status[edge.indices[i]] = false;
//if too close from a corner (non dominant side), ->remove
if (m_corners[k].direction[ed].squared_length() > 0
&& m_corners[k].direction[ed]
* Vector (m_corners[k].support, m_points[edge.indices[i]]) < 0
&& CGAL::squared_distance (m_corners[k].support, m_points[edge.indices[i]])
< 4 * d_DeltaEdge * d_DeltaEdge)
m_status[edge.indices[i]] = false;
}
}
}
}
};