Commit eeebe2234ddefea82c7205cba19e2cfebe5893b0

Authored by David Mayerich
1 parent fb0bc2f1

added comments to the rect class

Showing 1 changed file with 7 additions and 43 deletions   Show diff stats
math/rect.h
... ... @@ -61,62 +61,22 @@ public:
61 61 init();
62 62 }
63 63  
  64 + //create a rectangle given a size and position
64 65 CUDA_CALLABLE rect(T size, T z_pos = (T)0){
65 66 init(); //use the default setup
66 67 scale(size); //scale the rectangle
67 68 C[2] = z_pos;
68 69 }
69 70  
  71 + //create a rectangle from a center point, normal, and size
70 72 CUDA_CALLABLE rect(T size, vec<T, N> c, vec<T, N> n = vec<T, N>(0, 0, 1)){
71 73 init(); //start with the default setting
72 74 C = c;
73 75 scale(size); //scale the rectangle
74 76 normal(n); //orient
75   -
76 77 }
77 78  
78   - /*CUDA_CALLABLE rect(vec<T, N> a, vec<T, N> b, vec<T, N> c)
79   - {
80   - A = a;
81   - Y = b - a;
82   - X = c - a - Y;
83   -
84   - }*/
85   -
86   - /*******************************************************************
87   - Constructor - create a rect from a position, normal, and rotation
88   - *******************************************************************/
89   - /*CUDA_CALLABLE rect(stim::vec<T, N> c, stim::vec<T, N> normal, T width, T height, T theta)
90   - {
91   -
92   - //compute the X direction - start along world-space X
93   - Y = stim::vec<T, N>(0, 1, 0);
94   - if(Y == normal)
95   - Y = stim::vec<T, N>(0, 0, 1);
96   -
97   - X = Y.cross(normal).norm();
98   -
99   - std::cout<<X<<std::endl;
100   -
101   - //rotate the X axis by theta radians
102   - stim::quaternion<T> q;
103   - q.CreateRotation(theta, normal);
104   - X = q.toMatrix3() * X;
105   - Y = normal.cross(X);
106   -
107   - //normalize everything
108   - X = X.norm();
109   - Y = Y.norm();
110   -
111   - //scale to match the rect width and height
112   - X = X * width;
113   - Y = Y * height;
114   -
115   - //set the corner of the plane
116   - A = c - X * 0.5f - Y * 0.5f;
117   -
118   - std::cout<<X<<std::endl;
119   - }*/
  79 + //Pavel - write a constructor to create a rectangle given a center point (c), direction vector (v)
120 80  
121 81 //boolean comparison
122 82 bool operator==(const rect<T, N> & rhs)
... ... @@ -135,6 +95,7 @@ public:
135 95 return (X.cross(Y)).norm();
136 96 }
137 97  
  98 + //get the world space value given the planar coordinates a, b in [0, 1]
138 99 CUDA_CALLABLE stim::vec<T, N> p(T a, T b)
139 100 {
140 101 stim::vec<T, N> result;
... ... @@ -145,6 +106,7 @@ public:
145 106 return result;
146 107 }
147 108  
  109 + //parenthesis operator returns the world space given rectangular coordinates a and b in [0 1]
148 110 CUDA_CALLABLE stim::vec<T, N> operator()(T a, T b)
149 111 {
150 112 return p(a, b);
... ... @@ -162,6 +124,7 @@ public:
162 124  
163 125 }
164 126  
  127 + //scales the rectangle by a value rhs
165 128 CUDA_CALLABLE rect<T, N> operator*(T rhs)
166 129 {
167 130 //scales the plane by a scalar value
... ... @@ -174,6 +137,7 @@ public:
174 137  
175 138 }
176 139  
  140 + //computes the distance between the specified point and this rectangle
177 141 CUDA_CALLABLE T dist(vec<T, N> p)
178 142 {
179 143 //compute the distance between a point and this rect
... ...