10 #include "attribute_vector.h"
20 enum class QueryType {
63 std::vector<FaceKey> *boundary_faces =
nullptr;
69 const ISMesh * get_is_mesh();
74 void rebuild_boundary_cache();
78 std::set<NodeKey> neighborhood(
NodeKey from_node,
double max_distance);
81 std::set<NodeKey> neighborhood(
vec3 from,
double max_distance);
84 std::set<EdgeKey> edges(
const std::set<NodeKey> nodeKeys);
87 std::set<FaceKey> faces(
const std::set<EdgeKey> edgeKeys);
90 std::set<TetrahedronKey> tetrahedra(
const std::set<FaceKey> faceKeys);
94 void filter_subset(std::set<NodeKey> &nodes, std::set<EdgeKey> &edges, std::set<FaceKey> &faces, std::set<TetrahedronKey> &tets);
99 SimplexSet<K> connected(K initialKey, std::function<
bool(K k)> includeKey);
104 template <
typename K>
105 inline SimplexSet<K> Query::connected(K initialKey, std::function<
bool(K k)> includeKey) {
108 std::vector<K> q{initialKey};
116 explored[qKey] =
true;
118 if (includeKey(qKey)){
121 const auto & simplex = mesh->get(qKey);
122 auto boundary = simplex.get_boundary();
123 for (
auto b : boundary){
124 for (
auto bb : mesh->get(b).get_co_boundary()){
Definition: geometry.h:24
A 3D double vector.
Definition: Vec3d.h:26
Definition: attribute_vector.h:17