Wildmeshing Toolkit
EnvelopeInvariant.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "Invariant.hpp"
4 
5 
6 #include <memory>
9 
10 namespace fastEnvelope {
11 class FastEnvelope;
12 }
13 namespace SimpleBVH {
14 class BVH;
15 }
16 
17 namespace wmtk::invariants {
18 
20 {
21 public:
23  const attribute::MeshAttributeHandle& envelope_mesh_coordinate,
24  double envelope_size,
25  const attribute::MeshAttributeHandle& coordinate);
26 
27  bool after(
28  const std::vector<Tuple>& top_dimension_tuples_before,
29  const std::vector<Tuple>& top_dimension_tuples_after) const override;
30 
31 private:
32  std::shared_ptr<fastEnvelope::FastEnvelope> m_envelope = nullptr;
33  std::shared_ptr<SimpleBVH::BVH> m_bvh = nullptr;
35 
36  const double m_envelope_size;
37 };
38 } // namespace wmtk::invariants
std::shared_ptr< fastEnvelope::FastEnvelope > m_envelope
bool after(const std::vector< Tuple > &top_dimension_tuples_before, const std::vector< Tuple > &top_dimension_tuples_after) const override
EnvelopeInvariant(const attribute::MeshAttributeHandle &envelope_mesh_coordinate, double envelope_size, const attribute::MeshAttributeHandle &coordinate)
std::shared_ptr< SimpleBVH::BVH > m_bvh
const attribute::MeshAttributeHandle m_coordinate_handle