LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
tinysplinecpp.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "tinyspline.h"
4 #include <vector>
5 #include <string>
6 
7 namespace ts {
8 
10 
11 class DeBoorNet {
12 public:
13  /* Constructors & Destructors */
14  DeBoorNet();
15  DeBoorNet(const DeBoorNet& other);
16  ~DeBoorNet();
17 
18  /* Operators */
19  DeBoorNet& operator=(const DeBoorNet& other);
20 
21  /* Getter */
22  rational u() const;
23  size_t k() const;
24  size_t s() const;
25  size_t h() const;
26  size_t dim() const;
27  size_t nPoints() const;
28  std::vector<rational> points() const;
29  std::vector<rational> result() const;
30  tsDeBoorNet* data();
31 
32  /* C++11 features */
33 #ifndef TINYSPLINE_DISABLE_CXX11_FEATURES
34  DeBoorNet(DeBoorNet&& other);
35  DeBoorNet& operator=(DeBoorNet&& other);
36  void swap(DeBoorNet& other);
37  friend void swap(DeBoorNet &left, DeBoorNet &right) { left.swap(right); }
38 #endif
39 
40 private:
42 };
43 
44 class BSpline {
45 public:
46  /* Constructors & Destructors */
47  BSpline();
48  BSpline(const BSpline& other);
49  BSpline(const size_t deg, const size_t dim, const size_t nCtrlp,
50  const tsBSplineType type);
51  BSpline(const std::vector<rational> points, const size_t dim);
52  ~BSpline();
53 
54  /* Operators */
55  BSpline& operator=(const BSpline& other);
56  DeBoorNet operator()(const rational u) const;
57 
58  /* Getter */
59  size_t deg() const;
60  size_t order() const;
61  size_t dim() const;
62  size_t nCtrlp() const;
63  size_t nKnots() const;
64  std::vector<rational> ctrlp() const;
65  std::vector<rational> knots() const;
66  tsBSpline* data();
67  DeBoorNet evaluate(const rational u) const;
68 
69  /* Modifications */
70  void setCtrlp(const std::vector<rational> ctrlp);
71  void setKnots(const std::vector<rational> knots);
72 
73  /* Transformations */
74  BSpline setupKnots(const tsBSplineType type,
75  const rational min, const rational max) const;
76  BSpline insertKnot(const rational u, const size_t n) const;
77  BSpline resize(const int n, const int back) const;
78  BSpline split(const rational u) const;
79  BSpline buckle(const rational b) const;
80  BSpline toBeziers() const;
81  BSpline derive() const;
82 
83  /* C++11 features */
84 #ifndef TINYSPLINE_DISABLE_CXX11_FEATURES
85  BSpline(BSpline&& other);
86  BSpline& operator=(BSpline&& other);
87  void swap(BSpline& other);
88  friend void swap(BSpline &left, BSpline &right) { left.swap(right); }
89 #endif
90 
91 private:
93 };
94 
95 class Utils {
96 public:
97  static bool fequals(const rational x, const rational y);
98  static std::string enum_str(const tsError err);
99  static tsError str_enum(const std::string str);
100 
101 private:
102  Utils() {}
103 };
104 
105 }
static bool fequals(const rational x, const rational y)
void setKnots(const std::vector< rational > knots)
size_t dim() const
size_t s() const
BSpline toBeziers() const
size_t deg() const
float tsRational
Definition: tinyspline.h:19
static std::string enum_str(const tsError err)
size_t nKnots() const
DeBoorNet evaluate(const rational u) const
friend void swap(BSpline &left, BSpline &right)
Definition: tinysplinecpp.h:88
void swap(BSpline &other)
BSpline & operator=(const BSpline &other)
size_t order() const
DeBoorNet operator()(const rational u) const
BSpline insertKnot(const rational u, const size_t n) const
std::vector< rational > result() const
static tsError str_enum(const std::string str)
void setCtrlp(const std::vector< rational > ctrlp)
size_t nPoints() const
tsRational rational
Definition: tinysplinecpp.h:9
rational u() const
BSpline derive() const
tsDeBoorNet * data()
size_t nCtrlp() const
friend void swap(DeBoorNet &left, DeBoorNet &right)
Definition: tinysplinecpp.h:37
size_t h() const
size_t k() const
std::vector< rational > ctrlp() const
BSpline setupKnots(const tsBSplineType type, const rational min, const rational max) const
tsDeBoorNet deBoorNet
Definition: tinysplinecpp.h:41
BSpline buckle(const rational b) const
BSpline split(const rational u) const
size_t dim() const
void swap(DeBoorNet &other)
DeBoorNet & operator=(const DeBoorNet &other)
std::vector< rational > knots() const
tsBSpline * data()
std::vector< rational > points() const
BSpline resize(const int n, const int back) const
tsBSpline bspline
Definition: tinysplinecpp.h:92
tsError
Definition: tinyspline.h:41
tsBSplineType
Definition: tinyspline.h:61