63 Nurbs_curve(uint num_knots,
const float* knots, uint degree,
const std::vector<Vector>& ctl_points);
85 double _dN(
int n,
int d,
double t)
const;
86 double _N(
int n,
int d,
double t)
const;
103 const float* knots_s,
105 const float* knots_t,
108 const std::vector<std::vector<Vector> >& ctl_points);
178 std::vector<Vector> _ctl_points;
251 void print_svg()
const;
255 std::vector<kjb::Vector> _curve_points;
256 std::vector<kjb::Vector> _handle_1_points;
257 std::vector<kjb::Vector> _handle_2_points;
262 Polybezier_curve
subdivide(
const Polybezier_curve& curve,
double u);
264 bool operator==(
const Polybezier_curve& op1,
const Polybezier_curve& op2);
Point_type
Definition: m2_spline.h:195
kjb::Vector & get_handle_point_2(int index)
Definition: m2_spline.cpp:849
void symmetrize_handle_1(int index)
Definition: m2_spline.cpp:943
virtual Vector evaluate(double s, double t) const =0
Vector gradient_s(double s, double t) const
Definition: m2_spline.cpp:442
float * _knots_t
Definition: m2_spline.h:139
void insert(int index, const kjb::Vector &curve_pt, const kjb::Vector &handle_pt_1, const kjb::Vector &handle_pt_2)
Definition: m2_spline.cpp:816
void insert_at(int index, const Vector &control_point)
Definition: m2_spline.cpp:84
virtual Nurbs_surface & operator=(const Nurbs_surface &src)
Definition: m2_spline.cpp:411
void insert_curve_point(int index, const kjb::Vector &curve_pt)
Definition: m2_spline.cpp:804
Definition: m2_spline.h:97
uint _num_knots_t
Definition: m2_spline.h:137
Definition: m2_spline.h:153
const kjb::Vector & get_control_point(int index) const
Definition: m2_spline.cpp:658
Nurbs_curve to_nurbs() const
Convert to a mathematically equivalent nurbs curve.
Definition: m2_spline.cpp:663
Bezier_curve & operator=(const Bezier_curve &src)
Definition: m2_spline.cpp:615
Nurbs_surface()
Definition: m2_spline.cpp:323
kjb::Vector gradient(double u) const
Definition: m2_spline.cpp:634
Definition: m2_spline.h:59
void delete_curve_point(int index)
Definition: m2_spline.cpp:921
kjb::Vector & get_handle_point_1(int index)
Definition: m2_spline.cpp:839
virtual Bezier_curve * clone() const
Processes an Option from program command-line arguments.
Definition: m2_spline.cpp:621
kjb::Vector gradient(double u) const
Definition: m2_spline.cpp:164
virtual Nurbs_curve & operator=(const Nurbs_curve &src)
Definition: m2_spline.cpp:90
kjb::Vector evaluate(double u) const
Definition: m2_spline.cpp:750
This class implements vectors, in the linear-algebra sense, with real-valued elements.
Definition: m_vector.h:87
uint _num_knots_s
Definition: m2_spline.h:136
size_t dimension() const
Definition: m2_spline.cpp:745
Bezier_curve(int degree=3, int dimension=3)
Definition: m2_spline.cpp:600
virtual Nurbs_curve * clone() const
Processes an Option from program command-line arguments.
Definition: m2_spline.cpp:108
virtual Vector evaluate(double u) const =0
Definition: m2_spline.h:192
virtual double operator()(uint u, uint v, uint d) const
Definition: m2_spline.h:129
virtual Vector gradient(double u) const =0
uint _order
Definition: m2_spline.h:77
Abstract class to clone this object.
Definition: l_cloneable.h:45
void set_control_point(int index, const Vector &pt)
Definition: m2_spline.cpp:643
Definition: m2_spline.h:195
Definition: m2_spline.h:195
kjb::Vector & get_curve_point(int index)
Definition: m2_spline.cpp:829
virtual Nurbs_curve to_nurbs() const
Convert to a mathematically equivalent nurbs curve.
Definition: m2_spline.cpp:978
virtual double & operator()(uint u, uint v, uint d)
Definition: m2_spline.h:124
bool has_zero_length() const
Definition: m2_spline.cpp:190
static size_t encode_control_point(size_t curve_i, Point_type point_type)
Definition: m2_spline.cpp:119
void set_handle_point_1(int index, const kjb::Vector &pt)
Definition: m2_spline.cpp:901
kjb::Vector gradient(double u) const
Definition: m2_spline.cpp:799
Definition: m2_spline.h:34
Vector gradient_t(double s, double t) const
Definition: m2_spline.cpp:491
float * _knots_s
Definition: m2_spline.h:138
void set_handle_point_2(int index, const kjb::Vector &pt)
Definition: m2_spline.cpp:911
virtual ~Nurbs_curve()
Definition: m2_spline.cpp:79
virtual Nurbs_surface * clone() const
Processes an Option from program command-line arguments.
Definition: m2_spline.cpp:434
std::vector< std::vector< Vector > > _ctl_points
Definition: m2_spline.h:140
Abstract class to clone this object.
uint _order_t
Definition: m2_spline.h:135
static void decode_control_point(size_t i, size_t &curve_i, Point_type &point_type)
Definition: m2_spline.cpp:113
virtual ~Bezier_curve()
Definition: m2_spline.h:158
~Nurbs_surface()
Definition: m2_spline.cpp:405
bool operator==(const Int_matrix &op1, const Int_matrix::Impl_type &op2)
Test for exact equality between two matrices.
Definition: l_int_matrix.cpp:218
Polybezier_curve subdivide(const Polybezier_curve &c, double u)
Definition: m2_spline.cpp:1112
void swap(Polybezier_curve &other)
Definition: m2_spline.cpp:1104
Vector evaluate(double s, double t) const
Definition: m2_spline.cpp:558
Vector normal(double s, double t) const
Definition: m2_spline.cpp:547
size_t size() const
Definition: m2_spline.cpp:740
friend bool operator==(const Polybezier_curve &op1, const Polybezier_curve &op2)
Definition: m2_spline.cpp:1077
void reverse()
Definition: m2_spline.cpp:931
float * _knots
Definition: m2_spline.h:80
kjb::Vector evaluate(double u) const
Definition: m2_spline.cpp:626
uint _num_knots
Definition: m2_spline.h:79
get the indices of edges in each direction for i
Definition: APPgetLargeConnectedEdges.m:48
Definition: m2_spline.h:195
Definition: m2_spline.h:46
std::vector< Vector > _ctl_points
Definition: m2_spline.h:82
kjb::Vector evaluate(double u) const
Definition: m2_spline.cpp:138
void set_curve_point(int index, const kjb::Vector &pt)
Definition: m2_spline.cpp:896
Polybezier_curve(int dimension)
Definition: m2_spline.cpp:683
Definition for the Vector class, a thin wrapper on the KJB Vector struct and its related functionalit...
void symmetrize_handle_2(int index)
Definition: m2_spline.cpp:963
Polybezier_curve * clone() const
Processes an Option from program command-line arguments.
Definition: m2_spline.cpp:735
uint _order_s
Definition: m2_spline.h:134
kjb::Vector & get_control_point(int index)
Definition: m2_spline.cpp:859
Nurbs_curve()
Definition: m2_spline.cpp:20