From 830d13734d2cedd45690353a7dc2fc714f6e4a11 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Fri, 30 Aug 2024 16:29:43 +0200 Subject: [PATCH 01/34] copy from siggraph24 branch added parameter estimation --- .../include/CGAL/KSP_3/Data_structure.h | 12 - .../include/CGAL/Kinetic_space_partition_3.h | 10 +- .../ksr_parameters.cpp | 37 +- .../CGAL/Kinetic_surface_reconstruction_3.h | 60 +- Lab/demo/Lab/Plugins/Point_set/CMakeLists.txt | 9 + .../Kinetic_surface_reconstruction_plugin.cpp | 603 ++++++++++++++++++ .../Kinetic_surface_reconstruction_plugin.ui | 425 ++++++++++++ .../Point_set_normal_estimation_plugin.cpp | 1 + Point_set_3/include/CGAL/Point_set_3.h | 2 +- .../Least_squares_plane_fit_sorting.h | 68 +- 10 files changed, 1184 insertions(+), 43 deletions(-) create mode 100644 Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp create mode 100644 Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.ui diff --git a/Kinetic_space_partition/include/CGAL/KSP_3/Data_structure.h b/Kinetic_space_partition/include/CGAL/KSP_3/Data_structure.h index 5a64606321a9..25a855079e54 100644 --- a/Kinetic_space_partition/include/CGAL/KSP_3/Data_structure.h +++ b/Kinetic_space_partition/include/CGAL/KSP_3/Data_structure.h @@ -205,13 +205,6 @@ class Data_structure { } }; - struct Reconstructed_model { - std::vector pfaces; - void clear() { - pfaces.clear(); - } - }; - private: std::vector m_support_planes; std::vector m_initial_support_planes; @@ -239,7 +232,6 @@ class Data_structure { std::vector m_face2sp; std::vector > m_sp2input_polygon; std::map m_input_polygon_map; // Maps index of input polygon onto support plane indices. - Reconstructed_model m_reconstructed_model; public: Data_structure(const Parameters& parameters, const std::string &prefix) : to_exact(), from_exact(), m_parameters(parameters), m_prefix(prefix) { @@ -266,7 +258,6 @@ class Data_structure { m_volumes.clear(); m_pface_neighbors.clear(); m_input_polygon_map.clear(); - m_reconstructed_model.clear(); } void precompute_iedge_data() { @@ -594,9 +585,6 @@ class Data_structure { const std::vector &face(std::size_t face_index) const { return m_face2vertices[face_index]; } const Point_3& vertex(std::size_t vertex_index) const { return m_vertices[vertex_index]; } - Reconstructed_model& reconstructed_model() { return m_reconstructed_model; } - const Reconstructed_model& reconstructed_model() const { return m_reconstructed_model; } - /******************************* ** SUPPORT PLANES ** ********************************/ diff --git a/Kinetic_space_partition/include/CGAL/Kinetic_space_partition_3.h b/Kinetic_space_partition/include/CGAL/Kinetic_space_partition_3.h index ab53a84a6d93..547ebc0a97a8 100644 --- a/Kinetic_space_partition/include/CGAL/Kinetic_space_partition_3.h +++ b/Kinetic_space_partition/include/CGAL/Kinetic_space_partition_3.h @@ -566,7 +566,15 @@ class Kinetic_space_partition_3 { #ifndef DOXYGEN_RUNNING void partition(std::size_t k, FT& partition_time, FT& finalization_time, FT& conformal_time) { - m_volumes.clear(); + if (!m_volumes.empty()) { + for (Sub_partition& node : m_partition_nodes) { + node.m_data->reset_to_initialization(); + node.face_neighbors.clear(); + node.face2vertices.clear(); + node.volumes.clear(); + } + m_volumes.clear(); + } Timer timer; timer.start(); partition_time = 0; diff --git a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/ksr_parameters.cpp b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/ksr_parameters.cpp index 123c7066af31..9ac52e26b9cc 100644 --- a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/ksr_parameters.cpp +++ b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/ksr_parameters.cpp @@ -13,19 +13,19 @@ #include "include/Parameters.h" #include "include/Terminal_parser.h" -using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel; -using FT = typename Kernel::FT; -using Point_3 = typename Kernel::Point_3; -using Vector_3 = typename Kernel::Vector_3; +using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel; +using FT = typename Kernel::FT; +using Point_3 = typename Kernel::Point_3; +using Vector_3 = typename Kernel::Vector_3; using Segment_3 = typename Kernel::Segment_3; -using Point_set = CGAL::Point_set_3; -using Point_map = typename Point_set::Point_map; -using Normal_map = typename Point_set::Vector_map; +using Point_set = CGAL::Point_set_3; +using Point_map = typename Point_set::Point_map; +using Normal_map = typename Point_set::Vector_map; using KSR = CGAL::Kinetic_surface_reconstruction_3; -using Parameters = CGAL::KSR::All_parameters; +using Parameters = CGAL::KSR::All_parameters; using Terminal_parser = CGAL::KSR::Terminal_parser; using Timer = CGAL::Real_timer; @@ -50,10 +50,10 @@ void parse_terminal(Terminal_parser& parser, Parameters& parameters) { parser.add_str_parameter("-data", parameters.data); // Shape detection. - parser.add_val_parameter("-kn" , parameters.k_neighbors); - parser.add_val_parameter("-dist" , parameters.maximum_distance); + parser.add_val_parameter("-kn", parameters.k_neighbors); + parser.add_val_parameter("-dist", parameters.maximum_distance); parser.add_val_parameter("-angle", parameters.maximum_angle); - parser.add_val_parameter("-minp" , parameters.min_region_size); + parser.add_val_parameter("-minp", parameters.min_region_size); // Shape regularization. @@ -167,10 +167,18 @@ int main(const int argc, const char** argv) { // Algorithm. KSR ksr(point_set, param); + FT max_d, max_dev; + std::size_t num; + ksr.estimate_detection_parameters(max_d, max_dev, num); + std::cout << "d: " << max_d << std::endl; + std::cout << "dev: " << max_dev << std::endl; + std::cout << "num: " << num << std::endl; + Timer timer; timer.start(); std::size_t num_shapes = ksr.detect_planar_shapes(param); + std::cout << num_shapes << " detected planar shapes" << std::endl; FT after_shape_detection = timer.time(); @@ -198,12 +206,12 @@ int main(const int argc, const char** argv) { FT after_reconstruction = timer.time(); if (polylist.size() > 0) - CGAL::IO::write_polygon_soup("polylist_" + std::to_string(parameters.graphcut_lambda) + (parameters.use_ground ? "_g" : "_") + ".off", vtx, polylist); + CGAL::IO::write_polygon_soup("building_c_" + std::to_string(parameters.graphcut_lambda) + (parameters.use_ground ? "_g" : "_") + ".off", vtx, polylist); timer.stop(); const FT time = static_cast(timer.time()); - std::vector lambdas{0.3, 0.5, 0.6, 0.7, 0.73, 0.75, 0.77, 0.8, 0.9, 0.95, 0.99}; + std::vector lambdas{ 0.3, 0.5, 0.6, 0.7, 0.73, 0.75, 0.77, 0.8, 0.9, 0.95, 0.99 }; bool non_empty = false; @@ -214,7 +222,6 @@ int main(const int argc, const char** argv) { vtx.clear(); polylist.clear(); - if (parameters.use_ground) ksr.reconstruct_with_ground(l, std::back_inserter(vtx), std::back_inserter(polylist)); else @@ -223,7 +230,7 @@ int main(const int argc, const char** argv) { if (polylist.size() > 0) { non_empty = true; - CGAL::IO::write_polygon_soup("polylist_" + std::to_string(l) + (parameters.use_ground ? "_g" : "_") + ".off", vtx, polylist); + CGAL::IO::write_polygon_soup("building_c_" + std::to_string(l) + (parameters.use_ground ? "_g" : "_") + ".off", vtx, polylist); } } diff --git a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h index 7df975df13c3..94db973672da 100644 --- a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h +++ b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h @@ -94,6 +94,9 @@ class Kinetic_surface_reconstruction_3 { const NamedParameters& np = CGAL::parameters::default_values()) : m_points(points), m_ground_polygon_index(-1), m_kinetic_partition(np) { m_verbose = parameters::choose_parameter(parameters::get_parameter(np, internal_np::verbose), false); m_debug = parameters::choose_parameter(parameters::get_parameter(np, internal_np::debug), false); + + m_point_map = Point_set_processing_3_np_helper::get_point_map(m_points, np); + m_normal_map = Point_set_processing_3_np_helper::get_normal_map(m_points, np); } /*! @@ -189,9 +192,6 @@ class Kinetic_surface_reconstruction_3 { m_regions.clear(); m_planar_regions.clear(); - m_point_map = Point_set_processing_3_np_helper::get_point_map(m_points, np); - m_normal_map = Point_set_processing_3_np_helper::get_normal_map(m_points, np); - create_planar_shapes(np); CGAL_assertion(m_planes.size() == m_polygons.size()); @@ -323,6 +323,31 @@ class Kinetic_surface_reconstruction_3 { partition(k); } + void estimate_detection_parameters(FT& max_distance, FT& normal_dev, std::size_t& min_inliers) { + if (!m_neighbor_query) { + m_neighbor_query = std::unique_ptr(new Neighbor_query(m_points, parameters::point_map(m_point_map).k_neighbors(12))); + m_sorting = std::unique_ptr(new Sorting(m_points, *m_neighbor_query, parameters::point_map(m_point_map))); + m_sorting->sort(); + } + + max_distance = 2 * m_sorting->mean_distance(); + normal_dev = m_sorting->mean_deviation(); + min_inliers = m_points.size() * 0.005; // difficult to estimate as it depends on the kind of data, e.g., object scan vs. large scale urban acquisition + } + + std::size_t estimate_max_subdivision_depth() { + std::size_t max_depth = 1; + std::size_t num_shapes = m_polygon_indices.size(); + + if (num_shapes > 60) + while (num_shapes > 20) { + max_depth++; + num_shapes >>= 3; + } + + return max_depth; + } + /*! \brief initializes the kinetic partition. @@ -347,8 +372,6 @@ class Kinetic_surface_reconstruction_3 { */ template void initialize_partition(const CGAL_NP_CLASS& np = parameters::default_values()) { - m_kinetic_partition.insert(m_polygon_pts, m_polygon_indices, np); - m_kinetic_partition.initialize(np); } @@ -408,6 +431,9 @@ class Kinetic_surface_reconstruction_3 { */ template void reconstruct_with_ground(FT lambda, OutputPointIterator pit, OutputPolygonIterator polyit) { + if (m_kinetic_partition.number_of_volumes() == 0) + return; + KSR_3::Graphcut gc(lambda); // add ground consideration here @@ -482,6 +508,9 @@ class Kinetic_surface_reconstruction_3 { */ template void reconstruct(FT lambda, std::map external_nodes, OutputPointIterator pit, OutputPolygonIterator polyit) { + if (m_kinetic_partition.number_of_volumes() == 0) + return; + KSR_3::Graphcut gc(lambda); // add node consideration here @@ -565,6 +594,9 @@ class Kinetic_surface_reconstruction_3 { bool m_verbose; bool m_debug; + std::unique_ptr m_neighbor_query; + std::unique_ptr m_sorting; + Point_range &m_points; Point_map m_point_map; Normal_map m_normal_map; @@ -1785,8 +1817,9 @@ class Kinetic_surface_reconstruction_3 { m_detection_distance_tolerance = max_distance_to_plane; // Region growing. - Neighbor_query neighbor_query = CGAL::Shape_detection::Point_set::make_k_neighbor_query( - m_points, CGAL::parameters::k_neighbors(k)); + if (!m_neighbor_query) { + m_neighbor_query = std::unique_ptr(new Neighbor_query(m_points, parameters::point_map(m_point_map).k_neighbors(k))); + } Region_type region_type = CGAL::Shape_detection::Point_set::make_least_squares_plane_fit_region( m_points, @@ -1795,11 +1828,13 @@ class Kinetic_surface_reconstruction_3 { maximum_angle(max_accepted_angle). minimum_region_size(min_region_size)); - Sorting sorting = CGAL::Shape_detection::Point_set::make_least_squares_plane_fit_sorting(m_points, neighbor_query); - sorting.sort(); + if (!m_sorting) { + m_sorting = std::unique_ptr(new Sorting(m_points, *m_neighbor_query, parameters::point_map(m_point_map))); + m_sorting->sort(); + } Region_growing region_growing( - m_points, sorting.ordered(), neighbor_query, region_type); + m_points, m_sorting->ordered(), *m_neighbor_query, region_type); region_growing.detect(std::back_inserter(m_regions)); std::size_t unassigned = 0; @@ -1818,6 +1853,9 @@ class Kinetic_surface_reconstruction_3 { std::size_t num_shapes = m_regions.size(); + if (m_regions.empty()) + return; + const bool regularize_axis_symmetry = parameters::choose_parameter(parameters::get_parameter(np, internal_np::regularize_axis_symmetry), false); const bool regularize_coplanarity = parameters::choose_parameter(parameters::get_parameter(np, internal_np::regularize_coplanarity), false); const bool regularize_orthogonality = parameters::choose_parameter(parameters::get_parameter(np, internal_np::regularize_orthogonality), false); @@ -1936,6 +1974,8 @@ class Kinetic_surface_reconstruction_3 { } num_shapes = m_planar_regions.size(); + + m_kinetic_partition = KSP(m_polygon_pts, m_polygon_indices); } void map_points_to_faces(const std::size_t polygon_index, const std::vector& pts, std::vector > >& face_to_points) { diff --git a/Lab/demo/Lab/Plugins/Point_set/CMakeLists.txt b/Lab/demo/Lab/Plugins/Point_set/CMakeLists.txt index 59d2285660b4..d3c10fbcb5bd 100644 --- a/Lab/demo/Lab/Plugins/Point_set/CMakeLists.txt +++ b/Lab/demo/Lab/Plugins/Point_set/CMakeLists.txt @@ -65,6 +65,15 @@ if(TARGET CGAL::Eigen3_support) features_detection_plugin PUBLIC scene_points_with_normal_item CGAL::Eigen3_support) + qt6_wrap_ui(kinetic_surface_reconstruction_pluginUI_FILES Kinetic_surface_reconstruction_plugin.ui) + cgal_lab_plugin( + kinetic_surface_reconstruction_plugin Kinetic_surface_reconstruction_plugin + ${kinetic_surface_reconstruction_pluginUI_FILES} KEYWORDS PointSetProcessing) + target_link_libraries( + kinetic_surface_reconstruction_plugin PUBLIC scene_points_with_normal_item + CGAL::Eigen3_support scene_polygon_soup_item + scene_surface_mesh_item scene_points_with_normal_item) + cgal_lab_plugin(point_set_smoothing_plugin Point_set_smoothing_plugin KEYWORDS PointSetProcessing) target_link_libraries( diff --git a/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp b/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp new file mode 100644 index 000000000000..b851e8f052fd --- /dev/null +++ b/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp @@ -0,0 +1,603 @@ + +#include "ui_Kinetic_surface_reconstruction_plugin.h" + +#include "Color_map.h" +#include "Color_ramp.h" +#include "id_printing.h" +#include "Messages_interface.h" + +#include "Scene.h" +#include "Scene_polygon_soup_item.h" +#include "Scene_surface_mesh_item.h" +#include "Scene_points_with_normal_item.h" + +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + + +#include + +using namespace CGAL::Three; + +using FT = typename Kernel::FT; +using Point_3 = typename Kernel::Point_3; +using Vector_3 = typename Kernel::Vector_3; +using Segment_3 = typename Kernel::Segment_3; + +using Point_map = typename Point_set::Point_map; +using Normal_map = typename Point_set::Vector_map; + +using KSR = CGAL::Kinetic_surface_reconstruction_3; + +Viewer_interface* (&getActiveViewer)() = Three::activeViewer; + +class DockWidget + : public QDockWidget, + public Ui::KineticSurfaceReconstructionWidget +{ +public: + DockWidget(const QString& name, QWidget* parent) + : QDockWidget(name, parent) + { + setupUi(this); + } +}; + +class Kinetic_surface_reconstruction_plugin + : public QObject, + public CGAL_Lab_plugin_helper +{ + Q_OBJECT + Q_INTERFACES(CGAL::Three::CGAL_Lab_plugin_interface) + Q_PLUGIN_METADATA(IID "com.geometryfactory.CGALLab.PluginInterface/1.0") +private: + QAction* actionKineticSurfaceReconstruction; + + DockWidget* dock_widget; + + Scene_points_with_normal_item* m_pwn_item = nullptr; + + // A dock widget allows switching between items which makes managing parameters and intermediate results a mess. + // I could create a map from item to KSR and also reference intermediate results (in case they are recalculated with changed parameters)? + + KSR *m_ksr = nullptr; + bool m_known_file = false; + +public: + virtual ~Kinetic_surface_reconstruction_plugin() { + if (m_ksr) + delete m_ksr; + m_ksr = nullptr; + } + + bool applicable(QAction*) const override + { + Scene_item* item = scene->item(scene->mainSelectionIndex()); + if (!item) + return false; + + Scene_points_with_normal_item* pwn_item = qobject_cast(item); + + if (pwn_item != nullptr && pwn_item->has_normals()) + return true; + else + return false; + +/* + if (pwn_item == nullptr && m_pwn_item == nullptr) { + enable_detection(false); + enable_regularization(false); + enable_partition(false); + enable_reconstruction(false); + }*/ + + //return pwn_item != nullptr; + } + + QList actions() const override + { + return QList() << actionKineticSurfaceReconstruction; + } + + void init(QMainWindow* mw, + Scene_interface* sc, + Messages_interface*) override + { + this->scene = sc; + this->mw = mw; + + // Main action + actionKineticSurfaceReconstruction = new QAction(QString("Kinetic Surface Reconstruction"), mw); + actionKineticSurfaceReconstruction->setObjectName("actionKineticSurfaceReconstruction"); + + connect(actionKineticSurfaceReconstruction, SIGNAL(triggered()), + this, SLOT(openDialog())); + + Scene* scene_item = static_cast(scene); + connect(scene_item, SIGNAL(itemIndexSelected(int)), + this, SLOT(onItemIndexSelected(int))); + + // Dock Widget + dock_widget = new DockWidget("Kinetic Surface Reconstruction", mw); + addDockWidget(dock_widget); + + dock_widget->setVisible(false); + //dock_widget->setEnabled(false); + + connect(dock_widget->sdRunButton, SIGNAL(clicked(bool)), this, SLOT(run_detection())); + connect(dock_widget->partRunButton, SIGNAL(clicked(bool)), this, SLOT(run_partition())); + connect(dock_widget->recRunButton, SIGNAL(clicked(bool)), this, SLOT(run_reconstruction())); + connect(dock_widget->partSubdivisionCheck, SIGNAL(stateChanged(int)), this, SLOT(onSubdivisionStateChanged(int))); + } +private Q_SLOTS: + void openDialog() + { + if (!dock_widget->isVisible()) + dock_widget->show(); + dock_widget->raise(); + } + + void closure() override + { + dock_widget->hide(); + if (m_ksr) { + delete m_ksr; + m_ksr = nullptr; + } + } + + void onItemIndexSelected(int item_index) { + Scene_points_with_normal_item *selection = qobject_cast(scene->item(item_index)); + if (selection == nullptr) { + // Keep old reference if no new point cloud has been selected. + if (m_pwn_item == nullptr) + dock_widget->setEnabled(false); + + return; + } + + if (m_pwn_item == selection) { + // The point cloud may have normals added after loading. + if (m_pwn_item->has_normals()) { + enable_detection(true); + enable_regularization(true); + } + return; + } + + QObject* scene_obj = dynamic_cast(scene); + + if (m_pwn_item) { + disconnect(m_pwn_item, nullptr, this, SLOT(onItemChanged())); + + if (scene_obj) + disconnect(scene_obj, SIGNAL(itemAboutToBeDestroyed(CGAL::Three::Scene_item*)), this, SLOT(onItemDestroyed(CGAL::Three::Scene_item*))); + } + + m_pwn_item = selection; + connect(m_pwn_item, SIGNAL(itemChanged()), this, SLOT(onItemChanged())); + + if (scene_obj) + connect(scene_obj, SIGNAL(itemAboutToBeDestroyed(CGAL::Three::Scene_item*)), this, SLOT(onItemDestroyed(CGAL::Three::Scene_item*))); + + if (m_ksr) { + delete m_ksr; + m_ksr = nullptr; + } + + dock_widget->setEnabled(true); + + if (m_pwn_item && m_pwn_item->has_normals()) { + enable_detection(true); + enable_regularization(true); + } + else { + enable_detection(false); + enable_regularization(false); + } + + enable_partition(false); + enable_reconstruction(false); + + prefill_parameters(); + } + + void onItemChanged() { + // Enable detection if the point set item has normals now + assert(m_pwn_item); + Point_set* points = m_pwn_item->point_set(); + std::cout << "item changed" << std::endl; + if (m_pwn_item->has_normals()) + enable_detection(true); + } + + void onItemDestroyed(CGAL::Three::Scene_item* item) { + if (m_pwn_item == item) { + m_pwn_item = nullptr; + if (m_ksr) { + delete m_ksr; + m_ksr = nullptr; + } + + enable_detection(false); + enable_regularization(false); + enable_partition(false); + enable_reconstruction(false); + dock_widget->hide(); + } + } + + void run_detection() { + assert(m_pwn_item); + + if (!m_pwn_item->has_normals()) + return; + + m_ksr->detect_planar_shapes(CGAL::parameters::maximum_distance(dock_widget->sdMaxDistanceBox->value()) + .maximum_angle(dock_widget->sdMaxAngleBox->value()) + .k_neighbors(dock_widget->sdkNeighborsBox->value()) + .minimum_region_size(dock_widget->sdMinRegionSizeBox->value()) + .regularize_parallelism(dock_widget->srParallelismCheck->isChecked()) + .regularize_coplanarity(dock_widget->srCoplanarityCheck->isChecked()) + .regularize_orthogonality(dock_widget->srOrthogonalityCheck->isChecked()) + .regularize_axis_symmetry(false) + .angle_tolerance(dock_widget->srAngleToleranceBox->value()) + .maximum_offset(dock_widget->srMaxOffsetBox->value())); + + CGAL::Three::Three::information(QString::number(m_ksr->detected_planar_shapes().size()) + " regularized planar shapes detected"); + + if (m_ksr->detected_planar_shapes().empty()) { + enable_partition(false); + enable_reconstruction(false); + + return; + } + + const std::vector &planes = m_ksr->detected_planar_shapes(); + const std::vector> ®ions = m_ksr->detected_planar_shape_indices(); + + SMesh* mesh = new SMesh(); + std::vector > polys; + for (std::size_t i = 0; i < regions.size(); i++) + convex_hull(regions[i], planes[i], polys); + + for (std::size_t i = 0; i < polys.size(); i++) { + std::vector vtx(polys[i].size()); + for (std::size_t j = 0; j < polys[i].size(); j++) + vtx[j] = mesh->add_vertex(polys[i][j]); + mesh->add_face(vtx); + } + + Scene_surface_mesh_item* new_item = new Scene_surface_mesh_item(mesh); + new_item->setName(tr("%1 convex shapes d%2 a%3").arg(m_pwn_item->name()).arg(dock_widget->sdMaxDistanceBox->value()).arg(dock_widget->sdMaxAngleBox->value())); + new_item->setColor(Qt::darkCyan); + scene->addItem(new_item); + + if (!m_known_file) { + std::size_t max_depth = m_ksr->estimate_max_subdivision_depth(); + dock_widget->partReorientCheck->setChecked(true); + dock_widget->partSubdivisionCheck->setChecked(true); + dock_widget->partMaxDepthBox->setValue(max_depth); + dock_widget->partPolygonsPerNodeBox->setValue(40); + dock_widget->partKBox->setValue(2); + } + + enable_partition(true); + enable_reconstruction(false); + } + + void run_partition() { + assert(m_pwn_item); + assert(m_ksr); + assert(!m_ksr->detected_planar_shapes().empty()); + + m_ksr->initialize_partition(CGAL::parameters::reorient_bbox(dock_widget->partReorientCheck->checkState() == Qt::Checked) + .max_octree_depth(dock_widget->partSubdivisionCheck->checkState() == Qt::Checked ? dock_widget->partMaxDepthBox->value() : 0) + .max_octree_node_size(dock_widget->partPolygonsPerNodeBox->value())); + + m_ksr->partition(dock_widget->partKBox->value()); + + CGAL::Three::Three::information(QString::number(m_ksr->kinetic_partition().number_of_volumes()) + " volumes in partition"); + + if (m_ksr->kinetic_partition().number_of_volumes() != 0) + enable_reconstruction(true); + else std::cout << "kinetic partition is empty!" << std::endl; + } + + void run_reconstruction() { + assert(m_pwn_item); + assert(m_ksr); + assert(m_ksr->kinetic_partition().number_of_volumes() != 0); + + std::vector vtx; + std::vector > polylist; + + std::map external_nodes; + + if (dock_widget->recGroundCheck->checkState() == Qt::Checked) { + external_nodes[KSR::KSP::Face_support::ZMIN] = false; + m_ksr->reconstruct_with_ground(dock_widget->recLambdaBox->value(), std::back_inserter(vtx), std::back_inserter(polylist)); + } + else { + m_ksr->reconstruct(dock_widget->recLambdaBox->value(), external_nodes, std::back_inserter(vtx), std::back_inserter(polylist)); + } + + if (!polylist.empty()) + { + // Add polygon mesh to scene + Scene_polygon_soup_item* new_item = new Scene_polygon_soup_item(); + new_item->load(vtx, polylist); + new_item->setName(tr("%1 ksr lambda %2").arg(m_pwn_item->name()).arg(dock_widget->recLambdaBox->value())); + new_item->setColor(Qt::darkGray); + new_item->invalidateOpenGLBuffers(); + scene->addItem(new_item); + } + } + + void onSubdivisionStateChanged(int state) { + dock_widget->partMaxDepthBox->setEnabled(state != 0); + dock_widget->partPolygonsPerNodeBox->setEnabled(state != 0); + } + +private: + void convex_hull(const std::vector& region, const CGAL::Epick::Plane_3& plane, std::vector > &polys) { + if (m_pwn_item == nullptr) + return; + + Point_set* points = m_pwn_item->point_set(); + + std::vector pts2d; + pts2d.reserve(region.size()); + for (const std::size_t idx : region) { + CGAL_assertion(idx < points->size()); + const auto& p = points->point(idx); + const auto q = plane.projection(p); + const auto point = plane.to_2d(q); + pts2d.push_back(point); + } + CGAL_assertion(pts2d.size() == region.size()); + + std::vector ch; + CGAL::convex_hull_2(pts2d.begin(), pts2d.end(), std::back_inserter(ch)); + + std::vector polygon; + for (const auto& p : ch) { + const auto point = plane.to_3d(p); + polygon.push_back(point); + } + + polys.push_back(polygon); + } + void enable_detection(bool enable) { + dock_widget->shapeDetectionGroup->setEnabled(enable); + dock_widget->sdRunButton->setEnabled(enable); + } + + void enable_regularization(bool enable) { + dock_widget->shapeRegularizationGroup->setEnabled(enable); + } + + void enable_partition(bool enable) { + dock_widget->kineticPartitionGroup->setEnabled(enable); + dock_widget->partRunButton->setEnabled(enable); + } + + void enable_reconstruction(bool enable) { + dock_widget->kineticReconstructionGroup->setEnabled(enable); + dock_widget->recRunButton->setEnabled(enable); + } + + void prefill_parameters() { + if (m_pwn_item == nullptr) + return; + + std::string filename = m_pwn_item->name().toStdString(); + + m_known_file = true; + + if (m_ksr) { + delete m_ksr; + m_ksr = nullptr; + } + + Point_set* points = m_pwn_item->point_set(); + m_ksr = new KSR(*points); + + /*if (filename == "foam_box" || filename == "foam_box_new") { + // Shape detection parameters + dock_widget->sdMaxDistanceBox->setValue(0.05); + dock_widget->sdMaxAngleBox->setValue(15); + dock_widget->sdMinRegionSizeBox->setValue(250); + dock_widget->sdkNeighborsBox->setValue(12); + // Shape regularization parameters + dock_widget->srParallelismCheck->setChecked(true); + dock_widget->srOrthogonalityCheck->setChecked(false); + dock_widget->srCoplanarityCheck->setChecked(true); + dock_widget->srAngleToleranceBox->setValue(10); + dock_widget->srMaxOffsetBox->setValue(0.01); + // Partition parameters + dock_widget->partReorientCheck->setChecked(false); + dock_widget->partSubdivisionCheck->setChecked(true); + dock_widget->partMaxDepthBox->setValue(3); + dock_widget->partPolygonsPerNodeBox->setValue(40); + dock_widget->partKBox->setValue(2); + // Reconstruction parameters + dock_widget->recGroundCheck->setChecked(false); + dock_widget->recLambdaBox->setValue(0.7); + } + else if (filename == "lans") { + // Shape detection parameters + dock_widget->sdMaxDistanceBox->setValue(0.15); + dock_widget->sdMaxAngleBox->setValue(20); + dock_widget->sdMinRegionSizeBox->setValue(300); + dock_widget->sdkNeighborsBox->setValue(12); + // Shape regularization parameters + dock_widget->srParallelismCheck->setChecked(true); + dock_widget->srOrthogonalityCheck->setChecked(false); + dock_widget->srCoplanarityCheck->setChecked(true); + dock_widget->srAngleToleranceBox->setValue(8); + dock_widget->srMaxOffsetBox->setValue(0.08); + // Partition parameters + dock_widget->partReorientCheck->setChecked(false); + dock_widget->partSubdivisionCheck->setChecked(true); + dock_widget->partMaxDepthBox->setValue(3); + dock_widget->partPolygonsPerNodeBox->setValue(40); + dock_widget->partKBox->setValue(2); + // Reconstruction parameters + dock_widget->recGroundCheck->setChecked(false); + dock_widget->recLambdaBox->setValue(0.7); + } + else if (filename == "building_c_1M") { + // Shape detection parameters + dock_widget->sdMaxDistanceBox->setValue(1.1); + dock_widget->sdMaxAngleBox->setValue(26); + dock_widget->sdMinRegionSizeBox->setValue(500); + dock_widget->sdkNeighborsBox->setValue(15); + // Shape regularization parameters + dock_widget->srParallelismCheck->setChecked(true); + dock_widget->srOrthogonalityCheck->setChecked(false); + dock_widget->srCoplanarityCheck->setChecked(true); + dock_widget->srAngleToleranceBox->setValue(3); + dock_widget->srMaxOffsetBox->setValue(0.5); + // Partition parameters + dock_widget->partReorientCheck->setChecked(false); + dock_widget->partSubdivisionCheck->setChecked(true); + dock_widget->partMaxDepthBox->setValue(3); + dock_widget->partPolygonsPerNodeBox->setValue(40); + dock_widget->partKBox->setValue(2); + // Reconstruction parameters + dock_widget->recGroundCheck->setChecked(true); + dock_widget->recLambdaBox->setValue(0.77); + } + else if (filename == "dragon") { + // Shape detection parameters + dock_widget->sdMaxDistanceBox->setValue(0.7); + dock_widget->sdMaxAngleBox->setValue(26); + dock_widget->sdMinRegionSizeBox->setValue(150); + dock_widget->sdkNeighborsBox->setValue(10); + // Shape regularization parameters + dock_widget->srParallelismCheck->setChecked(false); + dock_widget->srOrthogonalityCheck->setChecked(false); + dock_widget->srCoplanarityCheck->setChecked(false); + dock_widget->srAngleToleranceBox->setValue(0); + dock_widget->srMaxOffsetBox->setValue(0); + // Partition parameters + dock_widget->partReorientCheck->setChecked(false); + dock_widget->partSubdivisionCheck->setChecked(true); + dock_widget->partMaxDepthBox->setValue(3); + dock_widget->partPolygonsPerNodeBox->setValue(40); + dock_widget->partKBox->setValue(1); + // Reconstruction parameters + dock_widget->recGroundCheck->setChecked(false); + dock_widget->recLambdaBox->setValue(0.75); + } + else if (filename == "full_thing_pds_1M") { + // Shape detection parameters + dock_widget->sdMaxDistanceBox->setValue(0.3); + dock_widget->sdMaxAngleBox->setValue(36); + dock_widget->sdMinRegionSizeBox->setValue(30); + dock_widget->sdkNeighborsBox->setValue(12); + // Shape regularization parameters + dock_widget->srParallelismCheck->setChecked(true); + dock_widget->srOrthogonalityCheck->setChecked(false); + dock_widget->srCoplanarityCheck->setChecked(true); + dock_widget->srAngleToleranceBox->setValue(3); + dock_widget->srMaxOffsetBox->setValue(0.05); + // Partition parameters + dock_widget->partReorientCheck->setChecked(false); + dock_widget->partSubdivisionCheck->setChecked(true); + dock_widget->partMaxDepthBox->setValue(3); + dock_widget->partPolygonsPerNodeBox->setValue(40); + dock_widget->partKBox->setValue(3); + // Reconstruction parameters + dock_widget->recGroundCheck->setChecked(false); + dock_widget->recLambdaBox->setValue(0.5); + } + else if (filename == "hilbert_cube2_pds_100k") { + // Shape detection parameters + dock_widget->sdMaxDistanceBox->setValue(0.3); + dock_widget->sdMaxAngleBox->setValue(10); + dock_widget->sdMinRegionSizeBox->setValue(10); + dock_widget->sdkNeighborsBox->setValue(12); + // Shape regularization parameters + dock_widget->srParallelismCheck->setChecked(true); + dock_widget->srOrthogonalityCheck->setChecked(true); + dock_widget->srCoplanarityCheck->setChecked(true); + dock_widget->srAngleToleranceBox->setValue(5); + dock_widget->srMaxOffsetBox->setValue(0.03); + // Partition parameters + dock_widget->partReorientCheck->setChecked(false); + dock_widget->partSubdivisionCheck->setChecked(true); + dock_widget->partMaxDepthBox->setValue(3); + dock_widget->partPolygonsPerNodeBox->setValue(40); + dock_widget->partKBox->setValue(4); + // Reconstruction parameters + dock_widget->recGroundCheck->setChecked(false); + dock_widget->recLambdaBox->setValue(0.5); + } + else if (filename == "Meetingroom_3M") { + // Shape detection parameters + dock_widget->sdMaxDistanceBox->setValue(0.03); + dock_widget->sdMaxAngleBox->setValue(19); + dock_widget->sdMinRegionSizeBox->setValue(100); + dock_widget->sdkNeighborsBox->setValue(15); + // Shape regularization parameters + dock_widget->srParallelismCheck->setChecked(true); + dock_widget->srOrthogonalityCheck->setChecked(true); + dock_widget->srCoplanarityCheck->setChecked(true); + dock_widget->srAngleToleranceBox->setValue(10); + dock_widget->srMaxOffsetBox->setValue(0.03); + // Partition parameters + dock_widget->partReorientCheck->setChecked(false); + dock_widget->partSubdivisionCheck->setChecked(true); + dock_widget->partMaxDepthBox->setValue(3); + dock_widget->partPolygonsPerNodeBox->setValue(40); + dock_widget->partKBox->setValue(3); + // Reconstruction parameters + dock_widget->recGroundCheck->setChecked(false); + dock_widget->recLambdaBox->setValue(0.5); + } + else */{ + m_known_file = false; + FT max_distance, max_angle; + std::size_t min_region_size; + m_ksr->estimate_detection_parameters(max_distance, max_angle, min_region_size); + dock_widget->sdMaxDistanceBox->setValue(max_distance); + dock_widget->sdMaxAngleBox->setValue(max_angle); + dock_widget->sdMinRegionSizeBox->setValue(points->number_of_points() * 0.01); + dock_widget->sdkNeighborsBox->setValue(12); + dock_widget->srCoplanarityCheck->setChecked(true); + dock_widget->srMaxOffsetBox->setValue(max_distance * 0.5); + } + } +}; + +#include "Kinetic_surface_reconstruction_plugin.moc" diff --git a/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.ui b/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.ui new file mode 100644 index 000000000000..96d63e2d3258 --- /dev/null +++ b/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.ui @@ -0,0 +1,425 @@ + + + KineticSurfaceReconstructionWidget + + + true + + + + 0 + 0 + 372 + 590 + + + + + 0 + 0 + + + + + 372 + 590 + + + + Kinetic Surface Reconstruction + + + + + + + partition + + + + + + + false + + + Shape Detection + + + + + + Maximum angle + + + + + + + Maximum distance + + + + + + + Smallest allowed size for a primitive + + + 5 + + + 10000 + + + 50 + + + 500 + + + + + + + Minimum region size + + + + + + + Maximum distance from a point to a plane. + + + 1.0 + + + false + + + + + + + Maximum angle in degrees between the normal of a point and the normal of a plane. + + + 25 + + + + + + + k neighbors + + + + + + + K neighborhood of a point considered for region growing + + + 100 + + + 5 + + + 12 + + + + + + + + + + false + + + Shape Regularization + + + + + + Maximum allowed orthogonal distance between two parallel planes such that they are considered to be coplanar. + + + 25 + + + + + + + Angle tolerance + + + + + + + Maximum allowed angle in degrees between plane normals used for parallelism and orthogonality. + + + 1.0 + + + false + + + + + + + Maximum offset + + + + + + + + + Planes, which are detected as near parallel, are made exactly parallel. + + + Parallelism + + + + + + + Parallel planes, which are detected as near coplanar, are made exactly coplanar. + + + Coplanarity + + + + + + + Planes, which are detected as near orthogonal, are made exactly orthogonal. + + + Orthogonality + + + + + + + + + + + + false + + + Kinetic Surface Reconstruction + + + + + + Estimates a ground level from the detected shapes. Sets the outside label of all faces on the bounding box below the ground level to inside. + + + Estimate ground + + + + + + + + + + Lambda + + + + + + + + + + Lambda trades data faithfulness for low complexity in the energy minimization. + + + 0.7 + + + false + + + + + + + + + + false + + + Kinetic Space Partition + + + + + + K + + + + + + + Maximum depth + + + + + + + Maximum number of intersections that can occur for a polygon before its expansion stops + + + 1 + + + 100 + + + 1 + + + 2 + + + + + + + + + Aligns the x-axis of the bounding box with the direction of the largest variation in horizontal direction of the input data while maintaining the z-axis. + + + Bounding box reorientation + + + + + + + The kinetic partition is split into subpartitions using an octree if the number of intersecting polygons per node is larger than specified. + + + Subdivision + + + true + + + + + + + + + Maximum octree depth for subdivision + + + 1 + + + 100 + + + 1 + + + 3 + + + + + + + Polygons per Node + + + + + + + Maximum number of intersecting polygons for an octree node before it is split + + + 1 + + + 100 + + + 1 + + + 40 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + detect and regularize + + + + + + + reconstruct + + + + + + + + + DoubleEdit + QLineEdit +
CGAL_double_edit.h
+
+
+ + +
diff --git a/Lab/demo/Lab/Plugins/Point_set/Point_set_normal_estimation_plugin.cpp b/Lab/demo/Lab/Plugins/Point_set/Point_set_normal_estimation_plugin.cpp index 505e7e6d769f..5ebd97614e1b 100644 --- a/Lab/demo/Lab/Plugins/Point_set/Point_set_normal_estimation_plugin.cpp +++ b/Lab/demo/Lab/Plugins/Point_set/Point_set_normal_estimation_plugin.cpp @@ -287,6 +287,7 @@ void CGAL_Lab_point_set_normal_estimation_plugin::on_actionNormalEstimation_trig // Updates scene item->invalidateOpenGLBuffers(); scene->itemChanged(index); + item->itemChanged(); QApplication::restoreOverrideCursor(); } diff --git a/Point_set_3/include/CGAL/Point_set_3.h b/Point_set_3/include/CGAL/Point_set_3.h index cda736435349..f3cd2f206e7c 100644 --- a/Point_set_3/include/CGAL/Point_set_3.h +++ b/Point_set_3/include/CGAL/Point_set_3.h @@ -161,7 +161,7 @@ class Point_set_3 #ifdef DOXYGEN_RUNNING typedef unspecified_type iterator; ///< Iterator type of the point set with value type `Index` is model of `RandomAccessIterator` - typedef unspecified_type const_iterator; ///< Constant iterator type of the point set with value type `Index` is model of `RandomA.ccessIterator` + typedef unspecified_type const_iterator; ///< Constant iterator type of the point set with value type `Index` is model of `RandomAccessIterator` #else typedef typename Index_map::iterator iterator; ///< Iterator type of the point set typedef typename Index_map::const_iterator const_iterator; ///< Constant iterator type of the point set diff --git a/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h b/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h index 209f2cf6186d..6b46b3bcece6 100644 --- a/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h +++ b/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h @@ -44,12 +44,17 @@ namespace Point_set { \tparam PointMap a model of `ReadablePropertyMap` whose key type is the value type of the input range and value type is `Kernel::Point_3` + + \tparam NormalMap + a model of `ReadablePropertyMap` whose key type is the value type of the input + range and value type is `Kernel::Vector_3` */ template< typename GeomTraits, typename Item_, typename NeighborQuery, - typename PointMap> + typename PointMap, + typename NormalMap> class Least_squares_plane_fit_sorting { public: @@ -60,6 +65,7 @@ namespace Point_set { using Traits = GeomTraits; using Neighbor_query = NeighborQuery; using Point_map = PointMap; + using Normal_map = NormalMap; /// \endcond /// Item type. @@ -108,6 +114,10 @@ namespace Point_set { \cgalParamDescription{an instance of `PointMap` that maps an item to `Kernel::Point_3`} \cgalParamDefault{`PointMap()`} \cgalParamNEnd + \cgalParamNBegin{normal_map} + \cgalParamDescription{an instance of `NormalMap` that maps an item to `Kernel::Vector_3`} + \cgalParamDefault{`NormalMap()`} + \cgalParamNEnd \cgalParamNBegin{geom_traits} \cgalParamDescription{an instance of `GeomTraits`} \cgalParamDefault{`GeomTraits()`} @@ -123,6 +133,7 @@ namespace Point_set { const CGAL_NP_CLASS& np = parameters::default_values()) : m_neighbor_query(neighbor_query), m_point_map(Point_set_processing_3_np_helper::get_const_point_map(input_range, np)), + m_normal_map(Point_set_processing_3_np_helper::get_normal_map(input_range, np)), m_traits(parameters::choose_parameter(parameters::get_parameter(np, internal_np::geom_traits))) { CGAL_precondition(input_range.size() > 0); @@ -174,28 +185,76 @@ namespace Point_set { const Seed_range &ordered() { return m_ordered; } + + /*! + \brief the average of the maximal point to fitted plane distance in each neighborhood. + */ + + const FT mean_distance() { + return mean_d; + } + + /*! + \brief the average of the maximal normal deviation to fitted plane in each neighborhood. + */ + const FT mean_deviation() { + return mean_dev; + } /// @} private: Neighbor_query& m_neighbor_query; const Point_map m_point_map; + const Normal_map m_normal_map; const Traits m_traits; Seed_range m_ordered; std::vector m_scores; + FT mean_d; + FT mean_dev; + void compute_scores() { std::vector neighbors; std::size_t idx = 0; + + mean_d = 0; + mean_dev = 0; + for (const Item& item : m_ordered) { neighbors.clear(); m_neighbor_query(item, neighbors); neighbors.push_back(item); - m_scores[idx++] = internal::create_plane( - neighbors, m_point_map, m_traits).second; + auto p = internal::create_plane( + neighbors, m_point_map, m_traits); + + auto plane = p.first; + + FT max_dist = 0; + FT max_dev = 0; + + for (const Item &n : neighbors) { + FT d = (get(m_point_map, n) - plane.point()) * plane.orthogonal_vector(); + FT dev = acos(CGAL::abs(get(m_normal_map, n) * plane.orthogonal_vector())); + + if (d > max_dist) + max_dist = d; + + if (dev > max_dev) + max_dev = dev; + } + + mean_d += max_dist; + mean_dev += max_dev; + + m_scores[idx++] = p.second; } + + mean_d /= m_scores.size(); + mean_dev /= m_scores.size(); + mean_dev *= 180 / CGAL_PI; } }; @@ -210,7 +269,8 @@ using Least_squares_plane_fit_sorting_for_point_set = Least_squares_plane_fit_sorting::Kernel, typename PointSet3::Index, NeighborQuery, - typename PointSet3::Point_map>; + typename PointSet3::Point_map, + typename PointSet3::Vector_map>; /*! \ingroup PkgShapeDetectionRGOnPointSet3 From 073309a07f8c59253a8953d80e1f89daf5acf682 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Tue, 10 Sep 2024 14:36:58 +0200 Subject: [PATCH 02/34] fix crash on repeating steps in the reconstruction pipeline --- .../include/CGAL/Kinetic_space_partition_3.h | 2 ++ .../CGAL/Kinetic_surface_reconstruction_3.h | 8 +++++++- .../Kinetic_surface_reconstruction_plugin.cpp | 16 +++------------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Kinetic_space_partition/include/CGAL/Kinetic_space_partition_3.h b/Kinetic_space_partition/include/CGAL/Kinetic_space_partition_3.h index 547ebc0a97a8..d231b48e1ee5 100644 --- a/Kinetic_space_partition/include/CGAL/Kinetic_space_partition_3.h +++ b/Kinetic_space_partition/include/CGAL/Kinetic_space_partition_3.h @@ -2279,6 +2279,7 @@ class Kinetic_space_partition_3 { m_points.clear(); m_points.reserve(count); + m_polygons.clear(); m_polygons.reserve(m_input_polygons.size()); To_exact to_exact; @@ -2321,6 +2322,7 @@ class Kinetic_space_partition_3 { max_count = (std::max)(max_count, node); } + m_partition_nodes.clear(); m_partition_nodes.resize(leaf_count); m_node2partition.resize(max_count + 1, std::size_t(-1)); diff --git a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h index 94db973672da..21b8c276153e 100644 --- a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h +++ b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h @@ -330,7 +330,7 @@ class Kinetic_surface_reconstruction_3 { m_sorting->sort(); } - max_distance = 2 * m_sorting->mean_distance(); + max_distance = 4 * m_sorting->mean_distance(); normal_dev = m_sorting->mean_deviation(); min_inliers = m_points.size() * 0.005; // difficult to estimate as it depends on the kind of data, e.g., object scan vs. large scale urban acquisition } @@ -651,7 +651,9 @@ class Kinetic_surface_reconstruction_3 { m_face_inliers.clear(); auto face_range = m_lcc.template one_dart_per_cell<2>(); + m_faces_lcc.clear(); m_faces_lcc.reserve(face_range.size()); + m_attrib2index_lcc.clear(); for (auto& d : face_range) { typename LCC::Dart_descriptor dh = m_lcc.dart_descriptor(d); @@ -675,9 +677,13 @@ class Kinetic_surface_reconstruction_3 { // Create value arrays for graph cut m_face_inliers.resize(m_faces_lcc.size()); m_face_area.resize(m_faces_lcc.size()); + m_face_area_lcc.clear(); m_face_area_lcc.resize(m_faces_lcc.size()); + m_face_neighbors_lcc.clear(); m_face_neighbors_lcc.resize(m_faces_lcc.size(), std::pair(-1, -1)); + m_neighbors2index_lcc.clear(); + m_cost_matrix.clear(); m_cost_matrix.resize(2); m_cost_matrix[0].resize(m_kinetic_partition.number_of_volumes() + 6, 0); m_cost_matrix[1].resize(m_kinetic_partition.number_of_volumes() + 6, 0); diff --git a/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp b/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp index b851e8f052fd..f107f602b3d9 100644 --- a/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp +++ b/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp @@ -110,16 +110,6 @@ class Kinetic_surface_reconstruction_plugin return true; else return false; - -/* - if (pwn_item == nullptr && m_pwn_item == nullptr) { - enable_detection(false); - enable_regularization(false); - enable_partition(false); - enable_reconstruction(false); - }*/ - - //return pwn_item != nullptr; } QList actions() const override @@ -431,7 +421,7 @@ private Q_SLOTS: Point_set* points = m_pwn_item->point_set(); m_ksr = new KSR(*points); - /*if (filename == "foam_box" || filename == "foam_box_new") { + if (filename == "foam_box" || filename == "foam_box_new") { // Shape detection parameters dock_widget->sdMaxDistanceBox->setValue(0.05); dock_widget->sdMaxAngleBox->setValue(15); @@ -585,14 +575,14 @@ private Q_SLOTS: dock_widget->recGroundCheck->setChecked(false); dock_widget->recLambdaBox->setValue(0.5); } - else */{ + else { m_known_file = false; FT max_distance, max_angle; std::size_t min_region_size; m_ksr->estimate_detection_parameters(max_distance, max_angle, min_region_size); dock_widget->sdMaxDistanceBox->setValue(max_distance); dock_widget->sdMaxAngleBox->setValue(max_angle); - dock_widget->sdMinRegionSizeBox->setValue(points->number_of_points() * 0.01); + dock_widget->sdMinRegionSizeBox->setValue(min_region_size); dock_widget->sdkNeighborsBox->setValue(12); dock_widget->srCoplanarityCheck->setChecked(true); dock_widget->srMaxOffsetBox->setValue(max_distance * 0.5); From e012bdd11ecb5151ce125b3b891ec6d9d2761cb4 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Wed, 11 Sep 2024 14:41:07 +0200 Subject: [PATCH 03/34] removing some unnecessary includes --- Kinetic_space_partition/include/CGAL/KSP/utils.h | 1 - .../include/CGAL/KSP_3/Initializer.h | 10 +++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Kinetic_space_partition/include/CGAL/KSP/utils.h b/Kinetic_space_partition/include/CGAL/KSP/utils.h index d8e99ddddc28..64a2d9972965 100644 --- a/Kinetic_space_partition/include/CGAL/KSP/utils.h +++ b/Kinetic_space_partition/include/CGAL/KSP/utils.h @@ -41,7 +41,6 @@ #include #include #include -#include // Boost includes. #include diff --git a/Kinetic_space_partition/include/CGAL/KSP_3/Initializer.h b/Kinetic_space_partition/include/CGAL/KSP_3/Initializer.h index be34da2cb05e..74b29a5d4611 100644 --- a/Kinetic_space_partition/include/CGAL/KSP_3/Initializer.h +++ b/Kinetic_space_partition/include/CGAL/KSP_3/Initializer.h @@ -17,14 +17,14 @@ // CGAL includes. #include -#include -#include +//#include +//#include #include #include #include #include -#include -#include +//#include +//#include // Internal includes. #include @@ -74,7 +74,7 @@ class Initializer { using From_exact = CGAL::Cartesian_converter; using Bbox_3 = CGAL::Bbox_3; - using OBB_traits = CGAL::Oriented_bounding_box_traits_3; + //using OBB_traits = CGAL::Oriented_bounding_box_traits_3; using Parameters = KSP::internal::Parameters_3; From 7c5cb1be31c4e35dbf287640238a911723b027b1 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Wed, 11 Sep 2024 15:23:40 +0200 Subject: [PATCH 04/34] updated dependencies --- .../package_info/Kinetic_space_partition/dependencies | 7 ------- .../Kinetic_surface_reconstruction/dependencies | 7 ------- 2 files changed, 14 deletions(-) diff --git a/Kinetic_space_partition/package_info/Kinetic_space_partition/dependencies b/Kinetic_space_partition/package_info/Kinetic_space_partition/dependencies index 737b0d92b95e..831b16749e83 100644 --- a/Kinetic_space_partition/package_info/Kinetic_space_partition/dependencies +++ b/Kinetic_space_partition/package_info/Kinetic_space_partition/dependencies @@ -1,20 +1,16 @@ Algebraic_foundations Arithmetic_kernel -Arrangement_on_surface_2 BGL -Boolean_set_operations_2 Bounding_volumes CGAL_Core Cartesian_kernel Circulator Combinatorial_map Convex_hull_2 -Convex_hull_3 Distance_2 Distance_3 Filtered_kernel Generalized_map -HalfedgeDS Hash_map Homogeneous_kernel Installation @@ -27,7 +23,6 @@ Kinetic_space_partition Linear_cell_complex Modular_arithmetic Number_types -Optimal_bounding_box Orthtree Point_set_3 Point_set_processing_3 @@ -43,7 +38,5 @@ Solver_interface Spatial_sorting Stream_support Surface_mesh -Surface_sweep_2 TDS_2 Triangulation_2 -Union_find diff --git a/Kinetic_surface_reconstruction/package_info/Kinetic_surface_reconstruction/dependencies b/Kinetic_surface_reconstruction/package_info/Kinetic_surface_reconstruction/dependencies index 50beb4822f2a..485a6ca615ef 100644 --- a/Kinetic_surface_reconstruction/package_info/Kinetic_surface_reconstruction/dependencies +++ b/Kinetic_surface_reconstruction/package_info/Kinetic_surface_reconstruction/dependencies @@ -1,20 +1,16 @@ Algebraic_foundations Arithmetic_kernel -Arrangement_on_surface_2 BGL -Boolean_set_operations_2 Bounding_volumes Cartesian_kernel CGAL_Core Circulator Combinatorial_map Convex_hull_2 -Convex_hull_3 Distance_2 Distance_3 Filtered_kernel Generalized_map -HalfedgeDS Hash_map Homogeneous_kernel Installation @@ -28,7 +24,6 @@ Kinetic_surface_reconstruction Linear_cell_complex Modular_arithmetic Number_types -Optimal_bounding_box Orthtree Point_set_3 Point_set_processing_3 @@ -48,9 +43,7 @@ Spatial_sorting Stream_support Surface_mesh Surface_mesh_segmentation -Surface_sweep_2 TDS_2 TDS_3 Triangulation_2 Triangulation_3 -Union_find From 40581dd25266275e80cd1d0e230a8438f3b3c316 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Thu, 12 Sep 2024 16:04:10 +0200 Subject: [PATCH 05/34] bug fixes --- .../ksr_basic.cpp | 8 ++-- .../CGAL/Kinetic_surface_reconstruction_3.h | 41 +++++++++++++------ .../Least_squares_plane_fit_sorting.h | 18 ++++---- ...on_growing_on_point_set_3_with_sorting.cpp | 2 +- .../test_region_growing_strict.cpp | 2 +- 5 files changed, 44 insertions(+), 27 deletions(-) diff --git a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/ksr_basic.cpp b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/ksr_basic.cpp index ce3ef97db1d6..d34ab8a44efc 100644 --- a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/ksr_basic.cpp +++ b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/ksr_basic.cpp @@ -25,23 +25,23 @@ int main() { auto param = CGAL::parameters::maximum_distance(0.5) .maximum_angle(10) .k_neighbors(12) - .minimum_region_size(50); + .minimum_region_size(250); // Algorithm. KSR ksr(point_set, param); ksr.detection_and_partition(1, param); - std::cout << ksr.detect_planar_shapes() << " planar shapes detected" << std::endl; + std::cout << ksr.detected_planar_shapes().size() << " planar shapes detected" << std::endl; std::vector vtx; std::vector > polylist; - ksr.reconstruct_with_ground(0.5, std::back_inserter(vtx), std::back_inserter(polylist)); + ksr.reconstruct_with_ground(0.7, std::back_inserter(vtx), std::back_inserter(polylist)); if (polylist.size() > 0) { std::cout << polylist.size() << " faces in reconstruction" << std::endl; - CGAL::IO::write_polygon_soup("building_0.5.ply", vtx, polylist); + CGAL::IO::write_polygon_soup("building_0.7.ply", vtx, polylist); return EXIT_SUCCESS; } else { diff --git a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h index 21b8c276153e..7a2b2c98ea81 100644 --- a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h +++ b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h @@ -136,7 +136,7 @@ class Kinetic_surface_reconstruction_3 { \cgalParamNBegin{minimum_region_size} \cgalParamDescription{Shape detection: minimum number of 3D points a region must have} \cgalParamType{`std::size_t`} - \cgalParamDefault{1% of input points} + \cgalParamDefault{0.5% of input points} \cgalParamNEnd \cgalParamNBegin{angle_tolerance} \cgalParamDescription{Shape regularization: maximum allowed angle in degrees between plane normals used for parallelism, orthogonality, and axis symmetry} @@ -266,7 +266,7 @@ class Kinetic_surface_reconstruction_3 { \cgalParamNBegin{minimum_region_size} \cgalParamDescription{Shape detection: minimum number of 3D points a region must have} \cgalParamType{`std::size_t`} - \cgalParamDefault{1% of input points} + \cgalParamDefault{0.5% of input points} \cgalParamNEnd \cgalParamNBegin{angle_tolerance} \cgalParamDescription{Shape regularization: maximum allowed angle in degrees between plane normals used for parallelism, orthogonality, and axis symmetry} @@ -1725,13 +1725,8 @@ class Kinetic_surface_reconstruction_3 { m_volumes[i] = 0; } -// std::size_t count_faces = 0; -// std::size_t count_points = 0; - From_exact from_exact; -// std::size_t idx = 0; - for (std::size_t i = 0; i < m_faces_lcc.size(); i++) { std::size_t v[] = { std::size_t(-1), std::size_t(-1) }; Point_3 c[2]; @@ -1814,11 +1809,33 @@ class Kinetic_surface_reconstruction_3 { } if (m_verbose) std::cout << "* getting planar shapes using region growing" << std::endl; + FT xmin, ymin, zmin, xmax, ymax, zmax; + auto pit = m_points.begin(); + const Point_3& p = get(m_point_map, *pit); + xmin = xmax = p.x(); + ymin = ymax = p.y(); + zmin = zmax = p.z(); + + pit++; + + while (pit != m_points.end()) { + const Point_3& p = get(m_point_map, *pit); + xmin = (std::min)(xmin, p.x()); + xmax = (std::max)(xmax, p.x()); + ymin = (std::min)(ymin, p.y()); + ymax = (std::max)(ymax, p.y()); + zmin = (std::min)(zmin, p.z()); + zmax = (std::max)(zmax, p.z()); + pit++; + } + + FT diag = CGAL::sqrt((xmax - xmin) * (xmax - xmin) + (ymax - ymin) * (ymax - ymin) + (zmax - zmin) * (zmax - zmin)); + // Parameters. const std::size_t k = parameters::choose_parameter(parameters::get_parameter(np, internal_np::k_neighbors), 12); - const FT max_distance_to_plane = parameters::choose_parameter(parameters::get_parameter(np, internal_np::maximum_distance), FT(1)); + const FT max_distance_to_plane = parameters::choose_parameter(parameters::get_parameter(np, internal_np::maximum_distance), diag * 0.02); const FT max_accepted_angle = parameters::choose_parameter(parameters::get_parameter(np, internal_np::maximum_angle), FT(15)); - const std::size_t min_region_size = parameters::choose_parameter(parameters::get_parameter(np, internal_np::minimum_region_size), 50); + const std::size_t min_region_size = parameters::choose_parameter(parameters::get_parameter(np, internal_np::minimum_region_size), m_points.size() * 0.005); m_detection_distance_tolerance = max_distance_to_plane; @@ -1863,11 +1880,11 @@ class Kinetic_surface_reconstruction_3 { return; const bool regularize_axis_symmetry = parameters::choose_parameter(parameters::get_parameter(np, internal_np::regularize_axis_symmetry), false); - const bool regularize_coplanarity = parameters::choose_parameter(parameters::get_parameter(np, internal_np::regularize_coplanarity), false); + const bool regularize_coplanarity = parameters::choose_parameter(parameters::get_parameter(np, internal_np::regularize_coplanarity), true); const bool regularize_orthogonality = parameters::choose_parameter(parameters::get_parameter(np, internal_np::regularize_orthogonality), false); const bool regularize_parallelism = parameters::choose_parameter(parameters::get_parameter(np, internal_np::regularize_parallelism), false); - const FT angle_tolerance = parameters::choose_parameter(parameters::get_parameter(np, internal_np::angle_tolerance), 25); - const FT maximum_offset = parameters::choose_parameter(parameters::get_parameter(np, internal_np::maximum_offset), 0.01); + const FT angle_tolerance = parameters::choose_parameter(parameters::get_parameter(np, internal_np::angle_tolerance), 5); + const FT maximum_offset = parameters::choose_parameter(parameters::get_parameter(np, internal_np::maximum_offset), max_distance_to_plane * 0.5); // Regularize detected planes. diff --git a/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h b/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h index 6b46b3bcece6..3f26a942ded8 100644 --- a/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h +++ b/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h @@ -133,7 +133,7 @@ namespace Point_set { const CGAL_NP_CLASS& np = parameters::default_values()) : m_neighbor_query(neighbor_query), m_point_map(Point_set_processing_3_np_helper::get_const_point_map(input_range, np)), - m_normal_map(Point_set_processing_3_np_helper::get_normal_map(input_range, np)), + m_normal_map(Point_set_processing_3_np_helper::get_normal_map(input_range, np)), m_traits(parameters::choose_parameter(parameters::get_parameter(np, internal_np::geom_traits))) { CGAL_precondition(input_range.size() > 0); @@ -190,14 +190,14 @@ namespace Point_set { \brief the average of the maximal point to fitted plane distance in each neighborhood. */ - const FT mean_distance() { + const double mean_distance() { return mean_d; } /*! \brief the average of the maximal normal deviation to fitted plane in each neighborhood. */ - const FT mean_deviation() { + const double mean_deviation() { return mean_dev; } /// @} @@ -211,8 +211,8 @@ namespace Point_set { Seed_range m_ordered; std::vector m_scores; - FT mean_d; - FT mean_dev; + double mean_d; + double mean_dev; void compute_scores() { @@ -232,12 +232,12 @@ namespace Point_set { auto plane = p.first; - FT max_dist = 0; - FT max_dev = 0; + double max_dist = 0; + double max_dev = 0; for (const Item &n : neighbors) { - FT d = (get(m_point_map, n) - plane.point()) * plane.orthogonal_vector(); - FT dev = acos(CGAL::abs(get(m_normal_map, n) * plane.orthogonal_vector())); + double d = CGAL::to_double((get(m_point_map, n) - plane.point()) * plane.orthogonal_vector()); + double dev = acos(CGAL::to_double(CGAL::abs(get(m_normal_map, n) * plane.orthogonal_vector()))); if (d > max_dist) max_dist = d; diff --git a/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3_with_sorting.cpp b/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3_with_sorting.cpp index a110f376a22f..811f4095f768 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3_with_sorting.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_on_point_set_3_with_sorting.cpp @@ -30,7 +30,7 @@ using Normal_map = typename Input_range::Vector_map; using Neighbor_query = SD::Point_set::K_neighbor_query; using Plane_region = SD::Point_set::Least_squares_plane_fit_region; -using Plane_sorting = SD::Point_set::Least_squares_plane_fit_sorting; +using Plane_sorting = SD::Point_set::Least_squares_plane_fit_sorting; using Sphere_region = SD::Point_set::Least_squares_sphere_fit_region; using Sphere_sorting = SD::Point_set::Least_squares_sphere_fit_sorting; using Cylinder_region = SD::Point_set::Least_squares_cylinder_fit_region; diff --git a/Shape_detection/test/Shape_detection/test_region_growing_strict.cpp b/Shape_detection/test/Shape_detection/test_region_growing_strict.cpp index 82ed06f3ca44..7f6030e1876b 100644 --- a/Shape_detection/test/Shape_detection/test_region_growing_strict.cpp +++ b/Shape_detection/test/Shape_detection/test_region_growing_strict.cpp @@ -312,7 +312,7 @@ bool test_planes_points_with_normals() { using Neighbor_query = CGAL::Shape_detection::Point_set::K_neighbor_query; using Region_type = CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region; - using Sorting_type = CGAL::Shape_detection::Point_set::Least_squares_plane_fit_sorting; + using Sorting_type = CGAL::Shape_detection::Point_set::Least_squares_plane_fit_sorting; using Region_growing = CGAL::Shape_detection::Region_growing; // Create parameter classes. From a43efbfdb3109ad1076919049ccd9fd2031a6e8e Mon Sep 17 00:00:00 2001 From: Sebastien Loriot Date: Tue, 24 Sep 2024 16:22:53 +0200 Subject: [PATCH 06/34] Fix warning --- .../Point_set/Least_squares_plane_fit_sorting.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h b/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h index 3f26a942ded8..51f633fd204a 100644 --- a/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h +++ b/Shape_detection/include/CGAL/Shape_detection/Region_growing/Point_set/Least_squares_plane_fit_sorting.h @@ -190,14 +190,14 @@ namespace Point_set { \brief the average of the maximal point to fitted plane distance in each neighborhood. */ - const double mean_distance() { + double mean_distance() { return mean_d; } /*! \brief the average of the maximal normal deviation to fitted plane in each neighborhood. */ - const double mean_deviation() { + double mean_deviation() { return mean_dev; } /// @} From 341fd5f396ca60cc6b42bd25647c6ede37ead3d1 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 25 Sep 2024 12:27:35 +0100 Subject: [PATCH 07/34] Use Exact_integer --- .../doc/Polytope_distance_d/CGAL/Width_3.h | 2 +- .../examples/Polytope_distance_d/width_simplex.cpp | 13 ++----------- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h index 45bacc2bcea4..9c5af8218d6d 100644 --- a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h +++ b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h @@ -54,7 +54,7 @@ Because there is no need for dividing values during the algorithm, the numbers can get really huge (all the computations are made using a lot of multiplications). Therefore it is strongly recommended to use a number type that can handle numbers of arbitrary length (e.g., -`leda_integer` in combination with the homogeneous representation +`Exact_integer` in combination with the homogeneous representation of the points). But these large numbers have a disadvantage: Operations on them are slower as greater the number gets. Therefore it is possible to shorten the numbers by using the compiler flag diff --git a/Polytope_distance_d/examples/Polytope_distance_d/width_simplex.cpp b/Polytope_distance_d/examples/Polytope_distance_d/width_simplex.cpp index b909f263d9ce..7463a9296415 100644 --- a/Polytope_distance_d/examples/Polytope_distance_d/width_simplex.cpp +++ b/Polytope_distance_d/examples/Polytope_distance_d/width_simplex.cpp @@ -1,20 +1,11 @@ #include #include #include +#include #include #include -#if defined(CGAL_USE_GMP) -#include -typedef CGAL::Gmpz RT; -#elif defined (CGAL_USE_LEDA) -#include -typedef leda_integer RT; -#else -#include -typedef CGAL::MP_Float RT; -#endif - +typedef CGAL::Exact_integer RT; typedef CGAL::Homogeneous Kernel; typedef Kernel::Point_3 Point_3; typedef Kernel::Plane_3 Plane_3; From 5705d05c7a7b19f054e628d687ec5f5ea01c7f8f Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Fri, 27 Sep 2024 16:59:34 +0100 Subject: [PATCH 08/34] Explain that duplicates may be reported --- Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h index 9c5af8218d6d..b30c8553a672 100644 --- a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h +++ b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h @@ -25,9 +25,10 @@ width-planes. \f$ \mathcal{W(S)}=\mathcal{W}_{d_{opt}}\mathcal{(S)}\f$ -Note: There might be several optimal build directions. Hence +\Note There might be several optimal build directions. Hence neither the width-planes nor the direction \f$ \mathbf{d}_{opt}\f$ are -unique - only the width is. +unique - only the width is. There may also be duplicates reported, +different vectors having the same or the opposite directions. \tparam Traits must be a model for `WidthTraits_3`. From 85a898dec1d69aabcca3ec61ab80df094b3bc5f1 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 2 Oct 2024 08:02:55 +0100 Subject: [PATCH 09/34] lowercase \Note --- Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h index b30c8553a672..b240e3a3bd57 100644 --- a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h +++ b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Width_3.h @@ -25,7 +25,7 @@ width-planes. \f$ \mathcal{W(S)}=\mathcal{W}_{d_{opt}}\mathcal{(S)}\f$ -\Note There might be several optimal build directions. Hence +\note There might be several optimal build directions. Hence neither the width-planes nor the direction \f$ \mathbf{d}_{opt}\f$ are unique - only the width is. There may also be duplicates reported, different vectors having the same or the opposite directions. From bea1dffa9993c6d15312e9734536c012bb22fd75 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 2 Oct 2024 08:06:35 +0100 Subject: [PATCH 10/34] Use \note --- .../Concepts/AllFurthestNeighborsTraits_2.h | 6 +----- .../doc/Polytope_distance_d/Concepts/WidthTraits_3.h | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Polytope_distance_d/doc/Polytope_distance_d/Concepts/AllFurthestNeighborsTraits_2.h b/Polytope_distance_d/doc/Polytope_distance_d/Concepts/AllFurthestNeighborsTraits_2.h index 874782161e7a..452ade88fee4 100644 --- a/Polytope_distance_d/doc/Polytope_distance_d/Concepts/AllFurthestNeighborsTraits_2.h +++ b/Polytope_distance_d/doc/Polytope_distance_d/Concepts/AllFurthestNeighborsTraits_2.h @@ -16,14 +16,10 @@ convex polygon using the function `all_furthest_neighbors_2()`. \sa `CGAL::all_furthest_neighbors_2()` -\cgalHeading{Notes} - -
    -
  • `AllFurthestNeighborsTraits_2::Less_xy_2` and +\note `AllFurthestNeighborsTraits_2::Less_xy_2` and `AllFurthestNeighborsTraits_2::Orientation_2` are used for (expensive) precondition checking only. Therefore, they need not to be specified, in case that precondition checking is disabled. -
*/ diff --git a/Polytope_distance_d/doc/Polytope_distance_d/Concepts/WidthTraits_3.h b/Polytope_distance_d/doc/Polytope_distance_d/Concepts/WidthTraits_3.h index 5686aec87e15..8699ebd7b323 100644 --- a/Polytope_distance_d/doc/Polytope_distance_d/Concepts/WidthTraits_3.h +++ b/Polytope_distance_d/doc/Polytope_distance_d/Concepts/WidthTraits_3.h @@ -24,7 +24,7 @@ class WidthTraits_3 { public: /// \name Types -/// Notes: If you want to compute the width of a polyhedron then you have to make sure that the point type in the traits class and the point type in the polyhedron class are the same! The same holds for `Traits::Plane_3` and `Polyhedron::Plane_3`. +/// \note If you want to compute the width of a polyhedron then you have to make sure that the point type in the traits class and the point type in the polyhedron class are the same! The same holds for `Traits::Plane_3` and `Polyhedron::Plane_3`. /// @{ /*! From 5fe32284af5ed7f148d18e1d462a697c4ed18f25 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 3 Oct 2024 11:23:23 +0100 Subject: [PATCH 11/34] Typo: labelled is UK English --- Documentation/doc/biblio/geom.bib | 10 +++++----- .../include/CGAL/Kinetic_surface_reconstruction_3.h | 4 ++-- Mesh_3/include/CGAL/Labeled_mesh_domain_3.h | 2 +- Orthtree/doc/Orthtree/Orthtree.txt | 2 +- Surface_mesher/doc/Surface_mesher/Surface_mesher.txt | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Documentation/doc/biblio/geom.bib b/Documentation/doc/biblio/geom.bib index ab364082bf86..10d1ccedb1ff 100644 --- a/Documentation/doc/biblio/geom.bib +++ b/Documentation/doc/biblio/geom.bib @@ -101937,7 +101937,7 @@ @inproceedings{mhn-fogis-82 @inproceedings{mp-drlvd-84 , author = "T. Matsuyama and T. Phillips" -, title = "Digital Realization of the Labelled {Voronoi} Diagram and its Application to Closed Boundary Detection" +, title = "Digital Realization of the Labeled {Voronoi} Diagram and its Application to Closed Boundary Detection" , booktitle = "Proc. IEEE Internat. Conf. Pattern Recogn." , year = 1984 , pages = "478--480" @@ -116182,7 +116182,7 @@ @article{p-culdo-96 @techreport{plvt-edecl-96 , author = "P. Parodi and R. Lancewicki and A. Vijh and J. K. Tsotsos" -, title = "Empirically-derived Estimates of the Complexity of Labelling Line Drawings of Polyhedral Scenes" +, title = "Empirically-derived Estimates of the Complexity of Labeling Line Drawings of Polyhedral Scenes" , number = "RBCV-TR-96-52" , institution = "Dept. Comput. Sci., Univ. Toronto" , address = "Toronto, ON" @@ -116759,7 +116759,7 @@ @article{p-farg-79 @article{p-rflg-72 , author = "T. Pavlidis" -, title = "Representation of figures by labelled graphs" +, title = "Representation of figures by labeled graphs" , journal = "Pattern Recogn." , volume = 4 , year = 1972 @@ -133630,7 +133630,7 @@ @inproceedings{skw-etgps-85 @inproceedings{sc-aipta-86 , author = "J. K. Sircar and J. A. Cerbrian" -, title = "Application of image processing techniques to the automated labelling of raster digitized contours" +, title = "Application of image processing techniques to the automated labeling of raster digitized contours" , booktitle = "Proc. 2nd Internat. Sympos. Spatial Data Handling" , year = 1986 , pages = "171--184" @@ -151991,7 +151991,7 @@ @article{bauchet2020kinetic articleno = {156}, numpages = {14}, keywords = {polygonal surface mesh, Surface reconstruction, kinetic framework, surface approximation} -} +} @article{levismooth, title={Smooth Rotation Enhanced As-Rigid-As-Possible Mesh Animation}, diff --git a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h index 7df975df13c3..e7c08b7b8567 100644 --- a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h +++ b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h @@ -2041,14 +2041,14 @@ class Kinetic_surface_reconstruction_3 { // 4 xmin // 5 zmax const double force = static_cast(m_total_inliers * 3); - // 0 - cost for labelled as outside + // 0 - cost for labeled as outside cost_matrix[0][0] = 0; cost_matrix[0][1] = 0; cost_matrix[0][2] = 0; cost_matrix[0][3] = 0; cost_matrix[0][4] = 0; cost_matrix[0][5] = 0; - // 1 - cost for labelled as inside + // 1 - cost for labeled as inside cost_matrix[1][0] = 0; cost_matrix[1][1] = 0; cost_matrix[1][2] = 0; diff --git a/Mesh_3/include/CGAL/Labeled_mesh_domain_3.h b/Mesh_3/include/CGAL/Labeled_mesh_domain_3.h index ec47da8542dd..019716cb1ba8 100644 --- a/Mesh_3/include/CGAL/Labeled_mesh_domain_3.h +++ b/Mesh_3/include/CGAL/Labeled_mesh_domain_3.h @@ -1097,7 +1097,7 @@ class Labeled_mesh_domain_3 Surface_patch operator()(const Point_3& a, const Point_3& b) const { // If f(a) != f(b), then [a,b] intersects some surface. Here we consider - // [a,b] intersects surface_patch labelled (or ). + // [a,b] intersects surface_patch labeled (or ). // It may be false, further rafinement will improve precision const Subdomain_index value_a = r_domain_.function_(a); const Subdomain_index value_b = r_domain_.function_(b); diff --git a/Orthtree/doc/Orthtree/Orthtree.txt b/Orthtree/doc/Orthtree/Orthtree.txt index eb7b2559b2ac..38d979f1aed3 100644 --- a/Orthtree/doc/Orthtree/Orthtree.txt +++ b/Orthtree/doc/Orthtree/Orthtree.txt @@ -197,7 +197,7 @@ Figure \cgalFigureRef{Orthtree_traversal_fig} shows in which order nodes are visited depending on the traversal method used. \cgalFigureBegin{Orthtree_traversal_fig, quadtree_traversal.png} -%Quadtree visualized as a graph. Each node is labelled according to the +%Quadtree visualized as a graph. Each node is labeled according to the order in which it is visited by the traversal. When using leaves and level traversals, the quadtree is only partially traversed. \cgalFigureEnd diff --git a/Surface_mesher/doc/Surface_mesher/Surface_mesher.txt b/Surface_mesher/doc/Surface_mesher/Surface_mesher.txt index 658dc7bae53c..df31bc2de1e4 100644 --- a/Surface_mesher/doc/Surface_mesher/Surface_mesher.txt +++ b/Surface_mesher/doc/Surface_mesher/Surface_mesher.txt @@ -313,7 +313,7 @@ class is not yet documented because its interface and code have not yet been stabilized. The Surface Mesh Generator demo allows to mesh not only gray level images, -but also segmented images, when voxels are labelled with a domain +but also segmented images, when voxels are labeled with a domain index. Such images are for example the result of a segmentation of 3D medical images. From 42d8c22d7c962fbe2e68e96ae851c3c0c2559167 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Fri, 4 Oct 2024 09:18:07 +0200 Subject: [PATCH 12/34] remove warning fixed crash when estimating normals from context menu --- .../Kinetic_surface_reconstruction_plugin.cpp | 13 +++++++++++-- Lab/demo/Lab/Scene_item.cpp | 13 +++++++++++-- Three/include/CGAL/Three/Scene_item.h | 2 ++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp b/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp index f107f602b3d9..d0c694aa7461 100644 --- a/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp +++ b/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp @@ -146,6 +146,7 @@ class Kinetic_surface_reconstruction_plugin connect(dock_widget->partRunButton, SIGNAL(clicked(bool)), this, SLOT(run_partition())); connect(dock_widget->recRunButton, SIGNAL(clicked(bool)), this, SLOT(run_reconstruction())); connect(dock_widget->partSubdivisionCheck, SIGNAL(stateChanged(int)), this, SLOT(onSubdivisionStateChanged(int))); + connect(dock_widget, SIGNAL(visibilityChanged(bool)), this, SLOT(onVisibilityChanged(bool))); } private Q_SLOTS: void openDialog() @@ -165,6 +166,9 @@ private Q_SLOTS: } void onItemIndexSelected(int item_index) { + if (!dock_widget->isVisible()) + return; + Scene_points_with_normal_item *selection = qobject_cast(scene->item(item_index)); if (selection == nullptr) { // Keep old reference if no new point cloud has been selected. @@ -223,8 +227,7 @@ private Q_SLOTS: void onItemChanged() { // Enable detection if the point set item has normals now assert(m_pwn_item); - Point_set* points = m_pwn_item->point_set(); - std::cout << "item changed" << std::endl; + if (m_pwn_item->has_normals()) enable_detection(true); } @@ -357,6 +360,12 @@ private Q_SLOTS: dock_widget->partPolygonsPerNodeBox->setEnabled(state != 0); } + void onVisibilityChanged(bool visibility) { + if (!dock_widget->isVisible()) + return; + std::cout << "in visibility changed" << std::endl; + } + private: void convex_hull(const std::vector& region, const CGAL::Epick::Plane_3& plane, std::vector > &polys) { if (m_pwn_item == nullptr) diff --git a/Lab/demo/Lab/Scene_item.cpp b/Lab/demo/Lab/Scene_item.cpp index 1b54ec529938..104d2af1c10b 100644 --- a/Lab/demo/Lab/Scene_item.cpp +++ b/Lab/demo/Lab/Scene_item.cpp @@ -15,6 +15,7 @@ CGAL::Three::Scene_item::Scene_item(int buffers_size, int vaos_size) are_buffers_filled(false), rendering_mode(FlatPlusEdges), defaultContextMenu(nullptr), + context_menu_outdated(false), buffersSize(buffers_size), vaosSize(vaos_size), vaos(vaos_size) @@ -94,6 +95,11 @@ QString CGAL::Three::Scene_item::renderingModeName() const } QMenu* CGAL::Three::Scene_item::contextMenu() { + if (context_menu_outdated && defaultContextMenu) { + delete defaultContextMenu; + defaultContextMenu = nullptr; + } + if(defaultContextMenu) { defaultContextMenu->setTitle(name()); return defaultContextMenu; @@ -111,14 +117,17 @@ QMenu* CGAL::Three::Scene_item::contextMenu() slotName(RenderingMode(mode))); defaultContextMenu->actions().last()->setProperty("is_groupable", true); } + + context_menu_outdated = false; + return defaultContextMenu; } void CGAL::Three::Scene_item::resetMenu() { - delete defaultContextMenu; - defaultContextMenu = nullptr; + context_menu_outdated = true; } + CGAL::Three::Scene_group_item* CGAL::Three::Scene_item::parentGroup() const { return parent_group; } diff --git a/Three/include/CGAL/Three/Scene_item.h b/Three/include/CGAL/Three/Scene_item.h index b517a9c91083..b94d04fa6a9a 100644 --- a/Three/include/CGAL/Three/Scene_item.h +++ b/Three/include/CGAL/Three/Scene_item.h @@ -443,6 +443,8 @@ public Q_SLOTS: RenderingMode rendering_mode; //!The default context menu. QMenu* defaultContextMenu; + //!Specifies if the context menu should be rebuild on the next call. + bool context_menu_outdated = false; /*! Contains the previous RenderingMode. * This is used to determine if invalidateOpenGLBuffers should be called or not * in certain cases. From 6e18225c2791631fb38133daa22afc374b4a3f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Fri, 4 Oct 2024 16:04:59 +0200 Subject: [PATCH 13/34] remove extra template keyword --- AABB_tree/include/CGAL/AABB_tree.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AABB_tree/include/CGAL/AABB_tree.h b/AABB_tree/include/CGAL/AABB_tree.h index c63fdf38679d..9dd8460abd2d 100644 --- a/AABB_tree/include/CGAL/AABB_tree.h +++ b/AABB_tree/include/CGAL/AABB_tree.h @@ -551,7 +551,7 @@ namespace CGAL { traits.intersection(query, singleton_data()); break; default: // if(size() >= 2) - root_node()->template traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound); + root_node()->traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound); } } From 499bcadc4b4e9d416fb08e35bcd7acc9b5560b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Fri, 4 Oct 2024 16:08:31 +0200 Subject: [PATCH 14/34] remove extra template keyword --- .../test/Intersections_3/test_intersections_Line_3.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Intersections_3/test/Intersections_3/test_intersections_Line_3.cpp b/Intersections_3/test/Intersections_3/test_intersections_Line_3.cpp index 936e077e018e..7285c22be726 100644 --- a/Intersections_3/test/Intersections_3/test_intersections_Line_3.cpp +++ b/Intersections_3/test/Intersections_3/test_intersections_Line_3.cpp @@ -156,9 +156,9 @@ struct Line_3_intersection_tester Pl pl(pl0, pl1, pl2); P pl3 = pl0 + FT(this->r.get_double()) * V(pl1 - pl0) + FT(this->r.get_double()) * V(pl1 - pl0); if(pl.has_on(l1)) - Base::template check_intersection(L(pl3, l1), pl, L(pl3, l1)); // both points on the plane + Base::check_intersection(L(pl3, l1), pl, L(pl3, l1)); // both points on the plane else - Base::template check_intersection(L(pl3, l1), pl, pl3); // single point on the plane + Base::check_intersection(L(pl3, l1), pl, pl3); // single point on the plane if(pl.oriented_side(l0) != pl.oriented_side(l1)) // l0 xor l1 on pl is fine { From 1ca47bdabf5832755b4d120edebee13be437324c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Fri, 4 Oct 2024 16:09:54 +0200 Subject: [PATCH 15/34] add missing include directive --- Hash_map/include/CGAL/Hash_map/internal/chained_map.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Hash_map/include/CGAL/Hash_map/internal/chained_map.h b/Hash_map/include/CGAL/Hash_map/internal/chained_map.h index bea9b0993f00..27e38ee59d5c 100644 --- a/Hash_map/include/CGAL/Hash_map/internal/chained_map.h +++ b/Hash_map/include/CGAL/Hash_map/internal/chained_map.h @@ -17,6 +17,7 @@ #define CGAL_HASH_MAP_INTERNAL_CHAINED_MAP_H #include +#include #include #include #include From e3bd371c3e942a55c66a60ba4a7185f2c9571c6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Fri, 4 Oct 2024 17:06:14 +0200 Subject: [PATCH 16/34] copy properties correctly --- Point_set_3/include/CGAL/Point_set_3.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Point_set_3/include/CGAL/Point_set_3.h b/Point_set_3/include/CGAL/Point_set_3.h index cda736435349..c7d127e0b86b 100644 --- a/Point_set_3/include/CGAL/Point_set_3.h +++ b/Point_set_3/include/CGAL/Point_set_3.h @@ -245,8 +245,8 @@ class Point_set_3 m_base = ps.m_base; m_indices = this->property_map ("index").value(); m_points = this->property_map ("point").value(); - m_normals = this->property_map ("normal").value(); m_nb_removed = ps.m_nb_removed; + copy_properties(ps); return *this; } @@ -257,7 +257,7 @@ class Point_set_3 m_base = ps.m_base; m_indices = this->property_map ("index").value(); m_points = this->property_map ("point").value(); - m_normals = this->property_map ("normal").value(); + copy_properties(ps); m_nb_removed = ps.m_nb_removed; } /// \endcond From 40f48328d882d627c577ebef212f0ed8cca4394d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Fri, 4 Oct 2024 17:31:06 +0200 Subject: [PATCH 17/34] test copy and assignement for properties --- .../test/Point_set_3/point_set_test.cpp | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Point_set_3/test/Point_set_3/point_set_test.cpp b/Point_set_3/test/Point_set_3/point_set_test.cpp index b745fe6e94ec..086feabfaceb 100644 --- a/Point_set_3/test/Point_set_3/point_set_test.cpp +++ b/Point_set_3/test/Point_set_3/point_set_test.cpp @@ -28,6 +28,26 @@ void test (bool expr, const char* msg) ++ nb_success; } +bool copy_and_assignement() +{ + Point_set ps1; + ps1.add_property_map("prop", int(3)); + ps1.add_normal_map(); + Point_set ps2 = ps1; + if (!ps2.has_property_map("prop")) return false; + if (!ps2.has_normal_map()) return false; + Point_set ps3(ps1); + if (!ps3.has_property_map("prop")) return false; + if (!ps3.has_normal_map()) return false; + ps1=Point_set(); + Point_set ps4 = ps1; + if (ps4.has_property_map("prop")) return false; + if (ps4.has_normal_map()) return false; + Point_set ps5(ps1); + if (ps5.has_property_map("prop")) return false; + if (ps5.has_normal_map()) return false; + return true; +} int main (int, char**) { @@ -130,7 +150,9 @@ int main (int, char**) std::unordered_set std_hash; boost::unordered_set boost_hash; + test(copy_and_assignement(), "copy and assignement"); + std::cerr << nb_success << "/" << nb_test << " test(s) succeeded." << std::endl; - return EXIT_SUCCESS; + return nb_success==nb_test ? EXIT_SUCCESS : EXIT_FAILURE; } From dd02af92a2cf367552bef3aaebdca40f6ceb17a2 Mon Sep 17 00:00:00 2001 From: albert-github Date: Sat, 5 Oct 2024 11:28:29 +0200 Subject: [PATCH 18/34] issue #8515 Spelling mistakes found checking `en-GB` to `en-US` Spelling corrections, `en-GB` -> `en-US` --- .../CGAL/AABB_tree/internal/AABB_node.h | 2 +- .../Algebraic_kernel_d/Bitstream_descartes.h | 16 ++++++------- .../Bitstream_descartes_rndl_tree.h | 2 +- .../Algebraic_kernel_d/Curve_analysis_2.h | 2 +- .../CGAL/Algebraic_kernel_d/LRU_hashed_map.h | 4 ++-- .../CGAL/Algebraic_kernel_d/exceptions.h | 4 ++-- .../include/CGAL/Algebraic_kernel_d/flags.h | 2 +- .../Algebraic_kernel_d/Curve_analysis_2.cpp | 2 +- Alpha_shapes_3/include/CGAL/Alpha_shape_3.h | 2 +- .../include/CGAL/_count_alpha.h | 2 +- .../Arrangement_on_surface_2_earth/Aos.cpp | 2 +- .../CGAL/Arr_geometry_traits/Rational_arc_2.h | 6 ++--- .../CGAL/Arr_rat_arc/Rational_arc_d_1.h | 6 ++--- .../CGAL/Arrangement_2/Arr_traits_adaptor_2.h | 2 +- .../gfx/Curve_renderer_traits.h | 2 +- .../graph/Graph_with_descriptor_with_graph.h | 2 +- .../Boolean_set_operations_2.txt | 4 ++-- .../CGAL/Min_sphere_annulus_d_traits_2.h | 2 +- .../CGAL/Min_sphere_annulus_d_traits_3.h | 2 +- .../CGAL/Min_sphere_annulus_d_traits_d.h | 2 +- .../Khachiyan_approximation.h | 2 +- .../Min_sphere_of_spheres_d_pair.h | 2 +- .../include/CGAL/min_quadrilateral_2.h | 6 ++--- .../include/CGAL/rectangular_3_center_2.h | 2 +- .../test/Bounding_volumes/min_sphere_test.cpp | 2 +- .../min_sphere_traits_2_test.cpp | 2 +- .../min_sphere_traits_3_test.cpp | 2 +- .../Bounding_volumes/test_Min_annulus_d.h | 2 +- .../Bounding_volumes/test_Min_annulus_d_2.cpp | 2 +- .../Bounding_volumes/test_Min_annulus_d_3.cpp | 2 +- .../Bounding_volumes/test_Min_annulus_d_d.cpp | 2 +- .../test/Bounding_volumes/test_Min_circle.cpp | 2 +- .../Bounding_volumes/test_Min_ellipse_2.cpp | 2 +- CGAL_ImageIO/include/CGAL/ImageIO/analyze.h | 2 +- CGAL_ImageIO/include/CGAL/ImageIO/bmptypes.h | 14 +++++------ .../include/CGAL/ImageIO/recline_impl.h | 2 +- .../include/CGAL/Combinatorial_map.h | 4 ++-- .../Combinatorial_map_copy_functors.h | 12 +++++----- .../CGAL/Combinatorial_map_operations.h | 4 ++-- Combinatorial_map/include/CGAL/Dart.h | 4 ++-- .../include/CGAL/Compute_cone_boundaries_2.h | 2 +- .../include/CGAL/Construct_theta_graph_2.h | 2 +- .../include/CGAL/Construct_yao_graph_2.h | 2 +- .../include/CGAL/gnuplot_output_2.h | 2 +- .../Developer_manual/cmakelist_script.txt | 2 +- .../doc/Documentation/Preliminaries.txt | 2 +- .../Documentation/Tutorials/Tutorial_GIS.txt | 2 +- Documentation/doc/Documentation/main.txt | 2 +- Filtered_kernel/include/CGAL/Lazy.h | 2 +- .../include/CGAL/GMap_cell_iterators.h | 2 +- .../include/CGAL/GMap_dart_iterators.h | 2 +- .../include/CGAL/Generalized_map.h | 6 ++--- .../include/CGAL/Generalized_map_operations.h | 4 ++-- Generator/doc/Generator/CGAL/Random.h | 2 +- .../CGAL/Lipschitz_sizing_field_criteria_2.h | 2 +- GraphicsView/include/CGAL/Qt/camera_impl.h | 2 +- HalfedgeDS/include/CGAL/HalfedgeDS_vector.h | 2 +- Installation/CHANGES.md | 24 +++++++++---------- .../combinatorial_repair.h | 2 +- .../Jet_fitting_3/PolyhedralSurf_rings.h | 2 +- Lab/demo/Lab/Plugins/Mesh_2/mesh_2_dialog.ui | 2 +- Lab/demo/Lab/Plugins/Mesh_3/Volume_plane.h | 2 +- Lab/demo/Lab/Viewer.h | 6 ++--- .../demo/Linear_cell_complex/MainWindow.cpp | 2 +- .../Linear_cell_complex.txt | 2 +- .../doc/Matrix_search/Matrix_search.txt | 2 +- .../CGAL/Delaunay_mesh_size_criteria_2.h | 2 +- .../Mesh_3/Charting/run_benchmark.py | 2 +- .../Slivers_exuder_cell_attributes_traits.h | 2 +- Mesh_3/include/CGAL/Mesh_3/config.h | 2 +- .../Minkowski_sum_2/AABB_node_with_join.h | 4 ++-- Nef_2/include/CGAL/Nef_2/PM_point_locator.h | 2 +- Nef_2/include/CGAL/Nef_2/gen_point_location.h | 2 +- Nef_3/doc/Nef_3/Nef_3.txt | 2 +- Number_types/doc/Number_types/CGAL/Gmpfi.h | 2 +- .../Algebraic_extension_traits.h | 2 +- .../CGAL/Sqrt_extension/Fraction_traits.h | 2 +- Number_types/include/CGAL/boost_mp_type.h | 2 +- Number_types/include/CGAL/leda_integer.h | 2 +- .../test/Number_types/Sqrt_extension.h | 2 +- .../Optimisation_basic/description.txt | 2 +- Orthtree/include/CGAL/Orthtree.h | 2 +- .../include/CGAL/Periodic_2_triangulation_2.h | 4 ++-- .../CGAL/Periodic_2_triangulation_dummy_12.h | 4 ++-- .../Protect_edges_sizing_field.h | 2 +- .../include/CGAL/Periodic_3_mesh_3/config.h | 2 +- .../include/CGAL/Periodic_3_triangulation_3.h | 4 ++-- .../Periodic_3_triangulation_dummy_36.h | 4 ++-- .../include/CGAL/_count_alpha_periodic_3.h | 2 +- .../CGAL/Poisson_mesh_cell_criteria_3.h | 2 +- .../Polygon_2/Polygon_2_algorithms_impl.h | 2 +- .../Polygon_mesh_processing/autorefinement.h | 2 +- .../Polygon_mesh_processing/compute_normal.h | 2 +- .../CGAL/Polygon_mesh_processing/distance.h | 2 +- .../Ray_3_Triangle_3_traversal_traits.h | 2 +- .../repair_degeneracies.h | 2 +- .../include/CGAL/Polynomial/bezout_matrix.h | 2 +- .../include/CGAL/Polynomial/determinant.h | 4 ++-- .../CGAL/Polytope_distance_d_traits_2.h | 2 +- .../CGAL/Polytope_distance_d_traits_3.h | 2 +- .../CGAL/Polytope_distance_d_traits_d.h | 2 +- .../Concepts/PolytopeDistanceDTraits.h | 2 +- .../test/Polytope_distance_d/test_PD.cpp | 2 +- .../test_Polytope_distance_d.h | 2 +- .../test_Polytope_distance_d_2.cpp | 2 +- .../test_Polytope_distance_d_3.cpp | 2 +- .../Polytope_distance_d/test_width_cube.cpp | 2 +- .../test_width_simplex.cpp | 2 +- .../fig_src/documentation/algorithmicx.sty | 2 +- .../QP_solver/master_mps_to_derivatives.cpp | 2 +- .../examples/Ridges_3/PolyhedralSurf_rings.h | 2 +- Ridges_3/test/Ridges_3/PolyhedralSurf_rings.h | 2 +- .../doc/STL_Extension/PackageDescription.txt | 4 ++-- .../developer_scripts/create_internal_release | 2 +- Scripts/developer_scripts/licensecheck | 2 +- .../Segment_Delaunay_graph_2.txt | 2 +- .../doc/Stream_support/IOstream.txt | 4 ++-- .../include/CGAL/IO/OI/Inventor_ostream.h | 4 ++-- .../include/CGAL/IO/VRML/VRML_2_ostream.h | 4 ++-- Stream_support/include/CGAL/IO/io.h | 2 +- .../include/CGAL/Surface_mesh/Surface_mesh.h | 2 +- .../Iterative_authalic_parameterizer_3.h | 4 ++-- .../Surface_mesh_shortest_path.h | 6 ++--- .../include/CGAL/draw_face_graph_with_paths.h | 2 +- .../CGAL/Triangulation_ds_face_base_2.h | 2 +- TDS_3/include/CGAL/Triangulation_simplex_3.h | 2 +- Three/include/CGAL/Three/Scene_item.h | 2 +- .../CGAL/Three/Scene_item_rendering_helper.h | 6 ++--- .../include/CGAL/Triangulation_ds_vertex.h | 2 +- .../Constrained_Delaunay_triangulation_2.h | 2 +- .../CGAL/Constrained_triangulation_2.h | 2 +- .../include/CGAL/Regular_triangulation_2.h | 2 +- .../include/CGAL/Triangulation_2.h | 2 +- Triangulation_3/TODO | 2 +- .../Triangulation_benchmark_3.cpp | 2 +- .../CGAL/_test_cls_triangulation_simplex_3.h | 2 +- 136 files changed, 197 insertions(+), 197 deletions(-) diff --git a/AABB_tree/include/CGAL/AABB_tree/internal/AABB_node.h b/AABB_tree/include/CGAL/AABB_tree/internal/AABB_node.h index a5c09f42fb46..bf878268f59f 100644 --- a/AABB_tree/include/CGAL/AABB_tree/internal/AABB_node.h +++ b/AABB_tree/include/CGAL/AABB_tree/internal/AABB_node.h @@ -56,7 +56,7 @@ class AABB_node /** * @brief General traversal query * @param query the query - * @param traits the traversal traits that define the traversal behaviour + * @param traits the traversal traits that define the traversal behavior * @param nb_primitives the number of primitive * * General traversal query. The traits class allows using it for the various diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes.h index 654ffa9a46d4..1527a3eb7d49 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes.h @@ -65,7 +65,7 @@ class Bitstream_descartes; /* - * \brief Thrown whenever a non-specialised virtual member function is called + * \brief Thrown whenever a non-specialized virtual member function is called */ class Virtual_method_exception {}; @@ -128,7 +128,7 @@ class Generic_descartes_rep /*! * Constructor computing an interval containing all real roots of \c f, - * and initialising the Bitstream Descartes tree + * and initializing the Bitstream Descartes tree */ Generic_descartes_rep(Bitstream_descartes_type type, Polynomial f, @@ -170,7 +170,7 @@ class Generic_descartes_rep /*! * Constructor that copies the Bitstream tree given from outside - * and initialising the Bitstream Descartes tree + * and initializing the Bitstream Descartes tree * The tree must "fit" to the polynomial */ Generic_descartes_rep(Bitstream_descartes_type type, @@ -367,7 +367,7 @@ class Generic_descartes_rep /*! * \brief When does the isolation algorithm terminate? * - * This method must be specialised by derived classes + * This method must be specialized by derived classes */ virtual bool termination_condition() { throw Virtual_method_exception(); @@ -378,7 +378,7 @@ class Generic_descartes_rep * \brief gives an opportunity to process the nodes after * the subdivision steps are finished * - * This method must be specialised by derived classes, but can + * This method must be specialized by derived classes, but can * remain empty in many cases. */ virtual void process_nodes() { @@ -389,7 +389,7 @@ class Generic_descartes_rep /*! \brief returns whether the \c i th root is definitely a simple root * of the isolated polynomial * - * Must be specialised by derived class + * Must be specialized by derived class */ virtual bool is_certainly_simple_root(int) const { throw Virtual_method_exception(); @@ -399,7 +399,7 @@ class Generic_descartes_rep /*! \brief returns whether the \c i th root is definitely a multiple root * of the isolated polynomial * - * Must be specialised by derived class + * Must be specialized by derived class */ virtual bool is_certainly_multiple_root(int) const { throw Virtual_method_exception(); @@ -1082,7 +1082,7 @@ class Vert_line_adapter_descartes_rep * variant of the Bitstream Descartes method: The Square_free_descartes_tag * starts the usual Bitstream method for square free integer polynomials. * With the M_k_descartes tag, it is able to handle one multiple root in - * favourable situations, the Backshear_descartes_tag allows to isolate + * favorable situations, the Backshear_descartes_tag allows to isolate * even more complicated polynomials, if the multiple roots with even * multiplicity can be refined from outside. See the corresponding * constructors for more information. diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes_rndl_tree.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes_rndl_tree.h index a76e1c6cecae..8e64832546a1 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes_rndl_tree.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Bitstream_descartes_rndl_tree.h @@ -865,7 +865,7 @@ class Bitstream_descartes_rndl_tree_rep { by trying randomly and checking. This randomization means the same polynomial and same initial interval may give rise to different intervals each time this class is used. - As indicated in the paper, we favour subdivision ratios + As indicated in the paper, we favor subdivision ratios with a small denominator. Hence we first try denominator 2 (subdivision at midpoint), then denominator 16, and only then the "proper" denominator prescribed by theory. diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Curve_analysis_2.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Curve_analysis_2.h index 6fecb592a121..a3dc59edfea8 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Curve_analysis_2.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/Curve_analysis_2.h @@ -469,7 +469,7 @@ class Curve_analysis_2 : public ::CGAL::Handle_with_policy< Rep_ > { * (\c SHEAR_ONLY_AT_IRRATIONAL_STRATEGY) * is to \c shear the curve * if a degenerate situation is detected during the analysis, - * except at rational x-coordinates where the curve can be analysed + * except at rational x-coordinates where the curve can be analyzed * more directly. The analysis * is then performed in the sheared system, and finally translated back * into the original system. diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/LRU_hashed_map.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/LRU_hashed_map.h index e53c9100aec4..1a7100840582 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/LRU_hashed_map.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/LRU_hashed_map.h @@ -140,7 +140,7 @@ class LRU_hashed_map virtual ~LRU_hashed_map() { } - /*! \brief implements cache-like behaviour of the map + /*! \brief implements cache-like behavior of the map * * If the object is not in the map, it is constructed using \c Creator * and added to the map @@ -312,7 +312,7 @@ class LRU_hashed_map_with_kernel ~LRU_hashed_map_with_kernel() { } - /*! \brief implements cache-like behaviour of the map + /*! \brief implements cache-like behavior of the map * * If the object is not in the map, it is constructed using \c Creator * and added to the map diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/exceptions.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/exceptions.h index 4dd9c4b51225..6a184c377e8d 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/exceptions.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/exceptions.h @@ -25,7 +25,7 @@ namespace CGAL { /*! * \brief Exception class for not sufficiently generic positions. * - * Must be thrown whenever a curve cannot be analysed because its position + * Must be thrown whenever a curve cannot be analyzed because its position * is not "good enough". */ class Non_generic_position_exception { @@ -40,7 +40,7 @@ namespace CGAL { /*! * \brief Exception class for not sufficiently generic positions. * - * Must be thrown whenever a curve cannot be analysed because its position + * Must be thrown whenever a curve cannot be analyzed because its position * is not "good enough". */ template diff --git a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/flags.h b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/flags.h index 6b402fbfd234..0317bf7ea118 100644 --- a/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/flags.h +++ b/Algebraic_kernel_d/include/CGAL/Algebraic_kernel_d/flags.h @@ -76,7 +76,7 @@ /** * If set, the curve and curve pair analysis are using specialized code - * to analyse conic curves, i.e. curves of degree 2 + * to analyze conic curves, i.e. curves of degree 2 */ #ifndef CGAL_ACK_USE_SPECIAL_TREATMENT_FOR_CONIX #define CGAL_ACK_USE_SPECIAL_TREATMENT_FOR_CONIX 0 diff --git a/Algebraic_kernel_d/test/Algebraic_kernel_d/Curve_analysis_2.cpp b/Algebraic_kernel_d/test/Algebraic_kernel_d/Curve_analysis_2.cpp index f8ba0d8495ef..9527a8876500 100644 --- a/Algebraic_kernel_d/test/Algebraic_kernel_d/Curve_analysis_2.cpp +++ b/Algebraic_kernel_d/test/Algebraic_kernel_d/Curve_analysis_2.cpp @@ -330,7 +330,7 @@ template void test_routine() { #endif } - { // More tests...just analyse some curves and compute their segments + { // More tests...just analyze some curves and compute their segments Poly_int2 f = from_string("P[8(0,P[8(0,24)(1,-8)(2,-162)(3,204)(4,106)(5,-340)(6,240)(7,-72)(8,8)])(1,P[6(0,-60)(1,8)(2,304)(3,-400)(4,148)(5,8)(6,-8)])(2,P[6(0,18)(1,80)(2,-165)(3,-132)(4,367)(5,-212)(6,38)])(3,P[4(0,-30)(1,-136)(2,264)(3,-72)(4,-26)])(4,P[4(0,-15)(1,36)(2,89)(3,-144)(4,49)])(5,P[2(0,30)(1,-24)(2,-6)])(6,P[2(0,-6)(1,-28)(2,22)])(8,P[0(0,3)])]"); Curve_analysis_2 curve= construct_curve_2(f); #if CGAL_ACK_DEBUG_FLAG diff --git a/Alpha_shapes_3/include/CGAL/Alpha_shape_3.h b/Alpha_shapes_3/include/CGAL/Alpha_shape_3.h index a4a93f825158..f468f9056f8e 100644 --- a/Alpha_shapes_3/include/CGAL/Alpha_shape_3.h +++ b/Alpha_shapes_3/include/CGAL/Alpha_shape_3.h @@ -1638,7 +1638,7 @@ compute_edge_status( const Cell_handle& c, last=ccirc; while (is_infinite(ccirc) ) ++ccirc; //skip infinite incident cells alpha = (*ccirc).get_alpha(); - as.set_alpha_mid(alpha); // initialise as.alpha_mid to alpha value of an incident cell + as.set_alpha_mid(alpha); // initialize as.alpha_mid to alpha value of an incident cell as.set_alpha_max(alpha); // same for as.alpha_max while (++ccirc != last) { diff --git a/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_count_alpha.h b/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_count_alpha.h index f7c0fb41d4d1..c38cd3bb53e5 100644 --- a/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_count_alpha.h +++ b/Alpha_shapes_3/test/Alpha_shapes_3/include/CGAL/_count_alpha.h @@ -218,7 +218,7 @@ test_filtration(AS &A, bool verbose) typename AS::NT alpha; if(verbose) { std::cerr << std::endl; - std::cerr << "Analyse filtration " << std::endl; + std::cerr << "Analyze filtration " << std::endl; } for (; filtre_it != filtration.end(); filtre_it++) { if(assign(vertex, *filtre_it)) { diff --git a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos.cpp b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos.cpp index 27dd2a5968b4..2d782eec1ac8 100644 --- a/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos.cpp +++ b/Arrangement_on_surface_2/demo/Arrangement_on_surface_2_earth/Aos.cpp @@ -40,7 +40,7 @@ namespace { Flag(bool init) : v{ init } {} }; - // EXTENDED AOS for analysing the arrangement + // EXTENDED AOS for analyzing the arrangement using Ext_dcel = CGAL::Arr_extended_dcel; using Ext_topol_traits = CGAL::Arr_spherical_topology_traits_2; diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Rational_arc_2.h b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Rational_arc_2.h index c1a690bcb8e7..aea70d5331a8 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Rational_arc_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_geometry_traits/Rational_arc_2.h @@ -339,7 +339,7 @@ class _Base_rational_arc_2 if (! valid) return; - // Analyze the behaviour of the rational function at x = -oo (the source). + // Analyze the behavior of the rational function at x = -oo (the source). Algebraic y0; const Arr_parameter_space inf_s = _analyze_at_minus_infinity (_numer, _denom, y0); @@ -351,7 +351,7 @@ class _Base_rational_arc_2 else // if (inf_s == ARR_INTERIOR) _ps = Point_2 (0, y0); - // Analyze the behaviour of the rational function at x = +oo (the target). + // Analyze the behavior of the rational function at x = +oo (the target). const Arr_parameter_space inf_t = _analyze_at_plus_infinity (_numer, _denom, y0); @@ -735,7 +735,7 @@ class _Base_rational_arc_2 */ Self split_at_pole (const Algebraic& x0) { - // Analyze the behaviour of the function near the given pole. + // Analyze the behavior of the function near the given pole. const std::pair signs = _analyze_near_pole (x0); const CGAL::Sign sign_left = signs.first; const CGAL::Sign sign_right = signs.second; diff --git a/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Rational_arc_d_1.h b/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Rational_arc_d_1.h index f3921b44149e..71af407c54e6 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Rational_arc_d_1.h +++ b/Arrangement_on_surface_2/include/CGAL/Arr_rat_arc/Rational_arc_d_1.h @@ -450,7 +450,7 @@ class Base_rational_arc_d_1 _info = (_info | IS_DIRECTED_RIGHT); - // Analyze the behaviour of the rational function at x = -oo (the source). + // Analyze the behavior of the rational function at x = -oo (the source). Algebraic_real_1 y0; const Arr_parameter_space inf_s = _analyze_at_minus_infinity(P, Q, y0); @@ -460,7 +460,7 @@ class Base_rational_arc_d_1 _info = (_info | SRC_AT_Y_PLUS_INFTY); else // if (inf_s == ARR_INTERIOR) _ps = Algebraic_point_2(); //the point is a dummy - //Analyze the behaviour of the rational function at x = +oo (the target). + //Analyze the behavior of the rational function at x = +oo (the target). const Arr_parameter_space inf_t = _analyze_at_plus_infinity(P, Q, y0); if (inf_t == ARR_BOTTOM_BOUNDARY) @@ -949,7 +949,7 @@ class Base_rational_arc_d_1 Self split_at_pole(const Algebraic_real_1& x0) { - // Analyze the behaviour of the function near the given pole. + // Analyze the behavior of the function near the given pole. const std::pair signs = _analyze_near_pole(x0); const CGAL::Sign sign_left = signs.first; const CGAL::Sign sign_right = signs.second; diff --git a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h index 97c9b5b0f5b8..d044c21edf03 100644 --- a/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h +++ b/Arrangement_on_surface_2/include/CGAL/Arrangement_2/Arr_traits_adaptor_2.h @@ -1578,7 +1578,7 @@ class Arr_traits_basic_adaptor_2 : public ArrangementBasicTraits_ { return res; } - // otherwise: both ends have asymptotic behaviour + // otherwise: both ends have asymptotic behavior if (ps_y1 == ps_y2) { // need special y-comparison if (ce1 == ce2) { // both ends approach asymptote from one side Comparison_result res = m_self->compare_x_near_boundary_2_object()(xcv1, xcv2, ce2); diff --git a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_traits.h b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_traits.h index f2e6ecfc314f..4c8c1a382bbf 100644 --- a/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_traits.h +++ b/Arrangement_on_surface_2/include/CGAL/Curved_kernel_via_analysis_2/gfx/Curve_renderer_traits.h @@ -24,7 +24,7 @@ * \brief * defines class Curve_renderer_traits. * - * provides specialisations of Curve_renderer_traits for different number + * provides specializations of Curve_renderer_traits for different number * types compatible with the curve renderer */ diff --git a/BGL/include/CGAL/boost/graph/Graph_with_descriptor_with_graph.h b/BGL/include/CGAL/boost/graph/Graph_with_descriptor_with_graph.h index b5d16f74d3b9..368c5fca5245 100644 --- a/BGL/include/CGAL/boost/graph/Graph_with_descriptor_with_graph.h +++ b/BGL/include/CGAL/boost/graph/Graph_with_descriptor_with_graph.h @@ -733,7 +733,7 @@ struct Graph_with_descriptor_with_graph_property_map { } }; // class Graph_with_descriptor_with_graph_property_map -//specialisation for lvaluepropertymaps +//specialization for lvaluepropertymaps template struct Graph_with_descriptor_with_graph_property_map { diff --git a/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt b/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt index d03add5708ad..661e4d89ae56 100644 --- a/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt +++ b/Boolean_set_operations_2/doc/Boolean_set_operations_2/Boolean_set_operations_2.txt @@ -542,13 +542,13 @@ boundary of each input (linear) polygon as a cyclic sequence of single (\f$x\f$-monotone) polylines. By default, `UsePolylines` is set to `CGAL::Tag_true`, which implies that the boundary of the each input (linear) polygon is treated as a cyclic sequence of (\f$x\f$-monotone) -polylines. In most cases this behaviour is superior (that is, less +polylines. In most cases this behavior is superior (that is, less time-consuming) because the number of events handled as part of the execution of the plane-sweep algorithm is reduced. In cases where the boundaries of the input polygons frequently intersect, treating them as polylines may become less efficient. In these cases substitute the `UsePolylines` template parameter with `CGAL::Tag_false` to restore -the original behaviour (where the boundary of each input linear +the original behavior (where the boundary of each input linear polygon is treated as a cyclic sequence of single \f$x\f$-monotone segments). diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_2.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_2.h index d3c56d3b0956..b28261807048 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_2.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_2.h @@ -5,7 +5,7 @@ namespace CGAL { \ingroup PkgBoundingVolumesRef The class `Min_sphere_annulus_d_traits_2` is a traits class for the \f$ d\f$-dimensional -optimisation algorithms using the two-dimensional \cgal kernel. +optimization algorithms using the two-dimensional \cgal kernel. \tparam K must bea model for `Kernel`. \tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`. diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_3.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_3.h index 84284beefc55..5d57a716ada8 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_3.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_3.h @@ -5,7 +5,7 @@ namespace CGAL { \ingroup PkgBoundingVolumesRef The class `Min_sphere_annulus_d_traits_3` is a traits class for the \f$ d\f$-dimensional -optimisation algorithms using the three-dimensional \cgal kernel. +optimization algorithms using the three-dimensional \cgal kernel. \tparam K must be a model for `Kernel`. \tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`. diff --git a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_d.h b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_d.h index f2bc035794b9..046cced2d58c 100644 --- a/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_d.h +++ b/Bounding_volumes/doc/Bounding_volumes/CGAL/Min_sphere_annulus_d_traits_d.h @@ -5,7 +5,7 @@ namespace CGAL { \ingroup PkgBoundingVolumesRef The class `Min_sphere_annulus_d_traits_d` is a traits class for the \f$ d\f$-dimensional -optimisation algorithms using the \f$ d\f$-dimensional \cgal kernel. +optimization algorithms using the \f$ d\f$-dimensional \cgal kernel. \tparam K must be a model for `Kernel`. \tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`. diff --git a/Bounding_volumes/include/CGAL/Approximate_min_ellipsoid_d/Khachiyan_approximation.h b/Bounding_volumes/include/CGAL/Approximate_min_ellipsoid_d/Khachiyan_approximation.h index 0fc9ef14af1d..e200621f7ea1 100644 --- a/Bounding_volumes/include/CGAL/Approximate_min_ellipsoid_d/Khachiyan_approximation.h +++ b/Bounding_volumes/include/CGAL/Approximate_min_ellipsoid_d/Khachiyan_approximation.h @@ -71,7 +71,7 @@ namespace CGAL { std::vector P; // input points int n; // number of input points, i.e., P.size() - // This class comes in two flavours: + // This class comes in two flavors: // // (i) When Embed is false, the input points are taken to be // ordinary points in R^{d_P}, where d_P is the dimension of the diff --git a/Bounding_volumes/include/CGAL/Min_sphere_of_spheres_d/Min_sphere_of_spheres_d_pair.h b/Bounding_volumes/include/CGAL/Min_sphere_of_spheres_d/Min_sphere_of_spheres_d_pair.h index b51de487eb32..be95cea772c5 100644 --- a/Bounding_volumes/include/CGAL/Min_sphere_of_spheres_d/Min_sphere_of_spheres_d_pair.h +++ b/Bounding_volumes/include/CGAL/Min_sphere_of_spheres_d/Min_sphere_of_spheres_d_pair.h @@ -33,7 +33,7 @@ namespace CGAL_MINIBALL_NAMESPACE { // they are convertible to double. // This is indeed the least invasive fix dropint the function that were // defined here and cause linkage bug. - // You can still have a behaviour of instantiating only if a type + // You can still have a behavior of instantiating only if a type // is convertibale to double (by using type_traits together with _if) // but until "the whole design should be overhauled at some point" // this is fine. diff --git a/Bounding_volumes/include/CGAL/min_quadrilateral_2.h b/Bounding_volumes/include/CGAL/min_quadrilateral_2.h index 081520c08462..8e78c9f42a34 100644 --- a/Bounding_volumes/include/CGAL/min_quadrilateral_2.h +++ b/Bounding_volumes/include/CGAL/min_quadrilateral_2.h @@ -376,7 +376,7 @@ min_rectangle_2( // quadruple of points defining the current rectangle ForwardIterator curr[4]; - // initialised to the points defining the bounding box + // initialized to the points defining the bounding box convex_bounding_box_2(f, l, curr, t); // curr[i] can be advanced (cyclically) until it reaches limit[i] @@ -482,7 +482,7 @@ min_parallelogram_2(ForwardIterator f, // quadruple of points defining the bounding box ForwardIterator curr[4]; - // initialised to the points defining the bounding box + // initialized to the points defining the bounding box convex_bounding_box_2(first, l, curr, t); @@ -659,7 +659,7 @@ min_strip_2(ForwardIterator f, // quadruple of points defining the bounding box ForwardIterator curr[4]; - // initialised to the points defining the bounding box + // initialized to the points defining the bounding box convex_bounding_box_2(first, l, curr, t); ForwardIterator low = curr[0]; diff --git a/Bounding_volumes/include/CGAL/rectangular_3_center_2.h b/Bounding_volumes/include/CGAL/rectangular_3_center_2.h index 276f286fcbf6..9d280f2eaf07 100644 --- a/Bounding_volumes/include/CGAL/rectangular_3_center_2.h +++ b/Bounding_volumes/include/CGAL/rectangular_3_center_2.h @@ -135,7 +135,7 @@ rectangular_3_center_2_type1( rad = sdist(v(r, 2), v(r, 0)); // init to prevent default constructor requirement Point bestpoint = *f; - // (initialisation avoids warning) + // (initialization avoids warning) unsigned int bestrun = 0; // two cases: top-left & bottom-right or top-right & bottom-left diff --git a/Bounding_volumes/test/Bounding_volumes/min_sphere_test.cpp b/Bounding_volumes/test/Bounding_volumes/min_sphere_test.cpp index ff82ea1bdb0e..816cb353d441 100644 --- a/Bounding_volumes/test/Bounding_volumes/min_sphere_test.cpp +++ b/Bounding_volumes/test/Bounding_volumes/min_sphere_test.cpp @@ -11,7 +11,7 @@ // release : $CGAL_Revision: CGAL-wip $ // release_date : $CGAL_Date$ // -// chapter : $CGAL_Chapter: Optimisation $ +// chapter : $CGAL_Chapter: Geometric Optimization $ // package : $CGAL_Package: MinSphere $ // file : min_sphere_test.C // source : web/Optimisation/Min_sphere_d.aw diff --git a/Bounding_volumes/test/Bounding_volumes/min_sphere_traits_2_test.cpp b/Bounding_volumes/test/Bounding_volumes/min_sphere_traits_2_test.cpp index 0f137fd20ffa..cd79be09588f 100644 --- a/Bounding_volumes/test/Bounding_volumes/min_sphere_traits_2_test.cpp +++ b/Bounding_volumes/test/Bounding_volumes/min_sphere_traits_2_test.cpp @@ -12,7 +12,7 @@ // release : $CGAL_Revision: CGAL-wip $ // release_date : $CGAL_Date$ // -// chapter : $CGAL_Chapter: Optimisation $ +// chapter : $CGAL_Chapter: Geometric Optimization $ // package : $CGAL_Package: MinSphere $ // file : min_sphere_traits_2_test.C // source : web/Optimisation/Min_sphere_d.aw diff --git a/Bounding_volumes/test/Bounding_volumes/min_sphere_traits_3_test.cpp b/Bounding_volumes/test/Bounding_volumes/min_sphere_traits_3_test.cpp index efb0bed98c89..01fb795f2648 100644 --- a/Bounding_volumes/test/Bounding_volumes/min_sphere_traits_3_test.cpp +++ b/Bounding_volumes/test/Bounding_volumes/min_sphere_traits_3_test.cpp @@ -11,7 +11,7 @@ // release : $CGAL_Revision: CGAL-wip $ // release_date : $CGAL_Date$ // -// chapter : $CGAL_Chapter: Optimisation $ +// chapter : $CGAL_Chapter: Geometric Optimization $ // package : $CGAL_Package: MinSphere $ // file : min_sphere_traits_3_test.C // source : web/Optimisation/Min_sphere_d.aw diff --git a/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d.h b/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d.h index a1b3c9e88e08..f393618663f1 100644 --- a/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d.h +++ b/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d.h @@ -13,7 +13,7 @@ // // file : test/Min_annulus_d/test_Min_annulus_d.h // package : $CGAL_Package: Min_annulus_d $ -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // source : web/Min_annulus_d.aw // revision : $Id$ diff --git a/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_2.cpp b/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_2.cpp index 8592a9fe9771..b13bb42c0e47 100644 --- a/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_2.cpp +++ b/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_2.cpp @@ -13,7 +13,7 @@ // // file : test/Min_annulus_d/test_Min_annulus_d_2.cpp // package : $CGAL_Package: Min_annulus_d $ -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // revision : $Id$ // revision_date : $Date$ diff --git a/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_3.cpp b/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_3.cpp index 09dbce7b6802..b003679c0f96 100644 --- a/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_3.cpp +++ b/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_3.cpp @@ -13,7 +13,7 @@ // // file : test/Min_annulus_d/test_Min_annulus_d_3.cpp // package : $CGAL_Package: Min_annulus_d $ -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // revision : $Id$ // revision_date : $Date$ diff --git a/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_d.cpp b/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_d.cpp index 3d667bead471..4594b2b430e2 100644 --- a/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_d.cpp +++ b/Bounding_volumes/test/Bounding_volumes/test_Min_annulus_d_d.cpp @@ -13,7 +13,7 @@ // // file : test/Min_annulus_d/test_Min_annulus_d_d.cpp // package : $CGAL_Package: Min_annulus_d $ -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // revision : $Id$ // revision_date : $Date$ diff --git a/Bounding_volumes/test/Bounding_volumes/test_Min_circle.cpp b/Bounding_volumes/test/Bounding_volumes/test_Min_circle.cpp index 01ce8cc429af..5d94946b23ec 100644 --- a/Bounding_volumes/test/Bounding_volumes/test_Min_circle.cpp +++ b/Bounding_volumes/test/Bounding_volumes/test_Min_circle.cpp @@ -13,7 +13,7 @@ // // file : test/Min_circle_2/test_Min_circle_2.C // package : $CGAL_Package: Min_circle_2 $ -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // source : web/Min_circle_2.aw // revision : $Id$ diff --git a/Bounding_volumes/test/Bounding_volumes/test_Min_ellipse_2.cpp b/Bounding_volumes/test/Bounding_volumes/test_Min_ellipse_2.cpp index 535aa4674b1c..2410147ccb50 100644 --- a/Bounding_volumes/test/Bounding_volumes/test_Min_ellipse_2.cpp +++ b/Bounding_volumes/test/Bounding_volumes/test_Min_ellipse_2.cpp @@ -13,7 +13,7 @@ // // file : test/Min_ellipse_2/test_Min_ellipse_2.C // package : $CGAL_Package: Min_ellipse_2 $ -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // source : web/Min_ellipse_2.aw // revision : $Id$ diff --git a/CGAL_ImageIO/include/CGAL/ImageIO/analyze.h b/CGAL_ImageIO/include/CGAL/ImageIO/analyze.h index 98d27a0d9942..cbc4eae9109f 100644 --- a/CGAL_ImageIO/include/CGAL/ImageIO/analyze.h +++ b/CGAL_ImageIO/include/CGAL/ImageIO/analyze.h @@ -21,7 +21,7 @@ #include -/* read analyse format header +/* read analyze format header return: -1: error diff --git a/CGAL_ImageIO/include/CGAL/ImageIO/bmptypes.h b/CGAL_ImageIO/include/CGAL/ImageIO/bmptypes.h index 9c27b948b3d3..b6eb465253f6 100644 --- a/CGAL_ImageIO/include/CGAL/ImageIO/bmptypes.h +++ b/CGAL_ImageIO/include/CGAL/ImageIO/bmptypes.h @@ -108,8 +108,8 @@ typedef std::uint32_t CGAL_UINT32; */ /* - * Bitmapfileheader defines a single bitmap image. Its analogue in the - * Windows SDK is the Bitmapfileheader. Its analogues in the OS/2 Toolkit are + * Bitmapfileheader defines a single bitmap image. Its analog in the + * Windows SDK is the Bitmapfileheader. Its analogs in the OS/2 Toolkit are * the Bitmapfileheader and Bitmapfileheader2 structures. * * A BITMAPHEADER structure is always concatenated to the end of a @@ -128,7 +128,7 @@ typedef struct Bitmapfileheader /* * BITMAPARRAYHEADER is used to establish a linked list of Bitmapfileheader * structures for a bitmap file with multiple images in it. There is no - * equivalent structure in the Windows SDK. Its analogues in the OS/2 toolkit + * equivalent structure in the Windows SDK. Its analogs in the OS/2 toolkit * are the BITMAPARRAYFILEHEADER and BITMAPARRAYFILEHEADER2 structures. * * A Bitmapfileheader structure is always concatenated to the end of a @@ -145,9 +145,9 @@ typedef struct BITMAPARRAYHEADER /* - * BITMAPHEADER defines the properties of a bitmap. Its analogues in the + * BITMAPHEADER defines the properties of a bitmap. Its analogs in the * Windows SDK are the BITMAPCOREINFOHEADER and BITMAPINFOHEADER structures. - * Its analogues in the OS/2 Toolkit are the BITMAPINFOHEADER and + * Its analogs in the OS/2 Toolkit are the BITMAPINFOHEADER and * BITMAPINFOHEADER2 structures. * * A color table is concatenated to this structure. The number of elements in @@ -188,8 +188,8 @@ typedef struct BITMAPHEADER /* - * RGB defines a single color palette entry. Its analogues in the Windows SDK - * are the RGBTRIPLE and RGBQUAD structures. Its analogues in the OS/2 + * RGB defines a single color palette entry. Its analogs in the Windows SDK + * are the RGBTRIPLE and RGBQUAD structures. Its analogs in the OS/2 * Toolkit are the RGB and RGB2 structure. */ typedef struct RGB diff --git a/CGAL_ImageIO/include/CGAL/ImageIO/recline_impl.h b/CGAL_ImageIO/include/CGAL/ImageIO/recline_impl.h index 4b5374898e50..e4b694efa78a 100644 --- a/CGAL_ImageIO/include/CGAL/ImageIO/recline_impl.h +++ b/CGAL_ImageIO/include/CGAL/ImageIO/recline_impl.h @@ -283,7 +283,7 @@ RFcoefficientType * InitRecursiveCoefficients( double x, b0 /= x; b1 /= x; - /*--- normalisation ---*/ + /*--- normalization ---*/ switch ( derivative ) { default : CGAL_FALLTHROUGH; diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map.h b/Combinatorial_map/include/CGAL/Combinatorial_map.h index 7bf8295c6656..5473aeaf277b 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map.h @@ -662,7 +662,7 @@ namespace CGAL { } /** Create a new dart and add it to the map. - * The marks of the darts are initialised with mmask_marks, i.e. the dart + * The marks of the darts are initialized with mmask_marks, i.e. the dart * is unmarked for all the marks. * @return a Dart_descriptor on the new dart. */ @@ -4111,7 +4111,7 @@ namespace CGAL { } if (ah != null_descriptor) { - // We initialise the 0-atttrib to ah + // We initialize the 0-atttrib to ah internal::Set_i_attribute_of_dart_functor:: run(*this, d1, ah); } diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map/internal/Combinatorial_map_copy_functors.h b/Combinatorial_map/include/CGAL/Combinatorial_map/internal/Combinatorial_map_copy_functors.h index 5cbf7b7861a6..f570d59b187b 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map/internal/Combinatorial_map_copy_functors.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map/internal/Combinatorial_map_copy_functors.h @@ -228,7 +228,7 @@ struct Call_functor_if_both_attributes_have_point const Pointconverter&) { return Map2::null_descriptor; } }; -// Specialisation with i==0 and both attributes have points. +// Specialization with i==0 and both attributes have points. template< typename Map1, typename Map2, typename Pointconverter > struct Call_functor_if_both_attributes_have_point @@ -285,7 +285,7 @@ struct Copy_attribute_functor_if_nonvoid cmap2.template set_attribute(dh2, res); } }; -// Specialisation when attr1 is void, and attr2 is non void i==0. Nothing to +// Specialization when attr1 is void, and attr2 is non void i==0. Nothing to // copy, but if 0-attributes has point and i==0, we need to create // vertex attributes. template(dh2, cmap2.template create_attribute<0>()); } }; -// Specialisation when attr1 is void, and attr2 is non void i!=0. +// Specialization when attr1 is void, and attr2 is non void i!=0. // Nothing to do. template @@ -360,7 +360,7 @@ struct Copy_dart_info_functor_if_nonvoid const DartInfoConverter& converter) { converter(map1, map2, dh1, dh2); } }; -// Specialisation when Info1 is void. +// Specialization when Info1 is void. template struct Copy_dart_info_functor_if_nonvoid struct Copy_dart_info_functor_if_nonvoid struct Copy_dart_info_functor_if_nonvoid diff --git a/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h b/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h index 72c89d401422..c1ca6c1987e5 100644 --- a/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h +++ b/Combinatorial_map/include/CGAL/Combinatorial_map_operations.h @@ -36,7 +36,7 @@ namespace CGAL { static bool run(const CMap& amap, typename CMap::Dart_const_descriptor adart) { - // TODO? Optimisation for dim-2, and to not test all the darts of the cell? + // TODO? Optimization for dim-2, and to not test all the darts of the cell? bool res = true; for ( CGAL::CMap_dart_const_iterator_of_cell it(amap, adart); res && it.cont(); ++it ) @@ -462,7 +462,7 @@ namespace CGAL { static bool run(const CMap& amap, typename CMap::Dart_const_descriptor adart) { - // TODO ? Optimisation possible to not test all the darts of the cell ? + // TODO ? Optimization possible to not test all the darts of the cell ? bool res = true; for ( CGAL::CMap_dart_const_iterator_of_cell it(amap, adart); res && it.cont(); ++it ) diff --git a/Combinatorial_map/include/CGAL/Dart.h b/Combinatorial_map/include/CGAL/Dart.h index 17ffde4b294d..0fb809b6d810 100644 --- a/Combinatorial_map/include/CGAL/Dart.h +++ b/Combinatorial_map/include/CGAL/Dart.h @@ -156,7 +156,7 @@ namespace CGAL { } protected: - /** Default constructor: no real initialisation, + /** Default constructor: no real initialization, * because this is done in the combinatorial map class. */ Dart_without_info() @@ -300,7 +300,7 @@ namespace CGAL { { return Base::operator==(other) && minfo==other.minfo; } protected: - /** Default constructor: no real initialisation, + /** Default constructor: no real initialization, * because this is done in the combinatorial or generalized map class. */ Dart()=default; // default => zero-initializing built-in types diff --git a/Cone_spanners_2/include/CGAL/Compute_cone_boundaries_2.h b/Cone_spanners_2/include/CGAL/Compute_cone_boundaries_2.h index 4256fd0dc179..a4069a1168a4 100644 --- a/Cone_spanners_2/include/CGAL/Compute_cone_boundaries_2.h +++ b/Cone_spanners_2/include/CGAL/Compute_cone_boundaries_2.h @@ -115,7 +115,7 @@ class Compute_cone_boundaries_2 { #if defined(CGAL_USE_LEDA) || defined(CGAL_USE_CORE) /* - The specialised functor for computing the directions of cone boundaries exactly + The specialized functor for computing the directions of cone boundaries exactly with a given cone number and a given initial direction. */ template <> diff --git a/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h b/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h index d4b47ed33c22..3d1ebc15efbd 100644 --- a/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h +++ b/Cone_spanners_2/include/CGAL/Construct_theta_graph_2.h @@ -199,7 +199,7 @@ class Construct_theta_graph_2 { std::vector S(vit, ve); std::sort(S.begin (), S.end (), orderD1); - // Step 2: Initialise an empty set to store vertices sorted by orderD2 + // Step 2: initialize an empty set to store vertices sorted by orderD2 typedef CGAL::ThetaDetail::Plane_scan_tree S(vit, ve); std::sort(S.begin (), S.end (), orderD1); - // Step 2: Initialise an empty set to store vertices sorted by orderD2 + // Step 2: initialize an empty set to store vertices sorted by orderD2 Point_set pst(orderD2); // Step 3: visit S in orderD1 diff --git a/Cone_spanners_2/include/CGAL/gnuplot_output_2.h b/Cone_spanners_2/include/CGAL/gnuplot_output_2.h index 65324f601341..d2cb402e37ae 100644 --- a/Cone_spanners_2/include/CGAL/gnuplot_output_2.h +++ b/Cone_spanners_2/include/CGAL/gnuplot_output_2.h @@ -93,7 +93,7 @@ std::string gnuplot_vertex_list (const Graph& g); /* This struct is defined to use partial specialization to generate arrow styles differently for * directed and undirected graphs. - * Note: Need to use structs because C++ before 11 doesn't allow partial specialisation + * Note: Need to use structs because C++ before 11 doesn't allow partial specialization * for functions */ template diff --git a/Documentation/doc/Documentation/Developer_manual/cmakelist_script.txt b/Documentation/doc/Documentation/Developer_manual/cmakelist_script.txt index 26c1f7c0ef4b..eeae486b2362 100644 --- a/Documentation/doc/Documentation/Developer_manual/cmakelist_script.txt +++ b/Documentation/doc/Documentation/Developer_manual/cmakelist_script.txt @@ -17,7 +17,7 @@ configuration. create a single executable for 'source' linked with compilations of all other source files (`*.cc`, `*.cp`, `*.cxx`, `*.cpp`, `*.CPP`, `*.c++`, or `*.C`). -This behaviour is usually needed for (graphical) demos. +This behavior is usually needed for (graphical) demos. If the parameter is not given, the script creates one executable for each given source file. diff --git a/Documentation/doc/Documentation/Preliminaries.txt b/Documentation/doc/Documentation/Preliminaries.txt index 2e2ae95e661e..f2006d051544 100644 --- a/Documentation/doc/Documentation/Preliminaries.txt +++ b/Documentation/doc/Documentation/Preliminaries.txt @@ -47,7 +47,7 @@ also avoid CMake to link with the native threads support library on your system. Much of the \cgal code contains assert statements for preconditions, and postconditions of functions as well as in the code. These assertions can be switched on and off per package -and the user can change the error behaviour. For details see Section \ref secchecks +and the user can change the error behavior. For details see Section \ref secchecks of Chapter \ref Chapter_STL_Extensions_for_CGAL. \section Preliminaries_flags Compile-time Flags to Control Inlining diff --git a/Documentation/doc/Documentation/Tutorials/Tutorial_GIS.txt b/Documentation/doc/Documentation/Tutorials/Tutorial_GIS.txt index 9ac43d3eb534..546e53c7cd8e 100644 --- a/Documentation/doc/Documentation/Tutorials/Tutorial_GIS.txt +++ b/Documentation/doc/Documentation/Tutorials/Tutorial_GIS.txt @@ -193,7 +193,7 @@ An example of a raster image with a rainbow ramp representing height is given in \cgalFigureRef{TutorialGISFigRastering}. \cgalFigureBegin{TutorialGISFigRastering, raster.jpg} -Raster visualisation of height using a rainbow ramp, ranging from +Raster visualization of height using a rainbow ramp, ranging from light blue for low values to dark red for high values. \cgalFigureEnd diff --git a/Documentation/doc/Documentation/main.txt b/Documentation/doc/Documentation/main.txt index 2026356b76cf..acb38973dadf 100644 --- a/Documentation/doc/Documentation/main.txt +++ b/Documentation/doc/Documentation/main.txt @@ -38,7 +38,7 @@ other contexts can be done by obtaining a commercial license from [GeometryFactory](https://www.geometryfactory.com). For more details see the \ref license "License" page. -

Acknowledgement

+

Acknowledgment

We provide bibtex entries for each package so that you can cite \cgal correctly in your publications, see the page \ref how_to_cite_cgal. diff --git a/Filtered_kernel/include/CGAL/Lazy.h b/Filtered_kernel/include/CGAL/Lazy.h index 2f1201ee239a..d8f714a1831a 100644 --- a/Filtered_kernel/include/CGAL/Lazy.h +++ b/Filtered_kernel/include/CGAL/Lazy.h @@ -1377,7 +1377,7 @@ struct Ith { typedef T2 result_type; // We keep a Sign member object - // for future utilisation, in case + // for future utilization, in case // we have pairs of 2 T2 objects e.g. // for a numeric_point vector returned // from a construction of a possible diff --git a/Generalized_map/include/CGAL/GMap_cell_iterators.h b/Generalized_map/include/CGAL/GMap_cell_iterators.h index 55dbbff83086..1dbef9dcd6ed 100644 --- a/Generalized_map/include/CGAL/GMap_cell_iterators.h +++ b/Generalized_map/include/CGAL/GMap_cell_iterators.h @@ -24,7 +24,7 @@ namespace CGAL { * - GMap_cell_iterator: one dart per each i-cell * - GMap_one_dart_per_incident_cell_iterator * - GMap_one_dart_per_cell_iterator - * - one specialisation of the CMap_cell_iterator for the + * - one specialization of the CMap_cell_iterator for the * GMap_dart_iterator_basic_of_all iterator */ diff --git a/Generalized_map/include/CGAL/GMap_dart_iterators.h b/Generalized_map/include/CGAL/GMap_dart_iterators.h index b2eaaf97b70a..3e8b843eb6f9 100644 --- a/Generalized_map/include/CGAL/GMap_dart_iterators.h +++ b/Generalized_map/include/CGAL/GMap_dart_iterators.h @@ -249,7 +249,7 @@ namespace CGAL { class GMap_dart_iterator_basic_of_two_alpha; /* Class CMap_dart_iterator_basic_of_two_alpha: to iterate * on the darts of the orbit : Ai:: run(*this, d1, ah); mark(*it, amark); @@ -3471,7 +3471,7 @@ namespace CGAL { , 0>:: run(*this,d1,d2); - // We initialise the 0-atttrib to ah + // We initialize the 0-atttrib to ah CGAL::internal::Set_i_attribute_of_dart_functor:: run(*this, d2, ah); } diff --git a/Generalized_map/include/CGAL/Generalized_map_operations.h b/Generalized_map/include/CGAL/Generalized_map_operations.h index 4c65af865db4..47fc476bfc99 100644 --- a/Generalized_map/include/CGAL/Generalized_map_operations.h +++ b/Generalized_map/include/CGAL/Generalized_map_operations.h @@ -35,7 +35,7 @@ namespace CGAL { static bool run(const GMap& amap, typename GMap::Dart_const_descriptor adart) { - // TODO? Optimisation for dim-2, and to not test all the darts of the cell? + // TODO? Optimization for dim-2, and to not test all the darts of the cell? bool res = true; for ( CGAL::GMap_dart_const_iterator_of_cell it(amap, adart); res && it.cont(); ++it ) @@ -258,7 +258,7 @@ namespace CGAL { static bool run(const GMap& amap, typename GMap::Dart_const_descriptor adart) { - // TODO ? Optimisation possible to not test all the darts of the cell ? + // TODO ? Optimization possible to not test all the darts of the cell ? bool res = true; for ( CGAL::GMap_dart_const_iterator_of_cell it(amap, adart); res && it.cont(); ++it ) diff --git a/Generator/doc/Generator/CGAL/Random.h b/Generator/doc/Generator/CGAL/Random.h index abf2e0da6ab7..d46697dc229a 100644 --- a/Generator/doc/Generator/CGAL/Random.h +++ b/Generator/doc/Generator/CGAL/Random.h @@ -15,7 +15,7 @@ a state that uniquely determines the subsequent numbers being produced. It can be very useful, e.g. for debugging, to reproduce a sequence of -random numbers. This can be done by either initialising with a fixed +random numbers. This can be done by either initializing with a fixed seed, or by using the state functions as described below. \note A `Random` object is not deterministic when used by several threads at diff --git a/GraphicsView/demo/Triangulation_2/include/CGAL/Lipschitz_sizing_field_criteria_2.h b/GraphicsView/demo/Triangulation_2/include/CGAL/Lipschitz_sizing_field_criteria_2.h index ad844db31acb..1df267ad9550 100644 --- a/GraphicsView/demo/Triangulation_2/include/CGAL/Lipschitz_sizing_field_criteria_2.h +++ b/GraphicsView/demo/Triangulation_2/include/CGAL/Lipschitz_sizing_field_criteria_2.h @@ -62,7 +62,7 @@ class Lipschitz_sizing_field_criteria_2 const double& size() const { return second; } const double& sine() const { return first; } - // q1pivotPoint(); } /*! Sets the Camera's position() and orientation() from an OpenGL ModelView matrix. -This enables a Camera initialisation from an other OpenGL application. \p +This enables a Camera initialization from an other OpenGL application. \p modelView is a 16 GLdouble vector representing a valid OpenGL ModelView matrix, such as one can get using: \code GLdouble mvm[16]; glGetDoublev(GL_MODELVIEW_MATRIX, mvm); diff --git a/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h b/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h index f13214b9bf92..871a27e91799 100644 --- a/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h +++ b/HalfedgeDS/include/CGAL/HalfedgeDS_vector.h @@ -604,7 +604,7 @@ class HalfedgeDS_vector // This guard is needed here because, rr==ll==begin, might be true // at this point, causing the decrement to result in undefined - // behaviour. + // behavior. // [Fernando Cacciola] if ( ll < rr ) { diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 5b10c290afaa..6bef3dfa53a0 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -1915,7 +1915,7 @@ Release date: April 2018 after the observer is notified that the edge has been removed. This is symmetric (opposite) to the order of notification when an edge is inserted. - The user can restore old (non-symmetric) behaviour by defining the macro: + The user can restore old (non-symmetric) behavior by defining the macro: `CGAL_NON_SYMETRICAL_OBSERVER_EDGE_REMOVAL_BACKWARD_COMPATIBILITY` @@ -3456,7 +3456,7 @@ Release date: October 2013 vertices which would move of very small displacements. - Introduce new data structures and options for speed-up and compacity. Note that `Compact_mesh_cell_base_3` and - `Mesh_vertex_base_3` are now our favoured implementations of the + `Mesh_vertex_base_3` are now our favored implementations of the concepts MeshCellBase\_3 and MeshVertexBase\_3. - Introduce a new constructor for `Polyhedral_mesh_domain_3` that takes a bounding polyhedron to be meshed along with a polyhedral @@ -4567,9 +4567,9 @@ fixes for this release. - The new macro CGAL\_NO\_DEPRECATED\_CODE can be defined to disable deprecated code, helping users discover if they rely on code that may be removed in subsequent releases. -- Assertion behaviour: It is not possible anymore to set the CONTINUE +- Assertion behavior: It is not possible anymore to set the CONTINUE mode for assertion failures. Functions that allow to change the - assertion behaviour are now declared in + assertion behavior are now declared in ``. - Qt3 based demos are still there but the documentation has been removed as the CGAL::Qt\_Widget will be deprecated. @@ -5118,7 +5118,7 @@ static runtime (/ML). - 2D Placement of Streamlines (new package) Visualizing vector fields is important for many application domains. A good way to do it is to generate streamlines that describe the - flow behaviour. This package implements the "Farthest Point Seeding" + flow behavior. This package implements the "Farthest Point Seeding" algorithm for placing streamlines in 2D vector fields. It generates a list of streamlines corresponding to an input flow using a specified separating distance. The algorithm uses a Delaunay @@ -5140,7 +5140,7 @@ static runtime (/ML). structures. The package supports exact or inexact operations on primitives which move along polynomial trajectories. - Smallest Enclosing Ellipsoid (new package) - This algorithm is new in the chapter Geometric Optimisation. + This algorithm is new in the chapter Geometric Optimization. - 2D Arrangement (major revision) This package can be used to construct, maintain, alter, and display arrangements in the plane. Once an arrangement is constructed, the @@ -5155,9 +5155,9 @@ static runtime (/ML). construction history of the arrangement, such that it is possible to obtain the originating curve of an arrangement subcurve. -- Geometric Optimisation (major revision) +- Geometric Optimization (major revision) The underlying QP solver which is the foundation for several - algorithms in the Geometric Optimisation chapter has been completely + algorithms in the Geometric Optimization chapter has been completely rewritten. - 3D Triangulation (new functionality) Regular\_triangulation\_3 now offers vertex removal. @@ -5483,7 +5483,7 @@ The following functionality has been added or changed: Face\_handle or Vertex\_handle. - New classes Triangulation\_vertex\_base\_with\_info\_2 (and 3) and Triangulation\_face\_base\_with\_info\_2 (and 3) to make - easier the customisation of base classes in most cases. + easier the customization of base classes in most cases. - 2D Triangulation - Regular triangulation provides an easy access to hidden points. - The Triangulation\_hierarchy\_2, which provide an efficient @@ -5985,7 +5985,7 @@ kernels themselves can be used as traits classes in many instances. - The traits class requirements have been changed. - The simplicity test has a completely new implementation. - Properties like convexity, simplicity and area can now be cached - by polygons. You need to set a flag to select this behaviour. + by polygons. You need to set a flag to select this behavior. @@ -6158,7 +6158,7 @@ The following functionality has been added: stored within a class, debugging is easier using this kernel. This kernel can also be faster in some cases than the reference-counted Cartesian kernel. -- New optimisation algorithms +- New optimization algorithms - Min\_annulus\_d - Algorithm for computing the smallest enclosing annulus of points in arbitrary dimension - Polytope\_distance\_d - Algorithm for computing the (squared) @@ -6215,7 +6215,7 @@ The following functionality has been added: triangulations. - Triangulations in 3D were added, both Delaunay triangulations and regular triangulations. -- Min\_quadrilateral optimisations have been added. These are +- Min\_quadrilateral optimizations have been added. These are algorithms to compute the minimum enclosing rectangle/parallelogram (arbitrary orientation) and the minimum enclosing strip of a convex point set. diff --git a/Installation/include/CGAL/license/Polygon_mesh_processing/combinatorial_repair.h b/Installation/include/CGAL/license/Polygon_mesh_processing/combinatorial_repair.h index cf07529839b1..8f3640a725df 100644 --- a/Installation/include/CGAL/license/Polygon_mesh_processing/combinatorial_repair.h +++ b/Installation/include/CGAL/license/Polygon_mesh_processing/combinatorial_repair.h @@ -9,7 +9,7 @@ // // Author(s) : Andreas Fabri // -// Warning: this file is generated, see include/CGAL/licence/README.md +// Warning: this file is generated, see include/CGAL/license/README.md // not entirely true due to the backward compatibility issue #ifndef CGAL_LICENSE_POLYGON_MESH_PROCESSING_COMBINATORIAL_REPAIR_H diff --git a/Jet_fitting_3/examples/Jet_fitting_3/PolyhedralSurf_rings.h b/Jet_fitting_3/examples/Jet_fitting_3/PolyhedralSurf_rings.h index a5866bee2ad5..9c7e08268a85 100644 --- a/Jet_fitting_3/examples/Jet_fitting_3/PolyhedralSurf_rings.h +++ b/Jet_fitting_3/examples/Jet_fitting_3/PolyhedralSurf_rings.h @@ -19,7 +19,7 @@ template < class TPoly , class VertexPropertyMap> class T_PolyhedralSurf_rings // typedef typename boost::property_traits::value_type vpm_value_type; // typedef typename boost::property_traits::key_type vpm_key_type; - //vertex indices are initialised to -1 + //vertex indices are initialized to -1 static void reset_ring_indices(std::vector < Vertex * >&vces, VertexPropertyMap& vpm); diff --git a/Lab/demo/Lab/Plugins/Mesh_2/mesh_2_dialog.ui b/Lab/demo/Lab/Plugins/Mesh_2/mesh_2_dialog.ui index b809786a2b6c..fad384423b7f 100644 --- a/Lab/demo/Lab/Plugins/Mesh_2/mesh_2_dialog.ui +++ b/Lab/demo/Lab/Plugins/Mesh_2/mesh_2_dialog.ui @@ -66,7 +66,7 @@ - Run Lloyd Optimisation + Run Lloyd Optimization Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter diff --git a/Lab/demo/Lab/Plugins/Mesh_3/Volume_plane.h b/Lab/demo/Lab/Plugins/Mesh_3/Volume_plane.h index a5399210b43f..062755fb0cce 100644 --- a/Lab/demo/Lab/Plugins/Mesh_3/Volume_plane.h +++ b/Lab/demo/Lab/Plugins/Mesh_3/Volume_plane.h @@ -280,7 +280,7 @@ private : //according to the tag, a,b,c dim change but not the scale. We look for the max dimension of the whole image. //A high scale factor will often go with a low dimension, to compensate it. So we don't want a max being the - //higher scale * the higher dim, hence the tag specialisation. + //higher scale * the higher dim, hence the tag specialization. //TODO: set the scale factors according to the dimensipon to avoid doing that. double compute_maxDim(x_tag) const { diff --git a/Lab/demo/Lab/Viewer.h b/Lab/demo/Lab/Viewer.h index 9989344a4026..3af444f63b96 100644 --- a/Lab/demo/Lab/Viewer.h +++ b/Lab/demo/Lab/Viewer.h @@ -144,15 +144,15 @@ public Q_SLOTS: void paintEvent(QPaintEvent *)override; void paintGL()override; - //!Defines the behaviour for the mouse press events + //!Defines the behavior for the mouse press events void mousePressEvent(QMouseEvent*)override; void mouseDoubleClickEvent(QMouseEvent*)override; void wheelEvent(QWheelEvent *)override; - //!Defines the behaviour for the key press events + //!Defines the behavior for the key press events void keyPressEvent(QKeyEvent*)override; //!Deal with context menu events void contextMenuEvent(QContextMenuEvent*)override; - //!Defines the behaviour for the key release events + //!Defines the behavior for the key release events void keyReleaseEvent(QKeyEvent *)override; protected: diff --git a/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.cpp b/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.cpp index 9237d1913479..855d26e4bb69 100644 --- a/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.cpp +++ b/Linear_cell_complex/demo/Linear_cell_complex/MainWindow.cpp @@ -2780,7 +2780,7 @@ void MainWindow::sierpinski_carpet_copy_attributes_and_embed_vertex LCC::Helper::Foreach_enabled_attributes_except , 0>:: run(*(scene.lcc),sierpinskiCarpetSurfaces[0],it); - // We initialise the 0-atttrib to ah + // We initialize the 0-atttrib to ah scene.lcc->set_dart_attribute<0>(it, ah); } } diff --git a/Linear_cell_complex/doc/Linear_cell_complex/Linear_cell_complex.txt b/Linear_cell_complex/doc/Linear_cell_complex/Linear_cell_complex.txt index cac02fc6200d..d58e0f6e2e52 100644 --- a/Linear_cell_complex/doc/Linear_cell_complex/Linear_cell_complex.txt +++ b/Linear_cell_complex/doc/Linear_cell_complex/Linear_cell_complex.txt @@ -252,7 +252,7 @@ Before applying the sew operation, the eight vertices of the first cube are colo \subsection Linear_cell_complexAutomaticAttributesManagement Automatic Attribute Management \anchor ssecAttributesManagement -The following example illustrates the use of the automatic attributes management for a linear cell complex. An off file is loaded into a 2D linear cell complex embedded in 3D. Then, a certain percentage of edges is removed from the linear cell complex. The same method is applied twice: the first time by using the automatic attributes management (which is the default behaviour) and the second time by calling first \link GenericMap::set_automatic_attributes_management `set_automatic_attributes_management(false)`\endlink to disable the automatic updating of attributes. +The following example illustrates the use of the automatic attributes management for a linear cell complex. An off file is loaded into a 2D linear cell complex embedded in 3D. Then, a certain percentage of edges is removed from the linear cell complex. The same method is applied twice: the first time by using the automatic attributes management (which is the default behavior) and the second time by calling first \link GenericMap::set_automatic_attributes_management `set_automatic_attributes_management(false)`\endlink to disable the automatic updating of attributes. We can observe that the second run is faster than the first one. Indeed, updating attribute for each edge removal give a bigger complexity. Moreover, the gain increases when the percentage of removed edges increases. diff --git a/Matrix_search/doc/Matrix_search/Matrix_search.txt b/Matrix_search/doc/Matrix_search/Matrix_search.txt index 268c96cf7161..002c6110c97e 100644 --- a/Matrix_search/doc/Matrix_search/Matrix_search.txt +++ b/Matrix_search/doc/Matrix_search/Matrix_search.txt @@ -10,7 +10,7 @@ namespace CGAL { `monotone_matrix_search()` and `sorted_matrix_search()` are techniques that deal with the problem of efficiently finding largest entries in matrices with certain structural properties. Many -concrete problems can be modelled as matrix search problems, and for +concrete problems can be modeled as matrix search problems, and for some of them we provide explicit solutions that allow you to solve them without knowing about the matrix search technique. Examples are, the computation of all furthest neighbors for the vertices of a convex diff --git a/Mesh_2/include/CGAL/Delaunay_mesh_size_criteria_2.h b/Mesh_2/include/CGAL/Delaunay_mesh_size_criteria_2.h index eb3bb083b009..adf57dfe1947 100644 --- a/Mesh_2/include/CGAL/Delaunay_mesh_size_criteria_2.h +++ b/Mesh_2/include/CGAL/Delaunay_mesh_size_criteria_2.h @@ -58,7 +58,7 @@ class Delaunay_mesh_size_criteria_2 : const double& size() const { return second; } const double& sine() const { return first; } - // q1 { return c->slivers_exuder_restore_attributes(attr); } -}; // end partial specialisation Slivers_ex_att_t_aux +}; // end partial specialization Slivers_ex_att_t_aux template struct Slivers_exuder_cell_attributes_traits diff --git a/Mesh_3/include/CGAL/Mesh_3/config.h b/Mesh_3/include/CGAL/Mesh_3/config.h index cc2e5187f9be..3fd66c2f8666 100644 --- a/Mesh_3/include/CGAL/Mesh_3/config.h +++ b/Mesh_3/include/CGAL/Mesh_3/config.h @@ -18,7 +18,7 @@ //#define CGAL_MESH_3_VERBOSE 1 -// Use optimisations of Mesh_3 +// Use optimizations of Mesh_3 # define CGAL_CONSTRUCT_INTRUSIVE_LIST_RANGE_CONSTRUCTOR 1 # define CGAL_MESH_3_NEW_GET_FACETS 1 # define CGAL_MESH_3_GET_FACETS_USING_INTRUSIVE_LIST 1 diff --git a/Minkowski_sum_2/include/CGAL/Minkowski_sum_2/AABB_node_with_join.h b/Minkowski_sum_2/include/CGAL/Minkowski_sum_2/AABB_node_with_join.h index 0c828665cc2a..27a3bd4679dd 100644 --- a/Minkowski_sum_2/include/CGAL/Minkowski_sum_2/AABB_node_with_join.h +++ b/Minkowski_sum_2/include/CGAL/Minkowski_sum_2/AABB_node_with_join.h @@ -65,7 +65,7 @@ class AABB_node_with_join /** * @brief General traversal query * @param query the query - * @param traits the traversal traits that define the traversal behaviour + * @param traits the traversal traits that define the traversal behavior * @param nb_primitives the number of primitive * * General traversal query. The traits class allows using it for the various @@ -79,7 +79,7 @@ class AABB_node_with_join /** * @param other_node root node of a tree which we want to traverse in parallel - * @param traits the traversal traits that define the traversal behaviour + * @param traits the traversal traits that define the traversal behavior * @param nb_primitives the number of primitives in this tree * @param nb_primitives_other the number of primitives in the other tree * @param first_stationary if true, the other_node is the translatable tree's root diff --git a/Nef_2/include/CGAL/Nef_2/PM_point_locator.h b/Nef_2/include/CGAL/Nef_2/PM_point_locator.h index ed10484d5745..886e13a12e90 100644 --- a/Nef_2/include/CGAL/Nef_2/PM_point_locator.h +++ b/Nef_2/include/CGAL/Nef_2/PM_point_locator.h @@ -536,7 +536,7 @@ class PM_point_locator : public The efficiency of this point location module is mostly based on heuristics. Therefore worst case bounds are not very expressive. The query operations take up to linear time for subsequent query - operations though they are better in practise. They trigger a one-time + operations though they are better in practize. They trigger a one-time initialization which needs worst case $O(n^2)$ time though runtime tests often show subquadratic results. The necessary space for the query structure is subsumed in the storage space $O(n)$ of the input diff --git a/Nef_2/include/CGAL/Nef_2/gen_point_location.h b/Nef_2/include/CGAL/Nef_2/gen_point_location.h index 1430b785ae07..622eb6b93a31 100644 --- a/Nef_2/include/CGAL/Nef_2/gen_point_location.h +++ b/Nef_2/include/CGAL/Nef_2/gen_point_location.h @@ -320,7 +320,7 @@ class PointLocator { If the ray does not intersect any node or edge of |G|, then |nil| is returned.\\ The class |\Mtype| is generic, it is parameterized with a traits class - |PLocTraits| which widely controls its behaviour. + |PLocTraits| which widely controls its behavior. The traits may even change the return type of a query and its semantics. There are predined traits classes for the LEDA graph types, which are described below in a separate section. diff --git a/Nef_3/doc/Nef_3/Nef_3.txt b/Nef_3/doc/Nef_3/Nef_3.txt index a19fce2c5223..d205dd42a115 100644 --- a/Nef_3/doc/Nef_3/Nef_3.txt +++ b/Nef_3/doc/Nef_3/Nef_3.txt @@ -420,7 +420,7 @@ the symbolical value, large but finite, for the size of the infimaximal box. \subsection Nef_3DrawNefPolyhedron Draw a Nef Polyhedron -A nef polyhedron can be visualised by calling the \link PkgDrawNef3 CGAL::draw() \endlink function as shown in the following example. This function opens a new window showing the given Nef Polyhedron. +A nef polyhedron can be visualized by calling the \link PkgDrawNef3 CGAL::draw() \endlink function as shown in the following example. This function opens a new window showing the given Nef Polyhedron. \cgalExample{Nef_3/draw_nef_3.cpp} diff --git a/Number_types/doc/Number_types/CGAL/Gmpfi.h b/Number_types/doc/Number_types/CGAL/Gmpfi.h index b48623b22129..208361528182 100644 --- a/Number_types/doc/Number_types/CGAL/Gmpfi.h +++ b/Number_types/doc/Number_types/CGAL/Gmpfi.h @@ -26,7 +26,7 @@ All interval operations are performed by the \mpfi library. The class `Gmpfi` is counted, but its members are. The default precision of `Gmpfi` is local to each thread and independent of -the default precision of `Gmpfr` (in contrast to the behaviour of the \mpfi +the default precision of `Gmpfr` (in contrast to the behavior of the \mpfi and \mpfr libraries, which share a default precision). diff --git a/Number_types/include/CGAL/Sqrt_extension/Algebraic_extension_traits.h b/Number_types/include/CGAL/Sqrt_extension/Algebraic_extension_traits.h index 2e416946c20c..f68c10fc786e 100644 --- a/Number_types/include/CGAL/Sqrt_extension/Algebraic_extension_traits.h +++ b/Number_types/include/CGAL/Sqrt_extension/Algebraic_extension_traits.h @@ -22,7 +22,7 @@ template class Algebraic_extension_traits > { /* needed to 'add up' sqrt_extensions in iterator range such that all roots are collected in order to keep operation time minimal all scalar coeffs - are set to 1 by standardise. + are set to 1 by standardize. TODO .. find a better name, if you want to. */ template diff --git a/Number_types/include/CGAL/Sqrt_extension/Fraction_traits.h b/Number_types/include/CGAL/Sqrt_extension/Fraction_traits.h index 1f884370c744..73ed329a837f 100644 --- a/Number_types/include/CGAL/Sqrt_extension/Fraction_traits.h +++ b/Number_types/include/CGAL/Sqrt_extension/Fraction_traits.h @@ -37,7 +37,7 @@ namespace Intern{ /*! \ingroup CGAL_Sqrt_extension \ingroup CGAL_Fraction_traits_spec - \brief Specialisation of CGAL::Fraction_traits for CGAL::Sqrt_extension. + \brief Specialization of CGAL::Fraction_traits for CGAL::Sqrt_extension. * * Extensions provide suitable specializations of \c CGAL::Fraction_traits. * They are decomposable iff their coefficient type is. diff --git a/Number_types/include/CGAL/boost_mp_type.h b/Number_types/include/CGAL/boost_mp_type.h index cf18678c0114..9f21e7ba40fb 100644 --- a/Number_types/include/CGAL/boost_mp_type.h +++ b/Number_types/include/CGAL/boost_mp_type.h @@ -301,7 +301,7 @@ namespace Boost_MP_internal { const int64_t msb_num = static_cast(boost::multiprecision::msb(xnum)); const int64_t msb_den = static_cast(boost::multiprecision::msb(xden)); -#if 0 // Optimisation for the case of input that are double +#if 0 // Optimization for the case of input that are double // An alternative strategy would be to convert numerator and denominator to // intervals, then divide. However, this would require setting the rounding // mode (and dividing intervals is not completely free). An important diff --git a/Number_types/include/CGAL/leda_integer.h b/Number_types/include/CGAL/leda_integer.h index eedd073aa184..7d47b953c1c5 100644 --- a/Number_types/include/CGAL/leda_integer.h +++ b/Number_types/include/CGAL/leda_integer.h @@ -60,7 +60,7 @@ template <> class Algebraic_structure_traits< leda_integer > CGAL_IMPLICIT_INTEROPERABLE_BINARY_OPERATOR( Type ) }; - // Unfortunately the behaviour of leda has changed here several times + // Unfortunately the behavior of leda has changed here several times // The following Div_mod is invariant under these changes // However, the Div and Mod defined below might be more efficient // TODO: recover Div Mod implementation for all leda versions diff --git a/Number_types/test/Number_types/Sqrt_extension.h b/Number_types/test/Number_types/Sqrt_extension.h index 825ba19d2522..6bd28362bf43 100644 --- a/Number_types/test/Number_types/Sqrt_extension.h +++ b/Number_types/test/Number_types/Sqrt_extension.h @@ -575,7 +575,7 @@ void test_algebraic_extension_traits(){ typedef CGAL::Sqrt_extension RAT2_EXT; typedef CGAL::Sqrt_extension INT2_EXT; - // normalisation factor + // normalization factor typedef CGAL::Algebraic_extension_traits RAT1_EXT_ANT; typedef CGAL::Algebraic_extension_traits INT1_EXT_ANT; typedef CGAL::Algebraic_extension_traits RAT2_EXT_ANT; diff --git a/Optimisation_basic/package_info/Optimisation_basic/description.txt b/Optimisation_basic/package_info/Optimisation_basic/description.txt index 8516e6ed7288..28bb613c998f 100644 --- a/Optimisation_basic/package_info/Optimisation_basic/description.txt +++ b/Optimisation_basic/package_info/Optimisation_basic/description.txt @@ -1 +1 @@ -Basic stuff for geometric optimisation +Basic stuff for geometric optimization diff --git a/Orthtree/include/CGAL/Orthtree.h b/Orthtree/include/CGAL/Orthtree.h index 9774c6b5398c..074d90b8bc49 100644 --- a/Orthtree/include/CGAL/Orthtree.h +++ b/Orthtree/include/CGAL/Orthtree.h @@ -1410,7 +1410,7 @@ class Orthtree { } void dump_box_to_polylines(const Bbox_2& box, std::ostream& os) const { - // dump in 3D for visualisation + // dump in 3D for visualization os << "5 " << box.xmin() << " " << box.ymin() << " 0 " << box.xmin() << " " << box.ymax() << " 0 " diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h index 160cbfc0a67d..e50c12ae6f7c 100644 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_2.h @@ -2211,7 +2211,7 @@ Gt, Tds >::insert_first(const Point& p) /// Virtual faces, two per periodic domain Face_handle faces[3][3][2]; - // Initialise vertices: + // initialize vertices: vir_vertices[0][0] = _tds.create_vertex(); vir_vertices[0][0]->set_point(p); _virtual_vertices_reverse[vir_vertices[0][0]] = std::vector(); @@ -2221,7 +2221,7 @@ Gt, Tds >::insert_first(const Point& p) { if ((i != 0) || (j != 0)) { - // Initialise virtual vertices out of the domain for debugging + // initialize virtual vertices out of the domain for debugging vir_vertices[i][j] = _tds.create_vertex(); vir_vertices[i][j]->set_point(p); //+Offset(i,j)); _virtual_vertices[vir_vertices[i][j]] = Virtual_vertex( diff --git a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_dummy_12.h b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_dummy_12.h index 465ad8c83b08..562fc28b8bb6 100644 --- a/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_dummy_12.h +++ b/Periodic_2_triangulation_2/include/CGAL/Periodic_2_triangulation_dummy_12.h @@ -25,12 +25,12 @@ Periodic_2_triangulation_2::insert_dummy_points() // 6 faces per row, 4 rows Face_handle faces[24]; - // Initialise vertices: + // initialize vertices: for (int i = 0; i < 4; i++) { for (int j = 0; j < 3; j++) { - // Initialise virtual vertices out of the domain for debugging + // initialize virtual vertices out of the domain for debugging vertices[3 * i + j] = _tds.create_vertex(); Point p(j * (1.0 / 3.0) + i * (1.0 / 6.0), i * (1.0 / 4.0) ); p = Point((p.x() > FT(0.9375) ? (std::max)( p.x() - 1, FT(0) ) : p.x()), diff --git a/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h b/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h index df3be1a4851e..33420371bfc1 100644 --- a/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h +++ b/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/Protect_edges_sizing_field.h @@ -1190,7 +1190,7 @@ Protect_edges_sizing_field:: try_to_move_dummy_vertex(const Vertex_handle dummy_vertex, const Weighted_point& new_position) { - // Insert first to maximise likeliness of success + // Insert first to maximize likeliness of success Vertex_handle new_dummy = insert_dummy_point(new_position); if(!try_to_remove_dummy_vertex(dummy_vertex)) diff --git a/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/config.h b/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/config.h index dc27a86fe57e..4b529afbce7c 100644 --- a/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/config.h +++ b/Periodic_3_mesh_3/include/CGAL/Periodic_3_mesh_3/config.h @@ -35,7 +35,7 @@ // memory boolean in the vertex base #define CGAL_PERIODIC_TRIANGULATION_USE_VISITED_VERTEX_BOOLEAN -// Avoid optimisations of Mesh_3 +// Avoid optimizations of Mesh_3 #define CGAL_NO_STRUCTURAL_FILTERING #ifdef CGAL_MESH_3_SIZING_FIELD_INEXACT_LOCATE #undef CGAL_MESH_3_SIZING_FIELD_INEXACT_LOCATE diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h index c1001de10c5c..5848af0a5274 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3.h @@ -2784,7 +2784,7 @@ Periodic_3_triangulation_3::create_initial_triangulation(const Point& p) /// Virtual cells, 6 per periodic instance Cell_handle cells[3][3][3][6]; - // Initialise vertices: + // initialize vertices: vir_vertices[0][0][0] = _tds.create_vertex(); vir_vertices[0][0][0]->set_point(p); virtual_vertices_reverse[vir_vertices[0][0][0]] = std::vector(); @@ -2792,7 +2792,7 @@ Periodic_3_triangulation_3::create_initial_triangulation(const Point& p) for(int j=0; j<_cover[1]; j++) { for(int k=0; k<_cover[2]; k++) { if((i!=0)||(j!=0)||(k!=0)) { - // Initialise virtual vertices out of the domain for debugging + // initialize virtual vertices out of the domain for debugging vir_vertices[i][j][k] = _tds.create_vertex(); vir_vertices[i][j][k]->set_point(p); //+Offset(i,j,k)); diff --git a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_dummy_36.h b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_dummy_36.h index 097a60163602..a1ce85ef1cb1 100644 --- a/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_dummy_36.h +++ b/Periodic_3_triangulation_3/include/CGAL/Periodic_3_triangulation_3/internal/Periodic_3_triangulation_dummy_36.h @@ -682,11 +682,11 @@ static const int O[216][4] = { Vertex_handle vertices[36]; Cell_handle cells[216]; - // Initialise vertices: + // initialize vertices: for (int i=0; i<4; i++) { for (int j=0; j<3; j++) { for (int k=0; k<3; k++) { - // Initialise virtual vertices out of the domain for debugging + // initialize virtual vertices out of the domain for debugging vertices[9*i+3*j+k] = _tds.create_vertex(); Point p(k*(1.0/3.0) + i*(1.0/6.0), j*(1.0/3.0) + i*(1.0/6.0), i*(1.0/4.0) ); diff --git a/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_count_alpha_periodic_3.h b/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_count_alpha_periodic_3.h index 7175cc850cfd..8ee0d2972730 100644 --- a/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_count_alpha_periodic_3.h +++ b/Periodic_3_triangulation_3/test/Periodic_3_triangulation_3/include/CGAL/_count_alpha_periodic_3.h @@ -264,7 +264,7 @@ test_filtration(AS &A, bool verbose) typename AS::NT alpha; if(verbose) { std::cerr << std::endl; - std::cerr << "Analyse filtration " << std::endl; + std::cerr << "Analyze filtration " << std::endl; } for (; filtre_it != filtration.end(); filtre_it++) { if(assign(vertex, *filtre_it)) { diff --git a/Poisson_surface_reconstruction_3/include/CGAL/Poisson_mesh_cell_criteria_3.h b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_mesh_cell_criteria_3.h index 4c78d772ce5c..513d2be4376e 100644 --- a/Poisson_surface_reconstruction_3/include/CGAL/Poisson_mesh_cell_criteria_3.h +++ b/Poisson_surface_reconstruction_3/include/CGAL/Poisson_mesh_cell_criteria_3.h @@ -67,7 +67,7 @@ class Poisson_mesh_cell_criteria_3 double sq_size() const { return second; } double aspect() const { return first; } - // q1m_status.first=boost::logic::indeterminate; this->m_stop=true; diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_degeneracies.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_degeneracies.h index 19adcd48319e..a21e4333ec0c 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_degeneracies.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/repair_degeneracies.h @@ -582,7 +582,7 @@ struct Filter_wrapper_for_cap_needle_removalm) ? NT(0) : -coeff(f,i+sub)*coeff(g,(j+sub)+1); diff --git a/Polynomial/include/CGAL/Polynomial/determinant.h b/Polynomial/include/CGAL/Polynomial/determinant.h index e7cd0be84efe..0c7cc5644d25 100644 --- a/Polynomial/include/CGAL/Polynomial/determinant.h +++ b/Polynomial/include/CGAL/Polynomial/determinant.h @@ -134,7 +134,7 @@ namespace internal { /*! \ingroup CGAL_determinant * \brief Will determine and execute a suitable determinant routine and * return the determinant of \a A. - * (specialisation for CGAL::Matrix_d) + * (specialization for CGAL::Matrix_d) */ template inline NT determinant(const internal::Simple_matrix& A) @@ -214,7 +214,7 @@ namespace internal { /*! \ingroup CGAL_determinant * \brief Computes the determinant of \a A according to the method proposed * by Berkowitz. - * (specialisation for CGAL::Matrix_d) + * (specialization for CGAL::Matrix_d) * * Note that this routine is completely free of divisions! */ diff --git a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_2.h b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_2.h index b5e189e51ce1..1128457fa926 100644 --- a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_2.h +++ b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_2.h @@ -5,7 +5,7 @@ namespace CGAL { \ingroup PkgPolytopeDistanceDRef The class `Polytope_distance_d_traits_2` is a traits class for the \f$ d\f$-dimensional -optimisation algorithms using the two-dimensional \cgal kernel. +optimization algorithms using the two-dimensional \cgal kernel. \tparam K must be a model for `Kernel`. diff --git a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_3.h b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_3.h index 207b4a8bd7ba..e5ef4a3c86db 100644 --- a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_3.h +++ b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_3.h @@ -5,7 +5,7 @@ namespace CGAL { \ingroup PkgPolytopeDistanceDRef The class `Polytope_distance_d_traits_3` is a traits class for the \f$ d\f$-dimensional -optimisation algorithms using the three-dimensional \cgal kernel. +optimization algorithms using the three-dimensional \cgal kernel. \tparam K must be a model for `Kernel`. diff --git a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_d.h b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_d.h index 37ad80ae56b1..18b5197a91f9 100644 --- a/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_d.h +++ b/Polytope_distance_d/doc/Polytope_distance_d/CGAL/Polytope_distance_d_traits_d.h @@ -5,7 +5,7 @@ namespace CGAL { \ingroup PkgPolytopeDistanceDRef The class `Polytope_distance_d_traits_d` is a traits class for the \f$ d\f$-dimensional -optimisation algorithms using the \f$ d\f$-dimensional \cgal kernel. +optimization algorithms using the \f$ d\f$-dimensional \cgal kernel. \tparam K must be a model for `Kernel`. diff --git a/Polytope_distance_d/doc/Polytope_distance_d/Concepts/PolytopeDistanceDTraits.h b/Polytope_distance_d/doc/Polytope_distance_d/Concepts/PolytopeDistanceDTraits.h index 32004e174ba1..39d8b30417ca 100644 --- a/Polytope_distance_d/doc/Polytope_distance_d/Concepts/PolytopeDistanceDTraits.h +++ b/Polytope_distance_d/doc/Polytope_distance_d/Concepts/PolytopeDistanceDTraits.h @@ -4,7 +4,7 @@ \cgalConcept This concept defines the requirements for traits classes of \f$ d\f$-dimensional -optimisation algorithms. +optimization algorithms. \cgalHasModelsBegin \cgalHasModels{CGAL::Polytope_distance_d_traits_2} diff --git a/Polytope_distance_d/test/Polytope_distance_d/test_PD.cpp b/Polytope_distance_d/test/Polytope_distance_d/test_PD.cpp index 8ac737232828..64bb8f26197a 100644 --- a/Polytope_distance_d/test/Polytope_distance_d/test_PD.cpp +++ b/Polytope_distance_d/test/Polytope_distance_d/test_PD.cpp @@ -13,7 +13,7 @@ // // file : test/Polytope_distance_d/test_PD.C // package : $CGAL_Package: Polytope_distance_d $ -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // revision : $Id$ // revision_date : $Date$ diff --git a/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d.h b/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d.h index d0122d83486f..67e7ff08e2b1 100644 --- a/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d.h +++ b/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d.h @@ -13,7 +13,7 @@ // // file : test/Polytope_distance_d/test_Polytope_distance_d.h // package : $CGAL_Package: Polytope_distance_d $ -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // revision : $Id$ // revision_date : $Date$ diff --git a/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d_2.cpp b/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d_2.cpp index 86d75b83e579..11d7c1efecd8 100644 --- a/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d_2.cpp +++ b/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d_2.cpp @@ -13,7 +13,7 @@ // // file : test/Polytope_distance_d/test_Polytope_distance_d_2.C // package : $CGAL_Package: Polytope_distance_d $ -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // source : web/Polytope_distance_d.aw // revision : $Id$ diff --git a/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d_3.cpp b/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d_3.cpp index f2f2730a73bb..b4b516260d0d 100644 --- a/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d_3.cpp +++ b/Polytope_distance_d/test/Polytope_distance_d/test_Polytope_distance_d_3.cpp @@ -13,7 +13,7 @@ // // file : test/Polytope_distance_d/test_Polytope_distance_d_3.C // package : $CGAL_Package: Polytope_distance_d $ -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // source : web/Polytope_distance_d.aw // revision : $Id$ diff --git a/Polytope_distance_d/test/Polytope_distance_d/test_width_cube.cpp b/Polytope_distance_d/test/Polytope_distance_d/test_width_cube.cpp index f72484d6f155..4b9f2597abcf 100644 --- a/Polytope_distance_d/test/Polytope_distance_d/test_width_cube.cpp +++ b/Polytope_distance_d/test/Polytope_distance_d/test_width_cube.cpp @@ -13,7 +13,7 @@ // // file : test/test_width_cube.C // package : Width_3 (1.6) -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // revision : $Id$ // revision_date : $Date$ diff --git a/Polytope_distance_d/test/Polytope_distance_d/test_width_simplex.cpp b/Polytope_distance_d/test/Polytope_distance_d/test_width_simplex.cpp index a2bdead6b097..ca13502c108d 100644 --- a/Polytope_distance_d/test/Polytope_distance_d/test_width_simplex.cpp +++ b/Polytope_distance_d/test/Polytope_distance_d/test_width_simplex.cpp @@ -13,7 +13,7 @@ // // file : test/test_width_simplex.C // package : Width_3 (1.6) -// chapter : Geometric Optimisation +// chapter : Geometric Optimization // // revision : $Id$ // revision_date : $Date$ diff --git a/QP_solver/doc/QP_solver/fig_src/documentation/algorithmicx.sty b/QP_solver/doc/QP_solver/fig_src/documentation/algorithmicx.sty index 0b681debab77..a56c52dd3011 100644 --- a/QP_solver/doc/QP_solver/fig_src/documentation/algorithmicx.sty +++ b/QP_solver/doc/QP_solver/fig_src/documentation/algorithmicx.sty @@ -6,7 +6,7 @@ % Based on Peter Williams's algorithmic.sty % % -% *** INITIALISING *** +% *** INITIALIZING *** % % \NeedsTeXFormat{LaTeX2e} diff --git a/QP_solver/test/QP_solver/master_mps_to_derivatives.cpp b/QP_solver/test/QP_solver/master_mps_to_derivatives.cpp index ad6fd7abc897..62ced5959a41 100644 --- a/QP_solver/test/QP_solver/master_mps_to_derivatives.cpp +++ b/QP_solver/test/QP_solver/master_mps_to_derivatives.cpp @@ -320,7 +320,7 @@ void create_free_instance(CGAL::Quadratic_program_from_mps& qp, const char *dir) { // This routine converts the given instance into an equivalent - // problem where all bounds are modelled by additional rows of A and + // problem where all bounds are modeled by additional rows of A and // where all variables are free. // // That is, the quantities c and D do not change, but A, b, and diff --git a/Ridges_3/examples/Ridges_3/PolyhedralSurf_rings.h b/Ridges_3/examples/Ridges_3/PolyhedralSurf_rings.h index 0b11736513ca..c3e5aefec98c 100644 --- a/Ridges_3/examples/Ridges_3/PolyhedralSurf_rings.h +++ b/Ridges_3/examples/Ridges_3/PolyhedralSurf_rings.h @@ -25,7 +25,7 @@ class T_PolyhedralSurf_rings typedef std::map Vertex2int_map; Vertex2int_map ring_index_map; - //vertex indices are initialised to -1 + //vertex indices are initialized to -1 void reset_ring_indices(std::vector &vces); //i >= 1; from a start vertex on the current i-1 ring, push non-visited neighbors diff --git a/Ridges_3/test/Ridges_3/PolyhedralSurf_rings.h b/Ridges_3/test/Ridges_3/PolyhedralSurf_rings.h index 0b11736513ca..c3e5aefec98c 100644 --- a/Ridges_3/test/Ridges_3/PolyhedralSurf_rings.h +++ b/Ridges_3/test/Ridges_3/PolyhedralSurf_rings.h @@ -25,7 +25,7 @@ class T_PolyhedralSurf_rings typedef std::map Vertex2int_map; Vertex2int_map ring_index_map; - //vertex indices are initialised to -1 + //vertex indices are initialized to -1 void reset_ring_indices(std::vector &vces); //i >= 1; from a start vertex on the current i-1 ring, push non-visited neighbors diff --git a/STL_Extension/doc/STL_Extension/PackageDescription.txt b/STL_Extension/doc/STL_Extension/PackageDescription.txt index 552378e03e6c..266a3b15f52b 100644 --- a/STL_Extension/doc/STL_Extension/PackageDescription.txt +++ b/STL_Extension/doc/STL_Extension/PackageDescription.txt @@ -7,7 +7,7 @@ /// \defgroup PkgSTLExtensionUtilities Utilities /// \ingroup PkgSTLExtensionRef -/// \defgroup PkgSTLExtensionAssertions Assertions and Failure Behaviour +/// \defgroup PkgSTLExtensionAssertions Assertions and Failure Behavior /// \ingroup PkgSTLExtensionRef /*! @@ -16,7 +16,7 @@ \cgalPkgPicture{plusplus.png} \cgalPkgSummaryBegin \cgalPkgAuthors{Michael Hoffmann, Lutz Kettner, Sylvain Pion, and Ron Wein} -\cgalPkgDesc{\cgal is designed in the spirit of the generic programming paradigm to work together with the Standard Template Library (\stl). This package provides non-geometric \stl-like algorithms and datastructures that are not in the \stl standard, as well as functions to change the failure behaviour of assertions.} +\cgalPkgDesc{\cgal is designed in the spirit of the generic programming paradigm to work together with the Standard Template Library (\stl). This package provides non-geometric \stl-like algorithms and datastructures that are not in the \stl standard, as well as functions to change the failure behavior of assertions.} \cgalPkgManuals{Chapter_STL_Extensions_for_CGAL,PkgSTLExtensionRef} \cgalPkgSummaryEnd \cgalPkgShortInfoBegin diff --git a/Scripts/developer_scripts/create_internal_release b/Scripts/developer_scripts/create_internal_release index 2db9f7f9ef87..e17165cec0a8 100755 --- a/Scripts/developer_scripts/create_internal_release +++ b/Scripts/developer_scripts/create_internal_release @@ -63,7 +63,7 @@ EOF my $TEMPFILE="TEMPFILE.$$"; #----------------------------------------------------# -# Initialisation # +# initialization # #----------------------------------------------------# my ( diff --git a/Scripts/developer_scripts/licensecheck b/Scripts/developer_scripts/licensecheck index c470c5b80576..e9a9f4c5be20 100755 --- a/Scripts/developer_scripts/licensecheck +++ b/Scripts/developer_scripts/licensecheck @@ -89,7 +89,7 @@ The two configuration files F and F<~/.devscripts> are sourced by a shell in that order to set configuration variables. Command line options can be used to override configuration file settings. Environment variable settings are -ignored for this purpose. The currently recognised variables are: +ignored for this purpose. The currently recognized variables are: =over 4 diff --git a/Segment_Delaunay_graph_2/doc/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2.txt b/Segment_Delaunay_graph_2/doc/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2.txt index db694f9de60b..c8e22d04b12a 100644 --- a/Segment_Delaunay_graph_2/doc/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2.txt +++ b/Segment_Delaunay_graph_2/doc/Segment_Delaunay_graph_2/Segment_Delaunay_graph_2.txt @@ -450,7 +450,7 @@ class is used, the possible values are `Field_with_sqrt_tag` and \section secsdg2hierarchy The Segment Delaunay Graph Hierarchy The `Segment_Delaunay_graph_hierarchy_2` -class is the analogue of the `Triangulation_hierarchy_2` or the +class is the analog of the `Triangulation_hierarchy_2` or the `Apollonius_graph_hierarchy_2` classes, applied to the segment Delaunay graph. It consists of a hierarchy of segment Delaunay graphs constructed in a manner analogous to the diff --git a/Stream_support/doc/Stream_support/IOstream.txt b/Stream_support/doc/Stream_support/IOstream.txt index fb4d9fe8afae..89a5ba1f98a4 100644 --- a/Stream_support/doc/Stream_support/IOstream.txt +++ b/Stream_support/doc/Stream_support/IOstream.txt @@ -210,11 +210,11 @@ of `Output_rep`. If you do not specialize `Output_rep` for `T`, `T`'s stream output operator is called from within `Output_rep`, by -default. If you want another behaviour for your type `T`, you +default. If you want another behavior for your type `T`, you have to provide a specialization for that type. Furthermore, you can provide specializations with a second template parameter (a formatting tag). The second template parameter defaults to `Null_tag` and means -default behaviour. +default behavior. For example, specializing `Output_rep` for `CORE::BigRat` (without a formatting tag parameter) could look like this: diff --git a/Stream_support/include/CGAL/IO/OI/Inventor_ostream.h b/Stream_support/include/CGAL/IO/OI/Inventor_ostream.h index 94c2f8b5787f..4a9a2bbda43e 100644 --- a/Stream_support/include/CGAL/IO/OI/Inventor_ostream.h +++ b/Stream_support/include/CGAL/IO/OI/Inventor_ostream.h @@ -59,9 +59,9 @@ class Inventor_ostream_base std::ostream& os() const { - // The behaviour if m_os == nullptr could be changed to return + // The behavior if m_os == nullptr could be changed to return // cerr or a file handle to /dev/null. The latter one would - // mimic the behaviour that one can still use a stream with + // mimic the behavior that one can still use a stream with // an invalid stream, but without producing any output. CGAL_assertion( m_os != nullptr ); return *m_os; diff --git a/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h b/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h index 23d94c3f9d56..a97f36ebff7a 100644 --- a/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h +++ b/Stream_support/include/CGAL/IO/VRML/VRML_2_ostream.h @@ -55,9 +55,9 @@ class VRML_2_ostream std::ostream& os() const { - // The behaviour if m_os == nullptr could be changed to return + // The behavior if m_os == nullptr could be changed to return // cerr or a file handle to /dev/null. The latter one would - // mimic the behaviour that one can still use a stream with + // mimic the behavior that one can still use a stream with // an invalid stream, but without producing any output. CGAL_assertion( m_os != nullptr ); return *m_os; diff --git a/Stream_support/include/CGAL/IO/io.h b/Stream_support/include/CGAL/IO/io.h index aa7d650e72bf..74f8dd34babb 100644 --- a/Stream_support/include/CGAL/IO/io.h +++ b/Stream_support/include/CGAL/IO/io.h @@ -152,7 +152,7 @@ typedef IO_rep_is_not_specialized_aux IO_rep_is_not_specialized; The purpose of `Output_rep` is to provide a way to control output formatting that works independently of the object's stream output operator. -If you dont specialize `Output_rep` for `T`, `T`'s stream output operator is called from within `Output_rep`, by default. If you want another behaviour for your type `T`, you have to provide a specialization for that type. Furthermore, you can provide specializations with a second template parameter (a formatting tag). The second template parameter defaults to `Null_tag` and means *default behaviour*. +If you dont specialize `Output_rep` for `T`, `T`'s stream output operator is called from within `Output_rep`, by default. If you want another behavior for your type `T`, you have to provide a specialization for that type. Furthermore, you can provide specializations with a second template parameter (a formatting tag). The second template parameter defaults to `Null_tag` and means *default behavior*. Specializations of `Output_rep` should provide the following features: diff --git a/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h b/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h index cb949abcc303..83ca6a3b4b7d 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/Surface_mesh.h @@ -870,7 +870,7 @@ class Surface_mesh #endif /// @cond CGAL_DOCUMENT_INTERNALS - // typedefs which make it easier to write the partial specialisation of boost::graph_traits + // typedefs which make it easier to write the partial specialization of boost::graph_traits typedef Vertex_index vertex_index; typedef P vertex_property_type; diff --git a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Iterative_authalic_parameterizer_3.h b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Iterative_authalic_parameterizer_3.h index b1794891ef5b..acd3a20707e6 100644 --- a/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Iterative_authalic_parameterizer_3.h +++ b/Surface_mesh_parameterization/include/CGAL/Surface_mesh_parameterization/Iterative_authalic_parameterizer_3.h @@ -218,7 +218,7 @@ class Iterative_authalic_parameterizer_3 for(face_descriptor f : face_range) { - // get area in parameterised mesh + // get area in parameterized mesh const halfedge_descriptor h = halfedge(f, tmesh); const NT a_2D = abs(CGAL::area(get(uvmap, source(h, tmesh)), get(uvmap, target(h, tmesh)), @@ -531,7 +531,7 @@ class Iterative_authalic_parameterizer_3 theta_sum += theta; } - // Normalise the angle + // Normalize the angle double factor = 2. / theta_sum; factor *= CGAL_PI; for(int n=0; nm_type << " " << " time: " << event->m_distanceEstimate << " "; - std::cout << "cancelled? " << event->m_cancelled << " " ; + std::cout << "canceled? " << event->m_cancelled << " " ; if (!event->m_cancelled) { @@ -2200,7 +2200,7 @@ class Surface_mesh_shortest_path } else if (m_debugOutput) { - std::cout << "Found cancelled event for node: " << event->m_parent << std::endl; + std::cout << "Found canceled event for node: " << event->m_parent << std::endl; } delete event; @@ -2416,7 +2416,7 @@ class Surface_mesh_shortest_path \details No change to the internal shortest paths data structure occurs until either `Surface_mesh_shortest_path::build_sequence_tree()` or the first shortest path query is done. - Behaviour is undefined if the source point `it` was already removed. + Behavior is undefined if the source point `it` was already removed. \param it iterator to the source point to be removed */ diff --git a/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h b/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h index 16caafb4f27b..c4aa3b41b052 100644 --- a/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h +++ b/Surface_mesh_topology/include/CGAL/draw_face_graph_with_paths.h @@ -67,7 +67,7 @@ namespace draw_function_for_lcc // template // struct LCC_geom_utils; -// Specialisation for face graph; otherwise use the LCC_geom_utils of LCC. +// Specialization for face graph; otherwise use the LCC_geom_utils of LCC. template struct LCC_geom_utils, Local_kernel, 3> { diff --git a/TDS_2/include/CGAL/Triangulation_ds_face_base_2.h b/TDS_2/include/CGAL/Triangulation_ds_face_base_2.h index bb4c448c6695..23b59e3affa1 100644 --- a/TDS_2/include/CGAL/Triangulation_ds_face_base_2.h +++ b/TDS_2/include/CGAL/Triangulation_ds_face_base_2.h @@ -340,7 +340,7 @@ operator<<(std::ostream &os, const Triangulation_ds_face_base_2 &) return os; } -// Specialisation for void. +// Specialization for void. template <> class Triangulation_ds_face_base_2 { diff --git a/TDS_3/include/CGAL/Triangulation_simplex_3.h b/TDS_3/include/CGAL/Triangulation_simplex_3.h index d00422df1bab..c6245e8bb9fb 100644 --- a/TDS_3/include/CGAL/Triangulation_simplex_3.h +++ b/TDS_3/include/CGAL/Triangulation_simplex_3.h @@ -43,7 +43,7 @@ class Triangulation_simplex_3 { // Constructors - // Default constructor initialises to undefined simplex: + // Default constructor initializes to undefined simplex: Triangulation_simplex_3() : ref(-1), ch() { } Triangulation_simplex_3(Vertex_handle vh) { diff --git a/Three/include/CGAL/Three/Scene_item.h b/Three/include/CGAL/Three/Scene_item.h index 4fbe0558392d..5a834a016cd0 100644 --- a/Three/include/CGAL/Three/Scene_item.h +++ b/Three/include/CGAL/Three/Scene_item.h @@ -375,7 +375,7 @@ public Q_SLOTS: //!Emits an aboutToBeDestroyed() signal. //!Override this function to delete what needs to be deleted on destruction. - //!This might be needed as items are not always deleted right away by Qt and this behaviour may cause simply a + //!This might be needed as items are not always deleted right away by Qt and this behavior may cause simply a //!memory leak, for example when multiple items are created at the same time. virtual void itemAboutToBeDestroyed(Scene_item*); //!Returns the alpha value for the item. diff --git a/Three/include/CGAL/Three/Scene_item_rendering_helper.h b/Three/include/CGAL/Three/Scene_item_rendering_helper.h index 83ee418e4054..e6928c3dcb6d 100644 --- a/Three/include/CGAL/Three/Scene_item_rendering_helper.h +++ b/Three/include/CGAL/Three/Scene_item_rendering_helper.h @@ -110,7 +110,7 @@ class DEMO_FRAMEWORK_EXPORT Scene_item_rendering_helper //! \brief setTriangleContainer sets the `id`th `Triangle_container` to `tc`. //! //! If `id` is bigger than the current size of the container vector, this vector is - //! resized accordingly. This means that for optimisation reasons, containers should be created + //! resized accordingly. This means that for optimization reasons, containers should be created //! decreasingly. //! void setTriangleContainer(std::size_t id, @@ -120,7 +120,7 @@ class DEMO_FRAMEWORK_EXPORT Scene_item_rendering_helper //! \brief setEdgeContainer sets the `id`th `Edge_container` to `tc`. //! //! If `id` is bigger than the current size of the container vector, this vector is - //! resized accordingly. This means that for optimisation reasons, containers should be created + //! resized accordingly. This means that for optimization reasons, containers should be created //! decreasingly. //! void setEdgeContainer(std::size_t id, @@ -130,7 +130,7 @@ class DEMO_FRAMEWORK_EXPORT Scene_item_rendering_helper //! \brief setPointContainer sets the `id`th `Point_container` to `tc`. //! //! If `id` is bigger than the current size of the container vector, this vector is - //! resized accordingly. This means that for optimisation reasons, containers should be created + //! resized accordingly. This means that for optimization reasons, containers should be created //! decreasingly. //! void setPointContainer(std::size_t id, diff --git a/Triangulation/include/CGAL/Triangulation_ds_vertex.h b/Triangulation/include/CGAL/Triangulation_ds_vertex.h index e6819f7431a9..00e9fd6f7304 100644 --- a/Triangulation/include/CGAL/Triangulation_ds_vertex.h +++ b/Triangulation/include/CGAL/Triangulation_ds_vertex.h @@ -75,7 +75,7 @@ class Triangulation_ds_vertex return false; } bool found(false); - // These two typename below are OK because TDS fulfils the + // These two typename below are OK because TDS fulfills the // TriangulationDataStructure concept. typename TDS::Full_cell::Vertex_handle_iterator vit(full_cell()->vertices_begin()); typedef typename TDS::Vertex_handle Vertex_handle; diff --git a/Triangulation_2/include/CGAL/Constrained_Delaunay_triangulation_2.h b/Triangulation_2/include/CGAL/Constrained_Delaunay_triangulation_2.h index 714e9295b61f..caed792fa5e5 100644 --- a/Triangulation_2/include/CGAL/Constrained_Delaunay_triangulation_2.h +++ b/Triangulation_2/include/CGAL/Constrained_Delaunay_triangulation_2.h @@ -925,7 +925,7 @@ template < class Gt, class Tds, class Itag > typename Constrained_Delaunay_triangulation_2::Vertex_handle Constrained_Delaunay_triangulation_2:: insert(const Point& a, Locate_type lt, Face_handle loc, int li) -// insert a point p, whose localisation is known (lt, f, i) +// insert a point p, whose localization is known (lt, f, i) // constrained edges are updated // Delaunay property is restored { diff --git a/Triangulation_2/include/CGAL/Constrained_triangulation_2.h b/Triangulation_2/include/CGAL/Constrained_triangulation_2.h index 90d6448f0e5b..65ebc4b0fb09 100644 --- a/Triangulation_2/include/CGAL/Constrained_triangulation_2.h +++ b/Triangulation_2/include/CGAL/Constrained_triangulation_2.h @@ -700,7 +700,7 @@ template < class Gt, class Tds, class Itag > typename Constrained_triangulation_2::Vertex_handle Constrained_triangulation_2:: insert(const Point& a, Locate_type lt, Face_handle loc, int li) -// insert a point p, whose localisation is known (lt, f, i) +// insert a point p, whose localization is known (lt, f, i) // in addition to what is done for non constrained triangulations // constrained edges are updated { diff --git a/Triangulation_2/include/CGAL/Regular_triangulation_2.h b/Triangulation_2/include/CGAL/Regular_triangulation_2.h index 54938928e5c4..d7cae81c69e7 100644 --- a/Triangulation_2/include/CGAL/Regular_triangulation_2.h +++ b/Triangulation_2/include/CGAL/Regular_triangulation_2.h @@ -1491,7 +1491,7 @@ regularize(Vertex_handle v) if(dimension() < 1) return; - //initialise faces_around + //initialize faces_around if(dimension() == 1) { faces_around.push_back(v->face()); faces_around.push_back(v->face()->neighbor(1- v->face()->index(v))); diff --git a/Triangulation_2/include/CGAL/Triangulation_2.h b/Triangulation_2/include/CGAL/Triangulation_2.h index 433ea5cb5af3..5078301504be 100644 --- a/Triangulation_2/include/CGAL/Triangulation_2.h +++ b/Triangulation_2/include/CGAL/Triangulation_2.h @@ -1465,7 +1465,7 @@ template typename Triangulation_2::Vertex_handle Triangulation_2:: insert(const Point& p, Locate_type lt, Face_handle loc, int li) - // insert a point p, whose localisation is known (lt, f, i) + // insert a point p, whose localization is known (lt, f, i) { if(number_of_vertices() == 0) { return(insert_first(p)); diff --git a/Triangulation_3/TODO b/Triangulation_3/TODO index 01707e3e30c1..4e4042a5d812 100644 --- a/Triangulation_3/TODO +++ b/Triangulation_3/TODO @@ -32,7 +32,7 @@ Delaunay dual sont effectivement utilisees - remplacer les create_face du remove2D par des create_cell et virer les create_face de la tds -- optimiser remove : +- optimizer remove : - algo d'Olivier si constructions filtrees disponibles (cf Olivier rappel de la reunion a ce sujet) - pour la creation de la TDS_2, on devrait pouvoir faire plus simple, diff --git a/Triangulation_3/benchmark/Triangulation_3/Triangulation_benchmark_3.cpp b/Triangulation_3/benchmark/Triangulation_3/Triangulation_benchmark_3.cpp index fa052480c6b7..9d155f287fcc 100644 --- a/Triangulation_3/benchmark/Triangulation_3/Triangulation_benchmark_3.cpp +++ b/Triangulation_3/benchmark/Triangulation_3/Triangulation_benchmark_3.cpp @@ -306,7 +306,7 @@ void benchmark_remove(std::vector& pts, if (nb_pts > max_pts) { - std::cerr << "ERROR: nb_pts > max_pts. Cancelling..." << std::endl; + std::cerr << "ERROR: nb_pts > max_pts. Canceling..." << std::endl; return; } diff --git a/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_triangulation_simplex_3.h b/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_triangulation_simplex_3.h index 354b3934cb54..261276c8c15b 100644 --- a/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_triangulation_simplex_3.h +++ b/Triangulation_3/test/Triangulation_3/include/CGAL/_test_cls_triangulation_simplex_3.h @@ -61,7 +61,7 @@ _test_cls_triangulation_simplex_3(const Triangulation &) //######################################################################## Cls t; - // Initialise to a 3D triangulation: + // initialize to a 3D triangulation: t.insert(Point(0,0,0)); t.insert(Point(1,0,0)); t.insert(Point(0,1,0)); From 151f612fb74e10f4515687545de721812acda6e9 Mon Sep 17 00:00:00 2001 From: albert-github Date: Sat, 5 Oct 2024 11:46:51 +0200 Subject: [PATCH 19/34] Update Nef_2/include/CGAL/Nef_2/PM_point_locator.h You found that problem quickly!!! Thanks. Must have been the sheer amount of changes. Co-authored-by: Andreas Fabri --- Nef_2/include/CGAL/Nef_2/PM_point_locator.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Nef_2/include/CGAL/Nef_2/PM_point_locator.h b/Nef_2/include/CGAL/Nef_2/PM_point_locator.h index 886e13a12e90..7777ff293db5 100644 --- a/Nef_2/include/CGAL/Nef_2/PM_point_locator.h +++ b/Nef_2/include/CGAL/Nef_2/PM_point_locator.h @@ -536,7 +536,7 @@ class PM_point_locator : public The efficiency of this point location module is mostly based on heuristics. Therefore worst case bounds are not very expressive. The query operations take up to linear time for subsequent query - operations though they are better in practize. They trigger a one-time + operations though they are better in practice. They trigger a one-time initialization which needs worst case $O(n^2)$ time though runtime tests often show subquadratic results. The necessary space for the query structure is subsumed in the storage space $O(n)$ of the input From bb51556a64d47c45fa727a41cd0b6246c1dc4eb0 Mon Sep 17 00:00:00 2001 From: albert-github Date: Sat, 5 Oct 2024 11:57:54 +0200 Subject: [PATCH 20/34] issue #8515 Spelling mistakes found checking `en-GB` to `en-US` After review. --- .../include/CGAL/Sqrt_extension/Algebraic_extension_traits.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Number_types/include/CGAL/Sqrt_extension/Algebraic_extension_traits.h b/Number_types/include/CGAL/Sqrt_extension/Algebraic_extension_traits.h index f68c10fc786e..074c3517ed8d 100644 --- a/Number_types/include/CGAL/Sqrt_extension/Algebraic_extension_traits.h +++ b/Number_types/include/CGAL/Sqrt_extension/Algebraic_extension_traits.h @@ -22,7 +22,7 @@ template class Algebraic_extension_traits > { /* needed to 'add up' sqrt_extensions in iterator range such that all roots are collected in order to keep operation time minimal all scalar coeffs - are set to 1 by standardize. + are set to 1 by default. TODO .. find a better name, if you want to. */ template From 779df70cacb232402df532d09fcb7a57ce508d5b Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Mon, 7 Oct 2024 08:23:06 +0200 Subject: [PATCH 21/34] bugfix for empty point size/normal length sliders in context menu --- Lab/demo/Lab/Scene_points_with_normal_item.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Lab/demo/Lab/Scene_points_with_normal_item.cpp b/Lab/demo/Lab/Scene_points_with_normal_item.cpp index 0423a7d99b99..a75bf57bf791 100644 --- a/Lab/demo/Lab/Scene_points_with_normal_item.cpp +++ b/Lab/demo/Lab/Scene_points_with_normal_item.cpp @@ -850,6 +850,7 @@ QMenu* Scene_points_with_normal_item::contextMenu() container->menuAction()->setProperty("is_groupable", true); container->addAction(sliderAction); menu->addMenu(container); + d->normal_Slider->show(); } QMenu *container = new QMenu(tr("Points Size")); QWidgetAction *sliderAction = new QWidgetAction(nullptr); @@ -861,6 +862,7 @@ QMenu* Scene_points_with_normal_item::contextMenu() container->menuAction()->setProperty("is_groupable", true); container->addAction(sliderAction); menu->addMenu(container); + d->point_Slider->show(); d->actionDeleteSelection = menu->addAction(tr("Delete Selection")); d->actionDeleteSelection->setObjectName("actionDeleteSelection"); From 57858948d461b00f83e52236be08f04988cbb2b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Mon, 7 Oct 2024 15:41:32 +0200 Subject: [PATCH 22/34] fix deps --- Hash_map/package_info/Hash_map/dependencies | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Hash_map/package_info/Hash_map/dependencies b/Hash_map/package_info/Hash_map/dependencies index 25b30f26b795..b611de33d8e7 100644 --- a/Hash_map/package_info/Hash_map/dependencies +++ b/Hash_map/package_info/Hash_map/dependencies @@ -1,3 +1,5 @@ Hash_map Installation +Kernel_23 +Profiling_tools STL_Extension From 662330183c65e9bc7dd50fa79c1444667f9aa927 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Tue, 8 Oct 2024 09:01:00 +0200 Subject: [PATCH 23/34] removed unused parameter --- .../Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp b/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp index d0c694aa7461..f3d9561abda6 100644 --- a/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp +++ b/Lab/demo/Lab/Plugins/Point_set/Kinetic_surface_reconstruction_plugin.cpp @@ -360,7 +360,7 @@ private Q_SLOTS: dock_widget->partPolygonsPerNodeBox->setEnabled(state != 0); } - void onVisibilityChanged(bool visibility) { + void onVisibilityChanged(bool) { if (!dock_widget->isVisible()) return; std::cout << "in visibility changed" << std::endl; From 9cafc4dd4ca600a317b949f2c8b11daa3b518c79 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 9 Oct 2024 11:20:53 +0200 Subject: [PATCH 24/34] Embed cleanup.sh in the action It seems somebody removed it from the `cgal.github.io` repo. --- .github/workflows/build_doc.yml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_doc.yml b/.github/workflows/build_doc.yml index e0813de02369..cf65f46fcb93 100644 --- a/.github/workflows/build_doc.yml +++ b/.github/workflows/build_doc.yml @@ -195,8 +195,26 @@ jobs: done cd ./cgal.github.io echo "
  • Manual for PR ${PR_NUMBER} ($ROUND).
  • " >> ./index.html - ./cleanup.bash + + exit_code=0 + for d in */; do + pr=${d%/} + STATE=$(GH_REPO=CGAL/cgal gh pr view "$pr" --json state --jq .state) + if [ $? -ne 0 ]; then + >&2 echo "ERROR: Failed to retrieve state for #$pr" + exit_code=1 + continue + fi + echo "#$pr: $STATE" + if [ "$STATE" != "OPEN" ]; then + echo "-> Deleting ./$pr/" + git rm -rf --quiet "./$pr" || >&2 echo "ERROR: Failed to delete ./$pr/" && exit_code=1 + sed -e "/$pr/d" -i index.html || >&2 echo "ERROR: Failed to remove $pr from index.html" && exit_code=1 + fi + done + cat index.html | grep -F "$(echo */ | tr ' ' '\n')" > index.html git add ${PR_NUMBER}/$ROUND index.html && git commit -q --amend -m "sole commit" && git push -q -f -u origin master + exit $exit_code else echo "DoxygenError=This round already exists. Overwrite it with /force-build." >> $GITHUB_OUTPUT exit 1 From 2b3e0a709802ceb170d91b066161ad2d6fd4df7d Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Wed, 9 Oct 2024 11:28:05 +0200 Subject: [PATCH 25/34] Update build_doc.yml --- .github/workflows/build_doc.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build_doc.yml b/.github/workflows/build_doc.yml index cf65f46fcb93..705ead0028c1 100644 --- a/.github/workflows/build_doc.yml +++ b/.github/workflows/build_doc.yml @@ -214,7 +214,6 @@ jobs: done cat index.html | grep -F "$(echo */ | tr ' ' '\n')" > index.html git add ${PR_NUMBER}/$ROUND index.html && git commit -q --amend -m "sole commit" && git push -q -f -u origin master - exit $exit_code else echo "DoxygenError=This round already exists. Overwrite it with /force-build." >> $GITHUB_OUTPUT exit 1 From d3cb61284069f6a59c4a94d2e9ecb0261ce914f3 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Wed, 9 Oct 2024 12:51:14 +0200 Subject: [PATCH 26/34] using upper_bound_on_dart_ids() instead of number_of_darts() --- .../include/CGAL/Kinetic_surface_reconstruction_3.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h index 7df975df13c3..702589886d6f 100644 --- a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h +++ b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h @@ -1534,7 +1534,7 @@ class Kinetic_surface_reconstruction_3 { // Start extraction of a border from each dart (each dart is a 1/n-edge) // Search starting darts by searching faces //borders contains Attribute<0> handles casted to std::size_t - std::vector processed(m_lcc.number_of_darts(), false); + std::vector processed(m_lcc.upper_bound_on_dart_ids(), false); borders_per_region.resize(region_index.size()); From 3deebceb97bc7c1026622113315b0a311a1e4bb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Wed, 9 Oct 2024 16:00:51 +0200 Subject: [PATCH 27/34] Revert "Embed cleanup.sh in the action" This reverts commit 9cafc4dd4ca600a317b949f2c8b11daa3b518c79. --- .github/workflows/build_doc.yml | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/.github/workflows/build_doc.yml b/.github/workflows/build_doc.yml index 705ead0028c1..e0813de02369 100644 --- a/.github/workflows/build_doc.yml +++ b/.github/workflows/build_doc.yml @@ -195,24 +195,7 @@ jobs: done cd ./cgal.github.io echo "
  • Manual for PR ${PR_NUMBER} ($ROUND).
  • " >> ./index.html - - exit_code=0 - for d in */; do - pr=${d%/} - STATE=$(GH_REPO=CGAL/cgal gh pr view "$pr" --json state --jq .state) - if [ $? -ne 0 ]; then - >&2 echo "ERROR: Failed to retrieve state for #$pr" - exit_code=1 - continue - fi - echo "#$pr: $STATE" - if [ "$STATE" != "OPEN" ]; then - echo "-> Deleting ./$pr/" - git rm -rf --quiet "./$pr" || >&2 echo "ERROR: Failed to delete ./$pr/" && exit_code=1 - sed -e "/$pr/d" -i index.html || >&2 echo "ERROR: Failed to remove $pr from index.html" && exit_code=1 - fi - done - cat index.html | grep -F "$(echo */ | tr ' ' '\n')" > index.html + ./cleanup.bash git add ${PR_NUMBER}/$ROUND index.html && git commit -q --amend -m "sole commit" && git push -q -f -u origin master else echo "DoxygenError=This round already exists. Overwrite it with /force-build." >> $GITHUB_OUTPUT From 90e52d68f29068807585781921cfdee93fbb19d0 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Thu, 10 Oct 2024 12:56:54 +0200 Subject: [PATCH 28/34] documented that RegionType::Item and NeighborQuery::Item need to be hashable removed internal from example --- .../doc/Shape_detection/Concepts/NeighborQuery.h | 2 +- .../doc/Shape_detection/Concepts/RegionType.h | 2 +- .../region_growing_with_custom_classes.cpp | 9 ++++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Shape_detection/doc/Shape_detection/Concepts/NeighborQuery.h b/Shape_detection/doc/Shape_detection/Concepts/NeighborQuery.h index 5495e5d0c9a9..ed56b4bd8ea0 100644 --- a/Shape_detection/doc/Shape_detection/Concepts/NeighborQuery.h +++ b/Shape_detection/doc/Shape_detection/Concepts/NeighborQuery.h @@ -15,7 +15,7 @@ class NeighborQuery { public: - /// The reference type to the elements of the input range, e.g., a const_iterator of the input range. + /// The reference type to the elements of the input range, e.g., a const_iterator of the input range. Must be a model of `Hashable`. typedef unspecified_type Item; /*! diff --git a/Shape_detection/doc/Shape_detection/Concepts/RegionType.h b/Shape_detection/doc/Shape_detection/Concepts/RegionType.h index f1366dc8aba6..b178993f8839 100644 --- a/Shape_detection/doc/Shape_detection/Concepts/RegionType.h +++ b/Shape_detection/doc/Shape_detection/Concepts/RegionType.h @@ -23,7 +23,7 @@ class RegionType { /// The parameters of the primitive covering the region. typedef unspecified_type Primitive; - /// The reference type to the elements of the input range, e.g., a const_iterator of the input range. + /// The reference type to the elements of the input range, e.g., a const_iterator of the input range. Must be a model of `Hashable`. typedef unspecified_type Item; // The region types is defined by a vector of Items. diff --git a/Shape_detection/examples/Shape_detection/region_growing_with_custom_classes.cpp b/Shape_detection/examples/Shape_detection/region_growing_with_custom_classes.cpp index a1d32efa020f..f7058906cfeb 100644 --- a/Shape_detection/examples/Shape_detection/region_growing_with_custom_classes.cpp +++ b/Shape_detection/examples/Shape_detection/region_growing_with_custom_classes.cpp @@ -69,7 +69,14 @@ namespace Custom { using Item = std::vector::const_iterator; using Region = std::vector; - using Region_unordered_map = std::unordered_map >; + struct hash_item { + std::size_t operator()(Item i) const { + using boost::hash_value; + return boost::hash_value(i.operator->()); + } + }; + + using Region_unordered_map = std::unordered_map; using Region_index_map = boost::associative_property_map; Region_index_map region_index_map() { From 133934f7b617a8b22af52a9c5bf3183ef0742e91 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 10 Oct 2024 13:19:23 +0100 Subject: [PATCH 29/34] Use --- .../examples/Straight_skeleton_2/include/CGAL/input_helpers.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Straight_skeleton_2/examples/Straight_skeleton_2/include/CGAL/input_helpers.h b/Straight_skeleton_2/examples/Straight_skeleton_2/include/CGAL/input_helpers.h index ad41ff7a91f7..d459b60127c7 100644 --- a/Straight_skeleton_2/examples/Straight_skeleton_2/include/CGAL/input_helpers.h +++ b/Straight_skeleton_2/examples/Straight_skeleton_2/include/CGAL/input_helpers.h @@ -19,6 +19,7 @@ #include #include #include +#include template bool read_dat_polygon(const char* filename, @@ -36,7 +37,7 @@ bool read_dat_polygon(const char* filename, } bool is_number_of_CC_in_input = false; - if(CGAL::IO::internal::get_file_extension(filename) == "poly") + if(std::filesystem::path(filename).extension().string() == ".poly") { is_number_of_CC_in_input = true; } From 1d6b81d0150f5ae3e83b7afaef10d539780c1157 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 10 Oct 2024 13:20:54 +0100 Subject: [PATCH 30/34] cleanup in Polygon_repair/test --- .../Polygon_repair/repair_polygon_2_test.cpp | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/Polygon_repair/test/Polygon_repair/repair_polygon_2_test.cpp b/Polygon_repair/test/Polygon_repair/repair_polygon_2_test.cpp index 1f7e022becf0..b1293cebe8a9 100644 --- a/Polygon_repair/test/Polygon_repair/repair_polygon_2_test.cpp +++ b/Polygon_repair/test/Polygon_repair/repair_polygon_2_test.cpp @@ -4,18 +4,8 @@ #include -// work around for old compilers (Apple clang < 11 for example) -#define HAS_FILESYSTEM 1 -#if defined(__has_include) -#if !__has_include() -#undef HAS_FILESYSTEM -#define HAS_FILESYSTEM 0 -#endif -#endif -#if HAS_FILESYSTEM - #include #include #include @@ -94,12 +84,3 @@ int main() { return 0; } -#else - -int main() -{ - std::cout << "Warning: filesystem feature is not present on the system, nothing will be tested\n"; - return 0; -} - -#endif From 1c50e0bedeaa12100be6f7383b2ec81afdeabd66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Thu, 10 Oct 2024 14:21:34 +0200 Subject: [PATCH 31/34] Mac OS X cleaning --- .gitattributes | 1 - .gitignore | 2 +- .../doc/Documentation/Third_party.txt | 2 +- Installation/cmake/modules/FindCORE.cmake | 4 +- Installation/cmake/modules/FindGMP.cmake | 2 - Installation/cmake/modules/FindGMPXX.cmake | 2 - Installation/cmake/modules/FindMPFR.cmake | 2 - Installation/include/CGAL/config.h | 14 --- MacOSX/auxiliary/cgal_app.icns | Bin 418952 -> 0 bytes MacOSX/package_info/MacOSX/copyright | 1 - MacOSX/package_info/MacOSX/description.txt | 3 - MacOSX/package_info/MacOSX/maintainer | 1 - MacOSX/scripts/cgal_make_macosx_app | 102 ------------------ Profiling_tools/include/CGAL/Memory_sizer.h | 2 +- .../developer_scripts/create_macosx_installer | 78 -------------- copyright | 1 - 16 files changed, 4 insertions(+), 213 deletions(-) delete mode 100644 MacOSX/auxiliary/cgal_app.icns delete mode 100644 MacOSX/package_info/MacOSX/copyright delete mode 100644 MacOSX/package_info/MacOSX/description.txt delete mode 100644 MacOSX/package_info/MacOSX/maintainer delete mode 100755 MacOSX/scripts/cgal_make_macosx_app delete mode 100755 Scripts/developer_scripts/create_macosx_installer diff --git a/.gitattributes b/.gitattributes index 38320ad4f0b1..4211b302eb19 100644 --- a/.gitattributes +++ b/.gitattributes @@ -58,7 +58,6 @@ Scripts/developer_scripts/check_svn_keywords text eol=lf Scripts/developer_scripts/create_cgal_test text eol=lf Scripts/developer_scripts/create_cgal_test_with_cmake text eol=lf Scripts/developer_scripts/create_internal_release text eol=lf -Scripts/developer_scripts/create_macosx_installer text eol=lf Scripts/developer_scripts/create_new_release text eol=lf Scripts/developer_scripts/detect_files_with_mixed_eol_styles text eol=lf Scripts/developer_scripts/detect_packages_licenses text eol=lf diff --git a/.gitignore b/.gitignore index 90f003227c6f..b6fe952fd56b 100644 --- a/.gitignore +++ b/.gitignore @@ -1058,7 +1058,7 @@ cmake_install.cmake *~ .#* -# MacOS file https://en.wikipedia.org/wiki/.DS_Store +# macOS file https://en.wikipedia.org/wiki/.DS_Store .DS_Store # Binaries: diff --git a/Documentation/doc/Documentation/Third_party.txt b/Documentation/doc/Documentation/Third_party.txt index 0a47a9f2dd60..f94711ba8d20 100644 --- a/Documentation/doc/Documentation/Third_party.txt +++ b/Documentation/doc/Documentation/Third_party.txt @@ -15,7 +15,7 @@ supporting C++17 or later. | | `Clang` \cgalFootnote{\cgalFootnoteCode{https://clang.llvm.org/}} compiler version 15.0.7 | | \ms Windows | \gnu `g++` 11.4.0 or later\cgalFootnote{\cgalFootnoteCode{https://gcc.gnu.org/}} | | | \ms Visual `C++` 15.9, 16.10, 17.0 (\visualstudio 2017, 2019, and 2022)\cgalFootnote{\cgalFootnoteCode{https://visualstudio.microsoft.com/}} | -| MacOS X | \gnu `g++` 11.4.0 or later\cgalFootnote{\cgalFootnoteCode{https://gcc.gnu.org/}} | +| macOS | \gnu `g++` 11.4.0 or later\cgalFootnote{\cgalFootnoteCode{https://gcc.gnu.org/}} | | | Apple `Clang` compiler versions 10.0.1, 12.0.5, and 15.0.0 | diff --git a/Installation/cmake/modules/FindCORE.cmake b/Installation/cmake/modules/FindCORE.cmake index 6effa1d5e520..adb2ad05f15f 100644 --- a/Installation/cmake/modules/FindCORE.cmake +++ b/Installation/cmake/modules/FindCORE.cmake @@ -3,8 +3,6 @@ # CORE_INCLUDE_DIR - the CORE include directory # CORE_LIBRARIES - Libraries needed to use CORE -# TODO: support Windows and MacOSX - # CORE needs GMP include(FindPackageHandleStandardArgs) @@ -17,7 +15,7 @@ if(GMP_FOUND) find_path(CORE_INCLUDE_DIR NAMES CORE.h DOC "The directory containing the CORE include files") find_library(CORE_LIBRARIES NAMES core++ DOC "Path to the core++ library") - + get_filename_component(CORE_LIBRARIES_DIR ${CORE_LIBRARIES} PATH) FIND_PACKAGE_HANDLE_STANDARD_ARGS(CORE "DEFAULT_MSG" CORE_LIBRARIES CORE_INCLUDE_DIR ) diff --git a/Installation/cmake/modules/FindGMP.cmake b/Installation/cmake/modules/FindGMP.cmake index f452c0287f7e..38108f3420a1 100644 --- a/Installation/cmake/modules/FindGMP.cmake +++ b/Installation/cmake/modules/FindGMP.cmake @@ -5,8 +5,6 @@ # GMP_LIBRARIES_DIR - directory where the GMP libraries are located # GMP_LIBRARIES - Link these to use GMP -# TODO: support MacOSX - include(FindPackageHandleStandardArgs) include(${CMAKE_CURRENT_LIST_DIR}/CGAL_GeneratorSpecificSettings.cmake) diff --git a/Installation/cmake/modules/FindGMPXX.cmake b/Installation/cmake/modules/FindGMPXX.cmake index 277e4b19ef19..ce05fd703462 100644 --- a/Installation/cmake/modules/FindGMPXX.cmake +++ b/Installation/cmake/modules/FindGMPXX.cmake @@ -4,8 +4,6 @@ # GMPXX_INCLUDE_DIR - the GMPXX include directory # GMPXX_LIBRARIES - Libraries needed to use GMPXX -# TODO: support Windows and MacOSX - # GMPXX needs GMP find_package( GMP QUIET ) diff --git a/Installation/cmake/modules/FindMPFR.cmake b/Installation/cmake/modules/FindMPFR.cmake index 4d1bc43553d8..b0507120ce05 100644 --- a/Installation/cmake/modules/FindMPFR.cmake +++ b/Installation/cmake/modules/FindMPFR.cmake @@ -4,8 +4,6 @@ # MPFR_LIBRARIES_DIR - Directory where the MPFR libraries are located # MPFR_LIBRARIES - the MPFR libraries -# TODO: support MacOSX - include(FindPackageHandleStandardArgs) include(${CMAKE_CURRENT_LIST_DIR}/CGAL_GeneratorSpecificSettings.cmake) diff --git a/Installation/include/CGAL/config.h b/Installation/include/CGAL/config.h index bd5dafbf0171..3506137af1a4 100644 --- a/Installation/include/CGAL/config.h +++ b/Installation/include/CGAL/config.h @@ -243,20 +243,6 @@ # define CGAL_SUNPRO_INITIALIZE(C) #endif -//----------------------------------------------------------------------// -// MacOSX specific. -//----------------------------------------------------------------------// - -#ifdef __APPLE__ -# if defined(__GNUG__) && (__GNUG__ == 4) && (__GNUC_MINOR__ == 0) \ - && defined(__OPTIMIZE__) && !defined(CGAL_NO_WARNING_FOR_MACOSX_GCC_4_0_BUG) -# warning "Your configuration may exhibit run-time errors in CGAL code" -# warning "This appears with g++ 4.0 on MacOSX when optimizing" -# warning "You can disable this warning using -DCGAL_NO_WARNING_FOR_MACOSX_GCC_4_0_BUG" -# warning "For more information, see https://www.cgal.org/FAQ.html#mac_optimization_bug" -# endif -#endif - //-------------------------------------------------------------------// // When the global min and max are no longer defined (as macros) // because of NOMINMAX flag definition, we define our own global diff --git a/MacOSX/auxiliary/cgal_app.icns b/MacOSX/auxiliary/cgal_app.icns deleted file mode 100644 index 19cc33fadb1572b59654b760a69232fd7e5e5137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 418952 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%0D9WfNse0x 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
    e_>Z2 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 diff --git a/MacOSX/scripts/cgal_make_macosx_app b/MacOSX/scripts/cgal_make_macosx_app deleted file mode 100755 index 045cec21c0a2..000000000000 --- a/MacOSX/scripts/cgal_make_macosx_app +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2005,2006,2013 -# Foundation for Research and Technology-Hellas (Greece). -# All rights reserved. -# -# This file is part of CGAL (www.cgal.org); you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public License as -# published by the Free Software Foundation; version 3 of the License, -# or (at your option) any later version. -# -# Licensees holding a valid commercial license may use this file in -# accordance with the commercial license agreement provided with the software. -# -# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -# -# $URL$ -# $Id$ -# SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-Commercial -# -# Authors: Herve Bronnimann -# Menelaos Karavelas -# Eric Berberich - -# This script creates the appropriate directory structure so that a CGAL -# Qt demo can be run on MacOSX - -usage() -{ - echo "Usage: cgal_make_macosx_app executable" -} - - -case $# in - 0) usage - exit 1 -esac - - -for i do - if [ -x "$i" ] ; then - EXECUTABLE=$i - else - usage - exit 1 - fi -done - -if [ -z "$EXECUTABLE.app" ] ; then - mkdir $EXECUTABLE.app -fi - -test -d $EXECUTABLE.app/Contents/MacOS/ || mkdir -p $EXECUTABLE.app/Contents/MacOS/ -strip $EXECUTABLE -cp $EXECUTABLE $EXECUTABLE.app/Contents/MacOS/$EXECUTABLE - -rm -f $EXECUTABLE.app/Contents/PkgInfo -echo "APPL????" > $EXECUTABLE.app/Contents/PkgInfo - -rm -f $EXECUTABLE.app/Contents/Info.plist -cat > $EXECUTABLE.app/Contents/Info.plist < - - - - CFBundleIconFile - cgal_app.icns - CFBundlePackageType - APPL - CFBundleGetInfoString - Created by CGAL - CFBundleSignature - ttxt - CFBundleExecutable - $EXECUTABLE -ENDINFO - -if [ -d "help" ] ; then -cat >> $EXECUTABLE.app/Contents/Info.plist <CFBundleHelpBookFolder - Help - CFBundleHelpBookName - Help -ENDINFO - test -d $EXECUTABLE.app/Contents/Resources/Help || mkdir -p $EXECUTABLE.app/Contents/Resources/Help - cp -r help/* $EXECUTABLE.app/Contents/Resources/Help - ln -s index.html $EXECUTABLE.app/Contents/Resources/Help/Help.html -fi - -cat >> $EXECUTABLE.app/Contents/Info.plist <NOTE - This file was generated by CGAL/scripts/cgal_make_macosx_app. - - -ENDINFO - -test -d $EXECUTABLE.app/Contents/Resources || mkdir -p $EXECUTABLE.app/Contents/Resources -DIR=$( cd "$( dirname "$0" )" && pwd ) -cp $DIR/../auxiliary/cgal_app.icns $EXECUTABLE.app/Contents/Resources -echo "created $EXECUTABLE.app ..." diff --git a/Profiling_tools/include/CGAL/Memory_sizer.h b/Profiling_tools/include/CGAL/Memory_sizer.h index 6d0551ef7f90..b7106f412e23 100644 --- a/Profiling_tools/include/CGAL/Memory_sizer.h +++ b/Profiling_tools/include/CGAL/Memory_sizer.h @@ -15,7 +15,7 @@ #include #include -// This has only been implemented for MacOSX/Darwin, Linux and VC++ for now. +// This has only been implemented for macOS/Darwin, Linux and VC++ for now. #if !defined _MSC_VER && !defined __linux__ && !defined __APPLE__ #include diff --git a/Scripts/developer_scripts/create_macosx_installer b/Scripts/developer_scripts/create_macosx_installer deleted file mode 100755 index 1fcdc60e1c93..000000000000 --- a/Scripts/developer_scripts/create_macosx_installer +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/tcsh -# -# create the MacOSX CGAL disk image and package -# -# For releases 3.2 and on -# -# The script assumes that the current directory is the MacOSX_Installer -# directory of the Maintenance package -# -# Author(s): Menelaos Karavelas, 2006 - -# Modify the following lines according to your release and configuration - -# modify the following line for your release -setenv CGALVER $2 - -# modify the following line to reflect the size of the disk image you -# want to create -setenv VOLSIZE 7m - -# modify the following lines if the MacOSX applications reside at different -# paths than the ones shown below -setenv HDIUTIL /usr/bin/hdiutil -setenv PACKAGEMAKERAPP /Developer/Applications/Utilities/PackageMaker.app -setenv PACKAGEMAKER ${PACKAGEMAKERAPP}/Contents/MacOS/PackageMaker - -# this is the directory where the script temporarily puts files -setenv TMP_ROOT /tmp/MacOSX_Installer - -####### DO NOT TOUCH ANYTHING BEYIND THIS POINT ####### -setenv CUR_DIR `pwd` -setenv VOLNAME CGAL-${CGALVER} - -# cleanup files that should not be there -rm -f ${VOLNAME}.dmg -rm -fr ${TMP_ROOT} - -# create a copy of the CGAL package structure -mkdir -p ${TMP_ROOT} -cp -rp Package_root ${TMP_ROOT} -cp -rp Resources ${TMP_ROOT} -cp -rp CGAL-absolute.pmproj ${TMP_ROOT} -cd ${TMP_ROOT} - -# copy the CGAL tarball at its correct place and uncompress it -cp -p $1 Package_root -cd Package_root -tar xvfz CGAL-${CGALVER}.tar.gz -rm -f CGAL-${CGALVER}.tar.gz - -# now the building phase starts -cd .. - -# build the package -${PACKAGEMAKER} -build -ds -proj CGAL-absolute.pmproj -p CGAL.pkg -v - -# create the disk image -${HDIUTIL} create -ov -size ${VOLSIZE} -fs HFS+ -type UDIF -volname ${VOLNAME} CGAL-tmp.dmg - -# mount the disk image -${HDIUTIL} attach CGAL-tmp.dmg - -# move the CGAL package to the disk image -mv CGAL.pkg /Volumes/${VOLNAME} - -# unmount the disk image -${HDIUTIL} detach /Volumes/${VOLNAME} - -# convert the disk image to a read-only one -${HDIUTIL} convert -ov CGAL-tmp.dmg -format UDRO -o CGAL-RO.dmg -rm -f CGAL-tmp.dmg - -# copy the converted disk image to the original directory -cp -p CGAL-RO.dmg ${CUR_DIR}/${VOLNAME}.dmg - -# cleanup temporary files -rm -fr ${TMP_ROOT} - diff --git a/copyright b/copyright index b32d3a58fc8a..79f539285786 100644 --- a/copyright +++ b/copyright @@ -69,7 +69,6 @@ R = RU Groningen LEDA ETIMU Largest_empty_rect_2 T Linear_cell_complex CNRS - MacOSX F Maintenance ETIMUG Manual ETIMU Manual_tools EIM, Modena Software, Silicon Graphics From 98d649fe8bfebf7d00d0a8048975d4fc1dfe485e Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Thu, 10 Oct 2024 13:25:36 +0100 Subject: [PATCH 32/34] And another one --- .../Straight_skeleton_2/include/CGAL/input_helpers.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Straight_skeleton_2/examples/Straight_skeleton_2/include/CGAL/input_helpers.h b/Straight_skeleton_2/examples/Straight_skeleton_2/include/CGAL/input_helpers.h index d459b60127c7..f4e3e7507a38 100644 --- a/Straight_skeleton_2/examples/Straight_skeleton_2/include/CGAL/input_helpers.h +++ b/Straight_skeleton_2/examples/Straight_skeleton_2/include/CGAL/input_helpers.h @@ -13,7 +13,6 @@ #include #include #include -#include #include #include @@ -110,8 +109,8 @@ template bool read_input_polygon(const char* filename, PolygonWithHoles& p) { - std::string ext = CGAL::IO::internal::get_file_extension(filename); - if(ext == "dat") + std::string ext = std::filesystem::path(filename).extension().string(); + if(ext == ".dat") { return read_dat_polygon(filename, p); } From 812a20a45a1aa701cb139b7c769279b596d57892 Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Thu, 10 Oct 2024 14:38:59 +0200 Subject: [PATCH 33/34] doc fix --- .../Shape_detection/Concepts/NeighborQuery.h | 2 +- .../doc/Shape_detection/Concepts/RegionType.h | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Shape_detection/doc/Shape_detection/Concepts/NeighborQuery.h b/Shape_detection/doc/Shape_detection/Concepts/NeighborQuery.h index ed56b4bd8ea0..f8f77632f1b7 100644 --- a/Shape_detection/doc/Shape_detection/Concepts/NeighborQuery.h +++ b/Shape_detection/doc/Shape_detection/Concepts/NeighborQuery.h @@ -15,7 +15,7 @@ class NeighborQuery { public: - /// The reference type to the elements of the input range, e.g., a const_iterator of the input range. Must be a model of `Hashable`. + /// The reference type to the elements of the input range, e.g., a `const_iterator` of the input range. Must be a model of `Hashable`. typedef unspecified_type Item; /*! diff --git a/Shape_detection/doc/Shape_detection/Concepts/RegionType.h b/Shape_detection/doc/Shape_detection/Concepts/RegionType.h index b178993f8839..6af2d59bf994 100644 --- a/Shape_detection/doc/Shape_detection/Concepts/RegionType.h +++ b/Shape_detection/doc/Shape_detection/Concepts/RegionType.h @@ -23,10 +23,10 @@ class RegionType { /// The parameters of the primitive covering the region. typedef unspecified_type Primitive; - /// The reference type to the elements of the input range, e.g., a const_iterator of the input range. Must be a model of `Hashable`. + /// The reference type to the elements of the input range, e.g., a `const_iterator` of the input range. Must be a model of `Hashable`. typedef unspecified_type Item; - // The region types is defined by a vector of Items. + // The Region type is defined by a `vector` of items. typedef std::vector Region; /*! @@ -37,11 +37,11 @@ class RegionType { typedef unspecified_type Region_index_map; /*! - checks if the item `i` can be added to the region represented by `region`. + checks if the `Item` `i` can be added to the `Region` represented by `region`. `CGAL::Shape_detection::Region_growing` calls this function each time when - trying to add a new item to a region. If this function returns `true`, the - item with the index `i`, is added to the region, otherwise ignored. + trying to add a new item to a `Region`. If this function returns `true`, the + item with the index `i`, is added to the `region`, otherwise ignored. */ bool is_part_of_region( const Item i, @@ -52,8 +52,8 @@ class RegionType { checks if `region` satisfies all necessary conditions. `CGAL::Shape_detection::Region_growing` calls this function at the end of each - propagation phase. If this function returns `true`, the region is accepted, - otherwise rejected. If the region is rejected, all its items are released and + propagation phase. If this function returns `true`, the `region` is accepted, + otherwise rejected. If the `region` is rejected, all its items are released and available for region growing again. */ bool is_valid_region( @@ -68,7 +68,7 @@ class RegionType { } /*! - enables to update any information about the region represented by the collection of Items `region`. + enables to update any information about the region represented by the collection of items `region`. `CGAL::Shape_detection::Region_growing` calls this function each time when a new seed item is selected. This case can be identified by checking the @@ -76,8 +76,8 @@ class RegionType { when enlarging the region. This case can be identified by checking the condition `region.size() > 1`. - This function also returns a Boolean at the first call when a new region - with one seed item is being created. When it is `true`, the new region is + This function also returns a boolean at the first call when a new `region` + with one seed item is being created. When it is `true`, the new `region` is further propagated, otherwise, it is rejected. */ bool update( From a755f851dc3c603c6be2d28245615e72740878bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Loriot?= Date: Thu, 10 Oct 2024 17:18:00 +0200 Subject: [PATCH 34/34] clean up --- REUSE.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/REUSE.toml b/REUSE.toml index 5cca2b91384e..4efaf5271c5d 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -45,7 +45,6 @@ path = [ "Installation/auxiliary/cgal_create_cmake_script.1", "Installation/auxiliary/gmp/README", "Installation/include/CGAL/license/gpl_package_list.txt", - "MacOSX/auxiliary/cgal_app.icns", "copyright", ] precedence = "aggregate"