Libs/Optimize/Domain/MeshGeoEntry.h
Namespaces
| Name |
|---|
| shapeworks User usage reporting (telemetry) |
Classes
| Name | |
|---|---|
| struct | shapeworks::MeshGeoEntry |
Source code
```cpp
pragma once
include "robin_hood.h"
include
namespace shapeworks {
struct MeshGeoEntry {
// in "Full" mode, the entry contains geodesics to every vertex. Access via data_full
// in "Partial" mode, the entry only contains geodesics upto max_dist. Access via data_partial
enum Mode {
Full,
Partial,
};
Mode mode{Mode::Partial};
double max_dist{0.0};
robin_hood::unordered_flat_map
void clear() { mode = Mode::Partial;
max_dist = 0.0;
// calling `data_partial.clear()` doesn't free the backing memory, so we have to swap to an empty
robin_hood::unordered_flat_map<int, Eigen::Vector3d> new_data_partial;
std::swap(new_data_partial, data_partial);
data_full[0].resize(0);
data_full[1].resize(0);
data_full[2].resize(0);
}
bool is_full_mode() const { return mode == Mode::Full; }
void update_max_dist() { assert(is_full_mode()); // the caller most likely has a more efficient way to compute this if partial mode const auto max0 = data_full[0].maxCoeff(); const auto max1 = data_full[1].maxCoeff(); const auto max2 = data_full[2].maxCoeff(); max_dist = std::max({max0, max1, max2}); }
bool has_entry(int target) { return is_full_mode() || data_partial.find(target) != data_partial.end(); } };
}; ```
Updated on 2026-03-31 at 16:02:11 +0000