goat3dgfx
annotate src/curve.h @ 22:92bfb0206969
- made all XFormNode functions virtual
- added XFormNode::get_parent()
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 28 Dec 2013 06:48:23 +0200 |
parents | 1873dfd13f2d |
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@15 | 9 namespace goatgfx { |
nuclear@15 | 10 |
nuclear@0 | 11 class Curve { |
nuclear@0 | 12 private: |
nuclear@0 | 13 std::string name; |
nuclear@0 | 14 |
nuclear@0 | 15 std::vector<Vector3> cv; |
nuclear@0 | 16 float thickness; |
nuclear@0 | 17 |
nuclear@0 | 18 int segm_subdiv, ring_subdiv; |
nuclear@0 | 19 |
nuclear@0 | 20 /// normalized arc-lengths of each control vertex from the beginning |
nuclear@0 | 21 mutable std::vector<float> length; |
nuclear@0 | 22 mutable bool lengths_valid; |
nuclear@0 | 23 |
nuclear@0 | 24 mutable Vector3 bbmin, bbmax; |
nuclear@0 | 25 mutable bool bbox_valid; |
nuclear@0 | 26 |
nuclear@0 | 27 mutable Mesh mesh; |
nuclear@0 | 28 mutable bool mesh_valid; |
nuclear@0 | 29 |
nuclear@0 | 30 float reparametrize(float t) const; |
nuclear@0 | 31 |
nuclear@0 | 32 void calc_cvlengths() const; |
nuclear@0 | 33 void update_mesh() const; |
nuclear@0 | 34 |
nuclear@0 | 35 public: |
nuclear@0 | 36 Curve(); |
nuclear@0 | 37 Curve(const Vector3 *points, int num_points); |
nuclear@0 | 38 Curve(const Vector2 *points, int num_points); |
nuclear@0 | 39 |
nuclear@0 | 40 void set_name(const char *name); |
nuclear@0 | 41 const char *get_name() const; |
nuclear@0 | 42 |
nuclear@0 | 43 bool empty() const; |
nuclear@0 | 44 |
nuclear@0 | 45 void set_thickness(float thickness); |
nuclear@0 | 46 void set_subdiv(int seg, int ring); |
nuclear@0 | 47 |
nuclear@0 | 48 void clear(); |
nuclear@0 | 49 void add_point(const Vector3 &pt); |
nuclear@0 | 50 Vector3 &get_point(int idx); |
nuclear@0 | 51 const Vector3 &get_point(int idx) const; |
nuclear@0 | 52 int get_count() const; |
nuclear@0 | 53 |
nuclear@0 | 54 Vector3 &operator[] (int idx); |
nuclear@0 | 55 const Vector3 &operator[] (int idx) const; |
nuclear@0 | 56 |
nuclear@0 | 57 void get_bbox(Vector3 *bbmin, Vector3 *bbmax) const; |
nuclear@0 | 58 void normalize(); |
nuclear@0 | 59 |
nuclear@0 | 60 Vector3 get_pos(float t) const; |
nuclear@0 | 61 Vector3 operator() (float t) const; |
nuclear@0 | 62 |
nuclear@0 | 63 void draw() const; |
nuclear@0 | 64 }; |
nuclear@0 | 65 |
nuclear@15 | 66 } // namespace goatgfx |
nuclear@15 | 67 |
nuclear@0 | 68 #endif // CURVE_H_ |