Wildmeshing Toolkit
Loading...
Searching...
No Matches
volume_io.hpp
1#pragma once
2
3#include <wmtk/MeshData.hpp>
4
5#include <Eigen/Core>
6
7#include <array>
8#include <cstdint>
9#include <memory>
10#include <set>
11#include <string>
12#include <vector>
13
14namespace wmtk::components::tracking {
15
22{
23 std::vector<Eigen::Vector3d> vertices;
24 std::vector<std::array<uint64_t, 4>> tets;
25 std::vector<uint32_t> groups;
26 std::vector<std::set<std::string>> group_sets;
27};
30TetMeshData tet_mesh_data(const MeshData& m);
32MeshData read_tet_mesh(const std::string& path);
34TetMeshData read_tet_msh(const std::string& path);
35
40{
41public:
43 explicit TetLocator(std::shared_ptr<const TetMeshData> m);
44 const TetMeshData& mesh() const { return *m_mesh; }
47 std::pair<int64_t, Eigen::Vector4d> locate(const Eigen::Vector3d& p) const;
50 std::pair<int64_t, Eigen::Vector4d> locate(const Eigen::Vector3d& p, uint32_t group) const;
53 bool in_group(const Eigen::Vector3d& p, uint32_t group) const;
54
55private:
56 std::shared_ptr<const TetMeshData> m_mesh;
57 Eigen::Vector3d m_lo = Eigen::Vector3d::Zero();
58 double m_h = 1;
60 double m_eps = 0;
61 std::array<int64_t, 3> m_n = {{1, 1, 1}};
62 std::vector<std::vector<uint32_t>> m_cells;
63};
64
65} // namespace wmtk::components::tracking
Definition volume_io.hpp:40
std::pair< int64_t, Eigen::Vector4d > locate(const Eigen::Vector3d &p) const
Definition volume_io.cpp:127
bool in_group(const Eigen::Vector3d &p, uint32_t group) const
Definition volume_io.cpp:213
double m_eps
A rounding of the largest tet: the farthest a point is from a tet it is a rounding off.
Definition volume_io.hpp:60
Definition MeshData.hpp:48
Definition volume_io.hpp:22