Wildmeshing Toolkit
ProjectOperation.hpp
Go to the documentation of this file.
1 #pragma once
2 
4 
5 #include <memory>
6 
7 namespace SimpleBVH {
8 class BVH;
9 }
10 
13 {
14 public:
16  std::pair<attribute::MeshAttributeHandle, attribute::MeshAttributeHandle>;
17 
19  std::shared_ptr<Operation> main_op,
20  const attribute::MeshAttributeHandle& project_to_mesh,
21  attribute::MeshAttributeHandle& child_mesh_coordinates);
22 
24  std::shared_ptr<Operation> main_op,
25  const std::vector<MeshConstrainPair>& mesh_constaint_pairs);
26 
27  std::vector<simplex::Simplex> execute(const simplex::Simplex& simplex) override;
28  PrimitiveType primitive_type() const override { return m_main_op->primitive_type(); }
29 
30 
31 private:
33  std::pair<attribute::MeshAttributeHandle, std::shared_ptr<SimpleBVH::BVH>>;
34 
35  const std::shared_ptr<wmtk::operations::Operation> m_main_op;
36  std::vector<BVHConstrainPair> m_bvh;
37 };
38 } // namespace wmtk::operations::composite
ProjectOperation(std::shared_ptr< Operation > main_op, const attribute::MeshAttributeHandle &project_to_mesh, attribute::MeshAttributeHandle &child_mesh_coordinates)
PrimitiveType primitive_type() const override
std::pair< attribute::MeshAttributeHandle, std::shared_ptr< SimpleBVH::BVH > > BVHConstrainPair
const std::shared_ptr< wmtk::operations::Operation > m_main_op
std::vector< simplex::Simplex > execute(const simplex::Simplex &simplex) override
returns an empty vector in case of failure
std::pair< attribute::MeshAttributeHandle, attribute::MeshAttributeHandle > MeshConstrainPair