Deal with -1

This commit is contained in:
Andreas Fabri 2024-04-03 10:32:13 +01:00
parent d723f172a6
commit 7d50a1ebf1
6 changed files with 37 additions and 31 deletions

View File

@ -391,8 +391,9 @@ public:
Direction_2 to_source(s - centroid); Direction_2 to_source(s - centroid);
Direction_2 to_target(t - centroid); Direction_2 to_target(t - centroid);
std::size_t source_idx = -1; const std::size_t uninitialized = static_cast<std::size_t>(-1);
std::size_t target_idx = -1; std::size_t source_idx = uninitialized;
std::size_t target_idx = uninitialized;
event.crossed_edge = edge; event.crossed_edge = edge;
event.support_plane = sp_idx; event.support_plane = sp_idx;
@ -406,15 +407,15 @@ public:
event.face = faces.first; event.face = faces.first;
for (std::size_t i = 0; i < sp.data().original_directions.size(); i++) { for (std::size_t i = 0; i < sp.data().original_directions.size(); i++) {
if (source_idx == -1 && sp.data().original_directions[i] > to_source) if (source_idx == uninitialized && sp.data().original_directions[i] > to_source)
source_idx = i; source_idx = i;
if (target_idx == -1 && sp.data().original_directions[i] > to_target) if (target_idx == uninitialized && sp.data().original_directions[i] > to_target)
target_idx = i; target_idx = i;
} }
source_idx = (source_idx == -1) ? 0 : source_idx; source_idx = (source_idx == uninitialized) ? 0 : source_idx;
target_idx = (target_idx == -1) ? 0 : target_idx; target_idx = (target_idx == uninitialized) ? 0 : target_idx;
std::size_t num; std::size_t num;
@ -608,7 +609,8 @@ public:
template<typename PointRange> template<typename PointRange>
std::pair<std::size_t, bool> add_support_plane(const PointRange& polygon, const bool is_bbox, const typename Intersection_kernel::Plane_3& plane) { std::pair<std::size_t, bool> add_support_plane(const PointRange& polygon, const bool is_bbox, const typename Intersection_kernel::Plane_3& plane) {
const Support_plane new_support_plane(polygon, is_bbox, plane); const Support_plane new_support_plane(polygon, is_bbox, plane);
std::size_t support_plane_idx = std::size_t(-1); const std::size_t uninitialized = static_cast<std::size_t>(-1);
std::size_t support_plane_idx = uninitialized;
for (std::size_t i = 0; i < number_of_support_planes(); ++i) { for (std::size_t i = 0; i < number_of_support_planes(); ++i) {
if (new_support_plane == support_plane(i)) { if (new_support_plane == support_plane(i)) {
@ -617,7 +619,7 @@ public:
} }
} }
if (support_plane_idx == std::size_t(-1)) { if (support_plane_idx == uninitialized) {
support_plane_idx = number_of_support_planes(); support_plane_idx = number_of_support_planes();
m_support_planes.push_back(new_support_plane); m_support_planes.push_back(new_support_plane);
} }
@ -633,7 +635,8 @@ public:
template<typename PointRange> template<typename PointRange>
std::pair<std::size_t, bool> add_support_plane(const PointRange& polygon, const bool is_bbox) { std::pair<std::size_t, bool> add_support_plane(const PointRange& polygon, const bool is_bbox) {
const Support_plane new_support_plane(polygon, is_bbox); const Support_plane new_support_plane(polygon, is_bbox);
std::size_t support_plane_idx = std::size_t(-1); const std::size_t uninitialized = static_cast<std::size_t>(- 1);
std::size_t support_plane_idx = uninitialized;
for (std::size_t i = 0; i < number_of_support_planes(); ++i) { for (std::size_t i = 0; i < number_of_support_planes(); ++i) {
if (new_support_plane == support_plane(i)) { if (new_support_plane == support_plane(i)) {
@ -642,7 +645,7 @@ public:
} }
} }
if (support_plane_idx == std::size_t(-1)) { if (support_plane_idx == uninitialized) {
support_plane_idx = number_of_support_planes(); support_plane_idx = number_of_support_planes();
m_support_planes.push_back(new_support_plane); m_support_planes.push_back(new_support_plane);
} }
@ -778,13 +781,14 @@ public:
const auto& iplanes0 = all_iplanes[i]; const auto& iplanes0 = all_iplanes[i];
const auto& iplanes1 = all_iplanes[ip]; const auto& iplanes1 = all_iplanes[ip];
std::size_t common_bbox_plane_idx = std::size_t(-1); const std::size_t uninitialized = static_cast<std::size_t>(-1);
std::size_t common_bbox_plane_idx = uninitialized;
bool dump = false; bool dump = false;
const std::function<void(const std::size_t& idx)> lambda = const std::function<void(const std::size_t& idx)> lambda =
[&](const std::size_t& idx) { [&](const std::size_t& idx) {
if (idx < 6) { if (idx < 6) {
if (common_bbox_plane_idx != std::size_t(-1)) if (common_bbox_plane_idx != uninitialized)
dump = true; dump = true;
common_bbox_plane_idx = idx; common_bbox_plane_idx = idx;
} }
@ -808,11 +812,11 @@ public:
vout.close(); vout.close();
} }
CGAL_assertion(common_bbox_plane_idx != std::size_t(-1)); CGAL_assertion(common_bbox_plane_idx != uninitialized);
common_bbox_planes_idx.push_back(common_bbox_plane_idx); common_bbox_planes_idx.push_back(common_bbox_plane_idx);
const auto pair = map_lines_idx.insert( const auto pair = map_lines_idx.insert(
std::make_pair(common_bbox_plane_idx, std::size_t(-1))); std::make_pair(common_bbox_plane_idx, uninitialized));
const bool is_inserted = pair.second; const bool is_inserted = pair.second;
if (is_inserted) { if (is_inserted) {
typename Intersection_kernel::Line_3 line; typename Intersection_kernel::Line_3 line;
@ -874,10 +878,11 @@ public:
template<typename PointRange> template<typename PointRange>
void add_bbox_polygon(const PointRange& polygon) { void add_bbox_polygon(const PointRange& polygon) {
bool is_added = true; bool is_added = true;
std::size_t support_plane_idx = std::size_t(-1); const std::size_t uninitialized = static_cast<std::size_t>(-1);
std::size_t support_plane_idx = uninitialized;
std::tie(support_plane_idx, is_added) = add_support_plane(polygon, true); std::tie(support_plane_idx, is_added) = add_support_plane(polygon, true);
CGAL_assertion(is_added); CGAL_assertion(is_added);
CGAL_assertion(support_plane_idx != std::size_t(-1)); CGAL_assertion(support_plane_idx != uninitialized);
std::array<IVertex, 4> ivertices; std::array<IVertex, 4> ivertices;
std::array<Point_2, 4> points; std::array<Point_2, 4> points;

View File

@ -88,8 +88,8 @@ private:
std::size_t index; std::size_t index;
std::size_t input; std::size_t input;
Face_info() : Face_info() :
index(-1), index(static_cast<std::size_t>(-1)),
input(-1) input(static_cast<std::size_t>(-1))
{ } { }
}; };
@ -254,7 +254,8 @@ private:
auto& pair = map_volumes.at(pface); auto& pair = map_volumes.at(pface);
if (pair.first != -1 && pair.second != -1) return; if (pair.first != -1 && pair.second != -1) return;
std::size_t volume_indices[] = { static_cast<std::size_t>(-1), static_cast<std::size_t>(-1) }; const std::size_t uninitialized = static_cast<std::size_t>(-1);
std::size_t volume_indices[] = { uninitialized, uninitialized };
//std::size_t other[] = { static_cast<std::size_t>(-1), static_cast<std::size_t>(-1) }; //std::size_t other[] = { static_cast<std::size_t>(-1), static_cast<std::size_t>(-1) };
// Start new volume cell // Start new volume cell
@ -300,11 +301,11 @@ private:
Oriented_side inverse_side = oriented_side(neighbor, pface); Oriented_side inverse_side = oriented_side(neighbor, pface);
CGAL_assertion(side != COPLANAR && inverse_side != COPLANAR); CGAL_assertion(side != COPLANAR && inverse_side != COPLANAR);
if (side == ON_POSITIVE_SIDE && volume_indices[0] != static_cast<std::size_t>(-1)) { if (side == ON_POSITIVE_SIDE && volume_indices[0] != uninitialized) {
if (associate(neighbor, volume_indices[0], inverse_side, volumes, map_volumes)) if (associate(neighbor, volume_indices[0], inverse_side, volumes, map_volumes))
queue[0].push(std::make_pair(neighbor, inverse_side)); queue[0].push(std::make_pair(neighbor, inverse_side));
} }
else if (side == ON_NEGATIVE_SIDE && volume_indices[1] != static_cast<std::size_t>(-1)) else if (side == ON_NEGATIVE_SIDE && volume_indices[1] != uninitialized)
if (associate(neighbor, volume_indices[1], inverse_side, volumes, map_volumes)) if (associate(neighbor, volume_indices[1], inverse_side, volumes, map_volumes))
queue[1].push(std::make_pair(neighbor, inverse_side)); queue[1].push(std::make_pair(neighbor, inverse_side));
@ -316,13 +317,13 @@ private:
find_adjacent_faces(pface, pedge, neighbor_faces, positive_side, negative_side); find_adjacent_faces(pface, pedge, neighbor_faces, positive_side, negative_side);
CGAL_assertion(positive_side != negative_side); CGAL_assertion(positive_side != negative_side);
if (volume_indices[0] != -1) { if (volume_indices[0] != uninitialized) {
Oriented_side inverse_side = (positive_side.first == pface.first) ? ON_POSITIVE_SIDE : oriented_side(positive_side, pface); Oriented_side inverse_side = (positive_side.first == pface.first) ? ON_POSITIVE_SIDE : oriented_side(positive_side, pface);
if (associate(positive_side, volume_indices[0], inverse_side, volumes, map_volumes)) if (associate(positive_side, volume_indices[0], inverse_side, volumes, map_volumes))
queue[0].push(std::make_pair(positive_side, inverse_side)); queue[0].push(std::make_pair(positive_side, inverse_side));
} }
if (volume_indices[1] != -1) { if (volume_indices[1] != uninitialized) {
Oriented_side inverse_side = (negative_side.first == pface.first) ? ON_NEGATIVE_SIDE : oriented_side(negative_side, pface); Oriented_side inverse_side = (negative_side.first == pface.first) ? ON_NEGATIVE_SIDE : oriented_side(negative_side, pface);
if (associate(negative_side, volume_indices[1], inverse_side, volumes, map_volumes)) if (associate(negative_side, volume_indices[1], inverse_side, volumes, map_volumes))
queue[1].push(std::make_pair(negative_side, inverse_side)); queue[1].push(std::make_pair(negative_side, inverse_side));
@ -331,7 +332,7 @@ private:
// Propagate both queues if volumes on either side of the pface are not segmented. // Propagate both queues if volumes on either side of the pface are not segmented.
for (std::size_t i = 0; i < 2; i++) { for (std::size_t i = 0; i < 2; i++) {
if (volume_indices[i] != -1) { if (volume_indices[i] != uninitialized) {
while (!queue[i].empty()) { while (!queue[i].empty()) {
propagate_volume(queue[i], volume_indices[i], volumes, map_volumes); propagate_volume(queue[i], volume_indices[i], volumes, map_volumes);
} }

View File

@ -162,7 +162,7 @@ private:
std::size_t iterations = 0; std::size_t iterations = 0;
int dir = (cw) ? -1 : 1; int dir = (cw) ? -1 : 1;
const std::size_t uninitialized = static_cast<std::size_t>(-1);
std::size_t inext; std::size_t inext;
while (s != m_data.target(next) && iterations < 10000) { while (s != m_data.target(next) && iterations < 10000) {
face.vertices.push_back(m_data.target(next)); face.vertices.push_back(m_data.target(next));
@ -173,14 +173,14 @@ private:
std::vector<std::pair<IEdge, Direction_2> > connected; std::vector<std::pair<IEdge, Direction_2> > connected;
m_data.get_and_sort_all_connected_iedges(sp_idx, m_data.target(next), connected); m_data.get_and_sort_all_connected_iedges(sp_idx, m_data.target(next), connected);
inext = -1; inext = uninitialized;
for (std::size_t idx = 0; idx < connected.size(); idx++) { for (std::size_t idx = 0; idx < connected.size(); idx++) {
if (connected[idx].first == next) { if (connected[idx].first == next) {
inext = (idx + dir + connected.size()) % connected.size(); inext = (idx + dir + connected.size()) % connected.size();
break; break;
} }
} }
CGAL_assertion(inext != static_cast<std::size_t>(-1)); CGAL_assertion(inext != uninitialized);
next = connected[inext].first; next = connected[inext].first;
face.edges.push_back(next); face.edges.push_back(next);

View File

@ -109,7 +109,7 @@ public:
using IEdge_set = std::set<Edge_descriptor, lex>; using IEdge_set = std::set<Edge_descriptor, lex>;
struct Face_property { struct Face_property {
Face_property() : support_plane(-1), part_of_partition(false) {} Face_property() : support_plane(static_cast<std::size_t>(-1)), part_of_partition(false) {}
Face_property(std::size_t support_plane_idx) : support_plane(support_plane_idx), part_of_partition(false) {} Face_property(std::size_t support_plane_idx) : support_plane(support_plane_idx), part_of_partition(false) {}
std::size_t support_plane; std::size_t support_plane;
bool part_of_partition; bool part_of_partition;

View File

@ -160,7 +160,7 @@ public:
m_data->is_bbox = is_bbox; m_data->is_bbox = is_bbox;
m_data->distance_tolerance = 0; m_data->distance_tolerance = 0;
m_data->angle_tolerance = 0; m_data->angle_tolerance = 0;
m_data->actual_input_polygon = -1; m_data->actual_input_polygon = static_cast<std::size_t>(- 1);
std::vector<Triangle_2> tris(points.size() - 2); std::vector<Triangle_2> tris(points.size() - 2);
for (std::size_t i = 2; i < points.size(); i++) { for (std::size_t i = 2; i < points.size(); i++) {
@ -241,7 +241,7 @@ public:
m_data->is_bbox = is_bbox; m_data->is_bbox = is_bbox;
m_data->distance_tolerance = 0; m_data->distance_tolerance = 0;
m_data->angle_tolerance = 0; m_data->angle_tolerance = 0;
m_data->actual_input_polygon = -1; m_data->actual_input_polygon = static_cast<std::size_t>(- 1);
std::vector<Triangle_2> tris(points.size() - 2); std::vector<Triangle_2> tris(points.size() - 2);
for (std::size_t i = 2; i < points.size(); i++) { for (std::size_t i = 2; i < points.size(); i++) {

View File

@ -205,7 +205,7 @@ private:
private: private:
struct Sub_partition { struct Sub_partition {
Sub_partition() : parent(-1) {} Sub_partition() : parent(static_cast<std::size_t>(- 1)) {}
std::shared_ptr<Data_structure> m_data; std::shared_ptr<Data_structure> m_data;
std::array<typename Intersection_kernel::Point_3, 8> bbox; std::array<typename Intersection_kernel::Point_3, 8> bbox;
std::vector<typename Intersection_kernel::Plane_3> m_bbox_planes; std::vector<typename Intersection_kernel::Plane_3> m_bbox_planes;