23#ifndef VCL_ALGORITHMS_MESH_STAT_SELECTION_H
24#define VCL_ALGORITHMS_MESH_STAT_SELECTION_H
26#include <vclib/mesh/requirements.h>
27#include <vclib/views/mesh.h>
33template<u
int ELEM_ID, MeshConcept MeshType>
34uint elementSelectionNumber(
const MeshType& m)
36 return std::ranges::distance(
37 m.template elements<ELEM_ID>() | views::selected);
42template<MeshConcept MeshType>
43uint vertexSelectionNumber(
const MeshType& m)
45 return detail::elementSelectionNumber<ElemId::VERTEX>(m);
48template<FaceMeshConcept MeshType>
49uint faceSelectionNumber(
const MeshType& m)
51 return detail::elementSelectionNumber<ElemId::FACE>(m);
54template<FaceMeshConcept MeshType>
55uint faceEdgesSelectionNumber(
const MeshType& m)
58 for (
const auto& f : m.
faces()) {
59 for (uint i = 0; i < f.vertexNumber(); ++i) {
60 if (f.edgeSelected(i)) {
68template<EdgeMeshConcept MeshType>
69uint edgeSelectionNumber(
const MeshType& m)
71 return detail::elementSelectionNumber<ElemId::EDGE>(m);
constexpr detail::FacesView faces
A view that allows to iterate overt the Face elements of an object.
Definition face.h:52