Unravel Engine C++ Reference
Loading...
Searching...
No Matches
parametric_mesh.cpp
Go to the documentation of this file.
1
#include "
parametric_mesh.hpp
"
2
3
using namespace
generator
;
4
5
parametric_mesh_t::triangles_t::triangles_t(
const
parametric_mesh_t
& mesh) : mesh_{&mesh}, i_{0}, even_{false}
6
{
7
}
8
9
triangle_t
parametric_mesh_t::triangles_t::generate
()
const
10
{
11
if
(
done
())
12
throw
std::out_of_range(
"Done!"
);
13
14
triangle_t
triangle;
15
16
const
int
base = i_[1] * (mesh_->segments_[0] + 1) + i_[0];
17
18
if
(!even_)
19
{
20
triangle.
vertices
= {base, base + 1, base + mesh_->segments_[0] + 1};
21
}
22
else
23
{
24
triangle.
vertices
= {base + 1, base + mesh_->segments_[0] + 2, base + mesh_->segments_[0] + 1};
25
}
26
27
return
triangle;
28
}
29
30
bool
parametric_mesh_t::triangles_t::done
() const noexcept
31
{
32
if
(mesh_->segments_[0] == 0 || mesh_->segments_[1] == 0)
33
return
true
;
34
return
i_[1] == mesh_->segments_[1];
35
}
36
37
void
parametric_mesh_t::triangles_t::next
()
38
{
39
if
(done())
40
throw
std::out_of_range(
"Done!"
);
41
42
even_ = !even_;
43
44
if
(!even_)
45
{
46
++i_[0];
47
if
(i_[0] == mesh_->segments_[0])
48
{
49
i_[0] = 0;
50
++i_[1];
51
}
52
}
53
}
54
55
parametric_mesh_t::vertices_t::vertices_t(
const
parametric_mesh_t
& mesh) : mesh_{&mesh}, i_{0}
56
{
57
}
58
59
mesh_vertex_t
parametric_mesh_t::vertices_t::generate
()
const
60
{
61
if
(done())
62
throw
std::out_of_range(
"Done!"
);
63
64
return
mesh_->eval_({i_[0] * mesh_->delta_[0], i_[1] * mesh_->delta_[1]});
65
}
66
67
bool
parametric_mesh_t::vertices_t::done
() const noexcept
68
{
69
if
(mesh_->segments_[0] == 0 || mesh_->segments_[1] == 0)
70
return
true
;
71
return
i_[1] > mesh_->segments_[1];
72
}
73
74
void
parametric_mesh_t::vertices_t::next
()
75
{
76
if
(done())
77
throw
std::out_of_range(
"Done!"
);
78
79
++i_[0];
80
if
(i_[0] > mesh_->segments_[0])
81
{
82
i_[0] = 0;
83
++i_[1];
84
}
85
}
86
87
parametric_mesh_t::parametric_mesh_t
(
const
std::function<
mesh_vertex_t
(
const
gml::dvec2& t)>& eval,
88
const
gml::ivec2&
segments
) noexcept
89
: eval_{std::move(eval)}
90
, segments_{
segments
}
91
, delta_{1.0 /
segments
[0], 1.0 /
segments
[1]}
92
{
93
}
94
95
parametric_mesh_t::triangles_t
parametric_mesh_t::triangles
() const noexcept
96
{
97
return
triangles_t
{*
this
};
98
}
99
100
parametric_mesh_t::vertices_t
parametric_mesh_t::vertices
() const noexcept
101
{
102
return
vertices_t
{*
this
};
103
}
generator::mesh_vertex_t
Definition
mesh_vertex.hpp:10
generator::parametric_mesh_t::triangles_t
Definition
parametric_mesh.hpp:17
generator::parametric_mesh_t::triangles_t::done
bool done() const noexcept
Definition
parametric_mesh.cpp:30
generator::parametric_mesh_t::triangles_t::generate
triangle_t generate() const
Definition
parametric_mesh.cpp:9
generator::parametric_mesh_t::triangles_t::next
void next()
Definition
parametric_mesh.cpp:37
generator::parametric_mesh_t::vertices_t
Definition
parametric_mesh.hpp:36
generator::parametric_mesh_t::vertices_t::next
void next()
Definition
parametric_mesh.cpp:74
generator::parametric_mesh_t::vertices_t::generate
mesh_vertex_t generate() const
Definition
parametric_mesh.cpp:59
generator::parametric_mesh_t::vertices_t::done
bool done() const noexcept
Definition
parametric_mesh.cpp:67
generator::parametric_mesh_t
A mesh with values evaluated using a callback function.
Definition
parametric_mesh.hpp:14
generator::parametric_mesh_t::vertices
vertices_t vertices() const noexcept
Definition
parametric_mesh.cpp:100
generator::parametric_mesh_t::triangles
triangles_t triangles() const noexcept
Definition
parametric_mesh.cpp:95
generator::parametric_mesh_t::parametric_mesh_t
parametric_mesh_t(const std::function< mesh_vertex_t(const gml::dvec2 &t)> &eval, const gml::ivec2 &segments={16, 16}) noexcept
Definition
parametric_mesh.cpp:87
generator::triangle_t
Definition
triangle.hpp:10
generator::triangle_t::vertices
gml::ivec3 vertices
Zero based indices of the triangle vertices in counterclockwise order.
Definition
triangle.hpp:13
generator
Definition
any_generator.hpp:7
parametric_mesh.hpp
segments
const segment_list * segments
Definition
text_component.cpp:442
UnravelEngine
UnravelEngine
engine
engine
rendering
generator
parametric_mesh.cpp
Generated by
1.12.0