Unravel Engine C++ Reference
Loading...
Searching...
No Matches
parametric_shape.cpp
Go to the documentation of this file.
2
3using namespace generator;
4
5parametric_shape_t::edges_t::edges_t(const parametric_shape_t& shape) : shape_{&shape}, i_{0}
6{
7}
8
10{
11 if(done())
12 throw std::out_of_range("Done!");
13
14 return edge_t{{i_, i_ + 1}};
15}
16
18{
19 return i_ == shape_->segments_;
20}
21
23{
24 if(done())
25 throw std::out_of_range("Done!");
26 ++i_;
27}
28
30{
31 if(done())
32 throw std::out_of_range("Done!");
33
34 return shape_->eval_(i_ * shape_->delta_);
35}
36
37parametric_shape_t::vertices_t::vertices_t(const parametric_shape_t& shape) : shape_{&shape}, i_{0}
38{
39}
40
42{
43 if(shape_->segments_ == 0)
44 return true;
45 return i_ == shape_->segments_ + 1;
46}
47
49{
50 if(done())
51 throw std::out_of_range("Done!");
52 ++i_;
53}
54
55parametric_shape_t::parametric_shape_t(const std::function<shape_vertex_t(double)>& eval, int segments) noexcept
56 : eval_{std::move(eval)}
57 , segments_{segments}
58 , delta_{1.0 / segments}
59{
60}
61
63{
64 return edges_t{*this};
65}
66
A shape with values evaluated using a callback function.
parametric_shape_t(const std::function< shape_vertex_t(double)> &eval, int segments=16) noexcept
edges_t edges() const noexcept
vertices_t vertices() const noexcept
const segment_list * segments