Unravel Engine C++ Reference
Loading...
Searching...
No Matches
parametric_mesh.hpp
Go to the documentation of this file.
1#ifndef GENERATOR_PARAMETRICMESH_HPP
2#define GENERATOR_PARAMETRICMESH_HPP
3
4#include <functional>
5
6#include "mesh_vertex.hpp"
7#include "triangle.hpp"
8
9namespace generator
10{
11
14{
15public:
17 {
18 public:
19 triangle_t generate() const;
20 bool done() const noexcept;
21 void next();
22
23 private:
24 explicit triangles_t(const parametric_mesh_t& mesh);
25
26 const parametric_mesh_t* mesh_;
27
28 gml::ivec2 i_;
29
30 bool even_;
31
32 friend class parametric_mesh_t;
33 };
34
36 {
37 public:
38 mesh_vertex_t generate() const;
39 bool done() const noexcept;
40 void next();
41
42 private:
43 explicit vertices_t(const parametric_mesh_t& mesh);
44
45 const parametric_mesh_t* mesh_;
46
47 gml::ivec2 i_;
48
49 friend class parametric_mesh_t;
50 };
51
55 explicit parametric_mesh_t(const std::function<mesh_vertex_t(const gml::dvec2& t)>& eval,
56 const gml::ivec2& segments = {16, 16}) noexcept;
57
58 triangles_t triangles() const noexcept;
59
60 vertices_t vertices() const noexcept;
61
62private:
63 std::function<mesh_vertex_t(const gml::dvec2& t)> eval_;
64
65 gml::ivec2 segments_;
66
67 gml::dvec2 delta_;
68};
69} // namespace generator
70
71#endif
A mesh with values evaluated using a callback function.
vertices_t vertices() const noexcept
triangles_t triangles() const noexcept
parametric_mesh_t(const std::function< mesh_vertex_t(const gml::dvec2 &t)> &eval, const gml::ivec2 &segments={16, 16}) noexcept
Definition math.hpp:13
const segment_list * segments