Unravel Engine C++ Reference
Loading...
Searching...
No Matches
parametric_path.cpp
Go to the documentation of this file.
1#include "parametric_path.hpp"
2
3using namespace generator;
4
5parametric_path_t::edges_t::edges_t(const parametric_path_t& path) : path_{&path}, i_{0}
6{
7}
8
10{
11 if(done())
12 throw std::out_of_range("Done!");
13 return edge_t{{i_, i_ + 1}};
14}
15
17{
18 return i_ == path_->segments_;
19}
20
22{
23 if(done())
24 throw std::out_of_range("Done!");
25 ++i_;
26}
27
28parametric_path_t::vertices_t::vertices_t(const parametric_path_t& path) : path_{&path}, i_{0}
29{
30}
31
33{
34 if(done())
35 throw std::out_of_range("Done!");
36
37 return path_->eval_(i_ * path_->delta_);
38}
39
41{
42 if(path_->segments_ == 0)
43 return true;
44 return i_ == path_->segments_ + 1;
45}
46
48{
49 if(done())
50 throw std::out_of_range("Done!");
51 ++i_;
52}
53
54parametric_path_t::parametric_path_t(const std::function<path_vertex_t(double)>& eval, int segments) noexcept
55 : eval_{std::move(eval)}
56 , segments_{segments}
57 , delta_{1.0 / segments}
58{
59}
60
62{
63 return edges_t{*this};
64}
65
67{
68 return vertices_t{*this};
69}
Path generated by evaluating callback functions at even intervals.
edges_t edges() const noexcept
vertices_t vertices() const noexcept
parametric_path_t(const std::function< path_vertex_t(double)> &eval, int segments=16) noexcept
const segment_list * segments