Commit 8495a970270ff4fc04982ab2b510408f9a1b5cf3

Authored by Pavel Govyadinov
1 parent bf23ee36

added comments to cylinder

Showing 1 changed file with 30 additions and 6 deletions   Show diff stats
stim/visualization/cylinder.h
@@ -11,22 +11,26 @@ template<typename T> @@ -11,22 +11,26 @@ template<typename T>
11 class cylinder 11 class cylinder
12 { 12 {
13 private: 13 private:
14 - stim::circle<T> s;  
15 - std::vector< stim::vec<T> > pos;  
16 - std::vector< stim::vec<T> > mags;  
17 - std::vector< T > L; 14 + stim::circle<T> s; //an arbitrary circle
  15 + std::vector< stim::vec<T> > pos; //positions of the cylinder.
  16 + std::vector< stim::vec<T> > mags; //radii at each position
  17 + std::vector< T > L; //length of the cylinder at each position.
18 18
  19 + ///default init
19 void 20 void
20 init() 21 init()
21 { 22 {
22 23
23 } 24 }
24 25
  26 + ///inits the cylinder from a list of points (inP) and radii (inM)
25 void 27 void
26 init(std::vector<stim::vec<T> > inP, std::vector<stim::vec<T> > inM) 28 init(std::vector<stim::vec<T> > inP, std::vector<stim::vec<T> > inM)
27 { 29 {
28 pos = inP; 30 pos = inP;
29 mags = inM; 31 mags = inM;
  32 +
  33 + //calculate each L.
30 L.resize(pos.size()-1); 34 L.resize(pos.size()-1);
31 T temp = (T)0; 35 T temp = (T)0;
32 for(int i = 0; i < L.size()-1; i++) 36 for(int i = 0; i < L.size()-1; i++)
@@ -36,6 +40,7 @@ class cylinder @@ -36,6 +40,7 @@ class cylinder
36 } 40 }
37 } 41 }
38 42
  43 + ///returns the direction vector at point idx.
39 stim::vec<T> 44 stim::vec<T>
40 d(int idx) 45 d(int idx)
41 { 46 {
@@ -43,6 +48,7 @@ class cylinder @@ -43,6 +48,7 @@ class cylinder
43 48
44 } 49 }
45 50
  51 + ///returns the total length of the line at index j.
46 T 52 T
47 getl(int j) 53 getl(int j)
48 { 54 {
@@ -53,6 +59,8 @@ class cylinder @@ -53,6 +59,8 @@ class cylinder
53 } 59 }
54 } 60 }
55 61
  62 + ///finds the index of the point closest to the length l on the lower bound.
  63 + ///binary search.
56 int 64 int
57 findIdx(T l) 65 findIdx(T l)
58 { 66 {
@@ -76,13 +84,13 @@ class cylinder @@ -76,13 +84,13 @@ class cylinder
76 } 84 }
77 85
78 public: 86 public:
  87 + ///default constructor
79 cylinder() 88 cylinder()
80 { 89 {
81 90
82 } 91 }
83 92
84 ///constructor to create a cylinder from a set of points, radii, and the number of sides for the cylinder. 93 ///constructor to create a cylinder from a set of points, radii, and the number of sides for the cylinder.
85 - ///The higher the number of sides, the more rectangeles compose the surface of the cylinder.  
86 ///@param inP: Vector of stim vecs composing the points of the centerline. 94 ///@param inP: Vector of stim vecs composing the points of the centerline.
87 ///@param inM: Vector of stim vecs composing the radii of the centerline. 95 ///@param inM: Vector of stim vecs composing the radii of the centerline.
88 cylinder(std::vector<stim::vec<T> > inP, std::vector<stim::vec<T> > inM) 96 cylinder(std::vector<stim::vec<T> > inP, std::vector<stim::vec<T> > inM)
@@ -92,6 +100,8 @@ class cylinder @@ -92,6 +100,8 @@ class cylinder
92 100
93 101
94 ///Returns a position vector at the given p-value (p value ranges from 0 to 1). 102 ///Returns a position vector at the given p-value (p value ranges from 0 to 1).
  103 + ///interpolates the position along the line.
  104 + ///@param pvalue: the location of the in the cylinder, from 0 (beginning to 1).
95 stim::vec<T> 105 stim::vec<T>
96 p(T pvalue) 106 p(T pvalue)
97 { 107 {
@@ -102,6 +112,10 @@ class cylinder @@ -102,6 +112,10 @@ class cylinder
102 return (pos[idx] + (pos[idx+1]-pos[idx])*((l-L[idx])/(L[idx+1]- L[idx]))); 112 return (pos[idx] + (pos[idx+1]-pos[idx])*((l-L[idx])/(L[idx+1]- L[idx])));
103 } 113 }
104 114
  115 + ///Returns a position vector at the given length into the fiber (based on the pvalue).
  116 + ///Interpolates the radius along the line.
  117 + ///@param l: the location of the in the cylinder.
  118 + ///@param idx: integer location of the point closest to l but prior to it.
105 stim::vec<T> 119 stim::vec<T>
106 p(T l, int idx) 120 p(T l, int idx)
107 { 121 {
@@ -109,6 +123,8 @@ class cylinder @@ -109,6 +123,8 @@ class cylinder
109 } 123 }
110 124
111 ///Returns a radius at the given p-value (p value ranges from 0 to 1). 125 ///Returns a radius at the given p-value (p value ranges from 0 to 1).
  126 + ///interpolates the radius along the line.
  127 + ///@param pvalue: the location of the in the cylinder, from 0 (beginning to 1).
112 T 128 T
113 r(T pvalue) 129 r(T pvalue)
114 { 130 {
@@ -119,6 +135,10 @@ class cylinder @@ -119,6 +135,10 @@ class cylinder
119 return (mags[idx] + (mags[idx+1]-mags[idx])*((l-L[idx])/(L[idx+1]- L[idx]))); 135 return (mags[idx] + (mags[idx+1]-mags[idx])*((l-L[idx])/(L[idx+1]- L[idx])));
120 } 136 }
121 137
  138 + ///Returns a radius at the given length into the fiber (based on the pvalue).
  139 + ///Interpolates the position along the line.
  140 + ///@param l: the location of the in the cylinder.
  141 + ///@param idx: integer location of the point closest to l but prior to it.
122 T 142 T
123 r(T l, int idx) 143 r(T l, int idx)
124 { 144 {
@@ -127,7 +147,9 @@ class cylinder @@ -127,7 +147,9 @@ class cylinder
127 147
128 148
129 ///returns the position of the point with a given pvalue and theta on the surface 149 ///returns the position of the point with a given pvalue and theta on the surface
130 - ///in x, y, z coordinates. Theta is in degrees from 0 to 360 150 + ///in x, y, z coordinates. Theta is in degrees from 0 to 360.
  151 + ///@param pvalue: the location of the in the cylinder, from 0 (beginning to 1).
  152 + ///@param theta: the angle to the point of a circle.
131 stim::vec<T> 153 stim::vec<T>
132 surf(T pvalue, T theta) 154 surf(T pvalue, T theta)
133 { 155 {
@@ -142,6 +164,8 @@ class cylinder @@ -142,6 +164,8 @@ class cylinder
142 return(s.p(theta)); 164 return(s.p(theta));
143 } 165 }
144 166
  167 + ///returns a vector of points necessary to create a circle at every position in the fiber.
  168 + ///@param sides: the number of sides of each circle.
145 std::vector<std::vector<vec<T> > > 169 std::vector<std::vector<vec<T> > >
146 getPoints(int sides) 170 getPoints(int sides)
147 { 171 {