diff --git a/Polyhedron/demo/Polyhedron/MainWindow.cpp b/Polyhedron/demo/Polyhedron/MainWindow.cpp index e1520ae5590..6457e785e94 100644 --- a/Polyhedron/demo/Polyhedron/MainWindow.cpp +++ b/Polyhedron/demo/Polyhedron/MainWindow.cpp @@ -1806,7 +1806,7 @@ void MainWindow::updateInfo() { QString item_filename = item->property("source filename").toString(); CGAL::Bbox_3 bbox = item->bbox(); if(bbox !=CGAL::Bbox_3()) - item_text += QString("
Bounding box: min (%1,%2,%3), max (%4,%5,%6), dimensions (%7, %8, %9)
") + item_text += QString("
Bounding box:
 min (%1, %2, %3),
 max (%4, %5, %6),
 dimensions (%7, %8, %9)
") .arg(bbox.xmin(),0, 'g', 17) .arg(bbox.ymin(),0, 'g', 17) .arg(bbox.zmin(),0, 'g', 17) diff --git a/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp b/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp index 0d353f554cf..d704582ece1 100644 --- a/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.cpp @@ -911,32 +911,34 @@ void Scene_polygon_soup_item::repair(bool erase_dup, bool req_same_orientation) CGAL::Three::Scene_item::Header_data Scene_polygon_soup_item::header() const { CGAL::Three::Scene_item::Header_data data; - //categories + //categories + data.categories.append(std::pair(QString("Properties"),2)); data.categories.append(std::pair(QString("Vertices"),1)); - data.categories.append(std::pair(QString("Polygons"),4)); + data.categories.append(std::pair(QString("Polygons"),2)); data.categories.append(std::pair(QString("Edges"),6)); data.categories.append(std::pair(QString("Angles"),3)); - //titles + data.titles.append(QString("Pure Triangle")); + data.titles.append(QString("Pure Quad")); + data.titles.append(QString("#Points")); data.titles.append(QString("#Polygons")); - data.titles.append(QString("Pure Triangle")); - data.titles.append(QString("Pure Quad")); data.titles.append(QString("#Degenerate Polygons")); data.titles.append(QString("#Edges")); + data.titles.append(QString("#Degenerate Edges")); data.titles.append(QString("Minimum Length")); data.titles.append(QString("Maximum Length")); data.titles.append(QString("Median Length")); data.titles.append(QString("Mean Length")); - data.titles.append(QString("#Degenerate Edges")); data.titles.append(QString("Minimum")); data.titles.append(QString("Maximum")); data.titles.append(QString("Average")); + return data; } @@ -954,7 +956,7 @@ QString Scene_polygon_soup_item::computeStats(int type) case NB_EDGES: return QString::number(d->nb_lines/6); - case NB_DEGENERATED_FACES: + case NB_DEGENERATE_FACES: { if(d->is_triangle) { @@ -968,11 +970,11 @@ QString Scene_polygon_soup_item::computeStats(int type) return QString::number(d->minl); case MAX_LENGTH: return QString::number(d->maxl); - case MID_LENGTH: + case MED_LENGTH: return QString::number(d->midl); case MEAN_LENGTH: return QString::number(d->meanl); - case NB_NULL_LENGTH: + case NB_DEGENERATE_EDGES: return QString::number(d->nb_null_edges); case MIN_ANGLE: diff --git a/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.h b/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.h index ab292ea6505..5dea8c11f02 100644 --- a/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.h +++ b/Polyhedron/demo/Polyhedron/Scene_polygon_soup_item.h @@ -154,19 +154,25 @@ public: const Edges& non_manifold_edges() const; void initializeBuffers(CGAL::Three::Viewer_interface *) const Q_DECL_OVERRIDE; void computeElements() const Q_DECL_OVERRIDE; + //statistics - enum STATS { - NB_VERTICES = 0, - NB_FACETS, - IS_PURE_TRIANGLE, + enum STATS + { + IS_PURE_TRIANGLE = 0, IS_PURE_QUAD, - NB_DEGENERATED_FACES, + + NB_VERTICES, + + NB_FACETS, + NB_DEGENERATE_FACES, + NB_EDGES, + NB_DEGENERATE_EDGES, MIN_LENGTH, MAX_LENGTH, - MID_LENGTH, + MED_LENGTH, MEAN_LENGTH, - NB_NULL_LENGTH, + MIN_ANGLE, MAX_ANGLE, MEAN_ANGLE diff --git a/Polyhedron/demo/Polyhedron/Scene_polyhedron_selection_item.cpp b/Polyhedron/demo/Polyhedron/Scene_polyhedron_selection_item.cpp index 404c38adde7..8c093d7675f 100644 --- a/Polyhedron/demo/Polyhedron/Scene_polyhedron_selection_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_polyhedron_selection_item.cpp @@ -2360,9 +2360,9 @@ QString Scene_polyhedron_selection_item::computeStats(int type) { case MIN_LENGTH: case MAX_LENGTH: - case MID_LENGTH: + case MED_LENGTH: case MEAN_LENGTH: - case NB_NULL_LENGTH: + case NB_DEGENERATE_EDGES: if(selected_edges.size() == 0) return QString("n/a"); else @@ -2488,7 +2488,7 @@ QString Scene_polyhedron_selection_item::computeStats(int type) case GENUS: return QString("n/a"); break; - case NB_DEGENERATED_FACES: + case NB_DEGENERATE_FACES: { if(is_triangle_mesh(*d->poly)) { @@ -2529,11 +2529,11 @@ QString Scene_polyhedron_selection_item::computeStats(int type) return QString::number(minl); case MAX_LENGTH: return QString::number(maxl); - case MID_LENGTH: + case MED_LENGTH: return QString::number(midl); case MEAN_LENGTH: return QString::number(meanl); - case NB_NULL_LENGTH: + case NB_DEGENERATE_EDGES: return QString::number(number_of_null_length_edges); case MIN_ANGLE: @@ -2542,7 +2542,7 @@ QString Scene_polyhedron_selection_item::computeStats(int type) return QString::number(maxi); case MEAN_ANGLE: return QString::number(ave); - case HOLES: + case NB_HOLES: { return QString("n/a"); } @@ -2592,24 +2592,26 @@ CGAL::Three::Scene_item::Header_data Scene_polyhedron_selection_item::header() c CGAL::Three::Scene_item::Header_data data; //categories - data.categories.append(std::pair(QString("Properties"),10)); + data.categories.append(std::pair(QString("Properties"),8)); + data.categories.append(std::pair(QString("Vertices"),1)); data.categories.append(std::pair(QString("Faces"),10)); data.categories.append(std::pair(QString("Edges"),7)); - data.categories.append(std::pair(QString("Angles"),2)); - + data.categories.append(std::pair(QString("Angles"),3)); //titles - data.titles.append(QString("#Vertices")); data.titles.append(QString("#Connected Components")); - data.titles.append(QString("#Border Edges")); + data.titles.append(QString("#Connected Components of the Boundary")); + data.titles.append(QString("Genus")); data.titles.append(QString("Pure Triangle")); data.titles.append(QString("Pure Quad")); - data.titles.append(QString("#Degenerate Faces")); - data.titles.append(QString("Connected Components of the Boundary")); data.titles.append(QString("Area")); data.titles.append(QString("Volume")); data.titles.append(QString("Self-Intersecting")); + + data.titles.append(QString("#Vertices")); + data.titles.append(QString("#Faces")); + data.titles.append(QString("#Degenerate Faces")); data.titles.append(QString("Min Area")); data.titles.append(QString("Max Area")); data.titles.append(QString("Median Area")); @@ -2618,16 +2620,19 @@ CGAL::Three::Scene_item::Header_data Scene_polyhedron_selection_item::header() c data.titles.append(QString("Min Aspect-Ratio")); data.titles.append(QString("Max Aspect-Ratio")); data.titles.append(QString("Mean Aspect-Ratio")); - data.titles.append(QString("Genus")); + data.titles.append(QString("#Edges")); + data.titles.append(QString("#Border Edges")); + data.titles.append(QString("#Degenerate Edges")); data.titles.append(QString("Minimum Length")); data.titles.append(QString("Maximum Length")); data.titles.append(QString("Median Length")); data.titles.append(QString("Mean Length")); - data.titles.append(QString("#Degenerate Edges")); + data.titles.append(QString("Minimum")); data.titles.append(QString("Maximum")); data.titles.append(QString("Average")); + return data; } diff --git a/Polyhedron/demo/Polyhedron/Scene_polyhedron_selection_item.h b/Polyhedron/demo/Polyhedron/Scene_polyhedron_selection_item.h index 09342bda810..5b803274716 100644 --- a/Polyhedron/demo/Polyhedron/Scene_polyhedron_selection_item.h +++ b/Polyhedron/demo/Polyhedron/Scene_polyhedron_selection_item.h @@ -1085,18 +1085,24 @@ protected : public: //statistics - enum STATS { - NB_VERTICES = 0, - NB_CONNECTED_COMPOS, - NB_BORDER_EDGES, + enum STATS + { + // Properties + NB_CONNECTED_COMPOS = 0, + NB_HOLES, + GENUS, IS_PURE_TRIANGLE, IS_PURE_QUAD, - NB_DEGENERATED_FACES, - HOLES, AREA, VOLUME, SELFINTER, + + // Vertices + NB_VERTICES, + + // Facets NB_FACETS, + NB_DEGENERATE_FACES, MIN_AREA, MAX_AREA, MED_AREA, @@ -1105,13 +1111,17 @@ public: MIN_ASPECT_RATIO, MAX_ASPECT_RATIO, MEAN_ASPECT_RATIO, - GENUS, + + // Edges NB_EDGES, + NB_BORDER_EDGES, + NB_DEGENERATE_EDGES, MIN_LENGTH, MAX_LENGTH, - MID_LENGTH, + MED_LENGTH, MEAN_LENGTH, - NB_NULL_LENGTH, + + // Angles MIN_ANGLE, MAX_ANGLE, MEAN_ANGLE diff --git a/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.cpp b/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.cpp index bf2ceccb0f7..75db7480aaa 100644 --- a/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.cpp +++ b/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.cpp @@ -889,7 +889,7 @@ QString Scene_surface_mesh_item::toolTip() const .arg(num_faces(*d->smesh_)) .arg(this->renderingModeName()) .arg(this->color().name()); - str += QString("
Number of isolated vertices: %1
").arg(getNbIsolatedvertices()); + return str; } @@ -1625,9 +1625,9 @@ QString Scene_surface_mesh_item::computeStats(int type) { case MIN_LENGTH: case MAX_LENGTH: - case MID_LENGTH: + case MED_LENGTH: case MEAN_LENGTH: - case NB_NULL_LENGTH: + case NB_DEGENERATE_EDGES: edges_length(d->smesh_, minl, maxl, meanl, midl, d->number_of_null_length_edges); } @@ -1683,6 +1683,8 @@ QString Scene_surface_mesh_item::computeStats(int type) { case NB_VERTICES: return QString::number(num_vertices(*d->smesh_)); + case NB_ISOLATED_VERTICES: + return QString::number(this->getNbIsolatedvertices()); case HAS_NM_VERTICES: { if(d->has_nm_vertices) @@ -1714,7 +1716,7 @@ QString Scene_surface_mesh_item::computeStats(int type) case NB_EDGES: return QString::number(num_halfedges(*d->smesh_) / 2); - case NB_DEGENERATED_FACES: + case NB_DEGENERATE_FACES: { if(is_triangle_mesh(*d->smesh_)) { @@ -1786,11 +1788,11 @@ QString Scene_surface_mesh_item::computeStats(int type) return QString::number(minl); case MAX_LENGTH: return QString::number(maxl); - case MID_LENGTH: + case MED_LENGTH: return QString::number(midl); case MEAN_LENGTH: return QString::number(meanl); - case NB_NULL_LENGTH: + case NB_DEGENERATE_EDGES: return QString::number(d->number_of_null_length_edges); case MIN_ANGLE: @@ -1799,7 +1801,7 @@ QString Scene_surface_mesh_item::computeStats(int type) return QString::number(maxi); case MEAN_ANGLE: return QString::number(ave); - case HOLES: + case NB_HOLES: return QString::number(nb_holes(d->smesh_)); case MIN_AREA: @@ -1837,25 +1839,29 @@ CGAL::Three::Scene_item::Header_data Scene_surface_mesh_item::header() const CGAL::Three::Scene_item::Header_data data; //categories - data.categories.append(std::pair(QString("Properties"),11)); + data.categories.append(std::pair(QString("Properties"),9)); + data.categories.append(std::pair(QString("Vertices"),2)); data.categories.append(std::pair(QString("Faces"),10)); - data.categories.append(std::pair(QString("Edges"),6)); + data.categories.append(std::pair(QString("Edges"),7)); data.categories.append(std::pair(QString("Angles"),3)); //titles - data.titles.append(QString("#Vertices")); - data.titles.append(QString("Has Non-manifold Vertices")); data.titles.append(QString("#Connected Components")); - data.titles.append(QString("#Border Edges")); + data.titles.append(QString("#Connected Components of the Boundary")); + data.titles.append(QString("Genus")); data.titles.append(QString("Pure Triangle")); data.titles.append(QString("Pure Quad")); - data.titles.append(QString("#Degenerate Faces")); - data.titles.append(QString("Connected Components of the Boundary")); data.titles.append(QString("Area")); data.titles.append(QString("Volume")); data.titles.append(QString("Self-Intersecting")); + data.titles.append(QString("Has Non-manifold Vertices")); + + data.titles.append(QString("#Vertices")); + data.titles.append(QString("#Isolated Vertices")); + data.titles.append(QString("#Faces")); + data.titles.append(QString("#Degenerate Faces")); data.titles.append(QString("Min Area")); data.titles.append(QString("Max Area")); data.titles.append(QString("Median Area")); @@ -1864,16 +1870,19 @@ CGAL::Three::Scene_item::Header_data Scene_surface_mesh_item::header() const data.titles.append(QString("Min Aspect-Ratio")); data.titles.append(QString("Max Aspect-Ratio")); data.titles.append(QString("Mean Aspect-Ratio")); - data.titles.append(QString("Genus")); + data.titles.append(QString("#Edges")); + data.titles.append(QString("#Border Edges")); + data.titles.append(QString("#Degenerate Edges")); data.titles.append(QString("Minimum Length")); data.titles.append(QString("Maximum Length")); data.titles.append(QString("Median Length")); data.titles.append(QString("Mean Length")); - data.titles.append(QString("#Degenerate Edges")); + data.titles.append(QString("Minimum")); data.titles.append(QString("Maximum")); data.titles.append(QString("Average")); + return data; } diff --git a/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.h b/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.h index 68ffb958dfb..eadae28b8eb 100644 --- a/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.h +++ b/Polyhedron/demo/Polyhedron/Scene_surface_mesh_item.h @@ -104,20 +104,28 @@ public: bool save(std::ostream& out) const; bool save_obj(std::ostream& out) const; bool load_obj(std::istream& in); + //statistics - enum STATS { - NB_VERTICES = 0, - HAS_NM_VERTICES, - NB_CONNECTED_COMPOS, - NB_BORDER_EDGES, + enum STATS + { + // Properties + NB_CONNECTED_COMPOS = 0, + NB_HOLES, + GENUS, IS_PURE_TRIANGLE, IS_PURE_QUAD, - NB_DEGENERATED_FACES, - HOLES, AREA, VOLUME, SELFINTER, + HAS_NM_VERTICES, + + // Vertices + NB_VERTICES, + NB_ISOLATED_VERTICES, + + // Facets NB_FACETS, + NB_DEGENERATE_FACES, MIN_AREA, MAX_AREA, MED_AREA, @@ -126,13 +134,17 @@ public: MIN_ASPECT_RATIO, MAX_ASPECT_RATIO, MEAN_ASPECT_RATIO, - GENUS, + + // Edges NB_EDGES, + NB_BORDER_EDGES, + NB_DEGENERATE_EDGES, MIN_LENGTH, MAX_LENGTH, - MID_LENGTH, + MED_LENGTH, MEAN_LENGTH, - NB_NULL_LENGTH, + + // Angles MIN_ANGLE, MAX_ANGLE, MEAN_ANGLE