vrshoot
annotate src/curve.h @ 3:c179c72369be
rename candy->vr
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Mon, 03 Feb 2014 08:52:13 +0200 |
parents | |
children |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef CURVE_H_ |
nuclear@0 | 2 #define CURVE_H_ |
nuclear@0 | 3 |
nuclear@0 | 4 #include <string> |
nuclear@0 | 5 #include <vector> |
nuclear@0 | 6 #include "vmath/vmath.h" |
nuclear@0 | 7 #include "mesh.h" |
nuclear@0 | 8 |
nuclear@0 | 9 class Curve { |
nuclear@0 | 10 private: |
nuclear@0 | 11 std::string name; |
nuclear@0 | 12 |
nuclear@0 | 13 std::vector<Vector3> cv; |
nuclear@0 | 14 float thickness; |
nuclear@0 | 15 |
nuclear@0 | 16 int segm_subdiv, ring_subdiv; |
nuclear@0 | 17 |
nuclear@0 | 18 /// normalized arc-lengths of each control vertex from the beginning |
nuclear@0 | 19 mutable std::vector<float> length; |
nuclear@0 | 20 mutable bool lengths_valid; |
nuclear@0 | 21 |
nuclear@0 | 22 mutable Vector3 bbmin, bbmax; |
nuclear@0 | 23 mutable bool bbox_valid; |
nuclear@0 | 24 |
nuclear@0 | 25 mutable Mesh mesh; |
nuclear@0 | 26 mutable bool mesh_valid; |
nuclear@0 | 27 |
nuclear@0 | 28 float reparametrize(float t) const; |
nuclear@0 | 29 |
nuclear@0 | 30 void calc_cvlengths() const; |
nuclear@0 | 31 void update_mesh() const; |
nuclear@0 | 32 |
nuclear@0 | 33 public: |
nuclear@0 | 34 Curve(); |
nuclear@0 | 35 Curve(const Vector3 *points, int num_points); |
nuclear@0 | 36 Curve(const Vector2 *points, int num_points); |
nuclear@0 | 37 |
nuclear@0 | 38 void set_name(const char *name); |
nuclear@0 | 39 const char *get_name() const; |
nuclear@0 | 40 |
nuclear@0 | 41 bool empty() const; |
nuclear@0 | 42 |
nuclear@0 | 43 void set_thickness(float thickness); |
nuclear@0 | 44 void set_subdiv(int seg, int ring); |
nuclear@0 | 45 |
nuclear@0 | 46 void clear(); |
nuclear@0 | 47 void add_point(const Vector3 &pt); |
nuclear@0 | 48 Vector3 &get_point(int idx); |
nuclear@0 | 49 const Vector3 &get_point(int idx) const; |
nuclear@0 | 50 int get_count() const; |
nuclear@0 | 51 |
nuclear@0 | 52 Vector3 &operator[] (int idx); |
nuclear@0 | 53 const Vector3 &operator[] (int idx) const; |
nuclear@0 | 54 |
nuclear@0 | 55 void get_bbox(Vector3 *bbmin, Vector3 *bbmax) const; |
nuclear@0 | 56 void normalize(); |
nuclear@0 | 57 |
nuclear@0 | 58 Vector3 get_pos(float t) const; |
nuclear@0 | 59 Vector3 operator() (float t) const; |
nuclear@0 | 60 |
nuclear@0 | 61 void draw() const; |
nuclear@0 | 62 }; |
nuclear@0 | 63 |
nuclear@0 | 64 #endif // CURVE_H_ |