Commit 591f04ec6b06050229c27b58fc46acb37c434aa5
1 parent
d03b807e
fixed a very subtle constructor bug
Showing
2 changed files
with
7 additions
and
4 deletions
Show diff stats
stim/math/quaternion.h
... | ... | @@ -41,13 +41,14 @@ public: |
41 | 41 | z = u_hat[2]*(T)sin(theta/2); |
42 | 42 | } |
43 | 43 | |
44 | - CUDA_CALLABLE void CreateRotation(vec<T> from, vec<T> to){ | |
44 | + void CreateRotation(vec<T> from, vec<T> to){ | |
45 | 45 | |
46 | 46 | vec<T> r = from.cross(to); //compute the rotation vector |
47 | 47 | T theta = asin(r.len()); //compute the angle of the rotation about r |
48 | 48 | //deal with a zero vector (both k and kn point in the same direction) |
49 | - if(theta == (T)0) | |
49 | + if(theta == (T)0){ | |
50 | 50 | return; |
51 | + } | |
51 | 52 | |
52 | 53 | //create a quaternion to capture the rotation |
53 | 54 | CreateRotation(theta, r.norm()); | ... | ... |
stim/math/rect.h
... | ... | @@ -70,7 +70,7 @@ public: |
70 | 70 | ///@param c: x,y,z location of the center. |
71 | 71 | ///@param n: x,y,z direction of the normal. |
72 | 72 | CUDA_CALLABLE rect(vec<T> c, vec<T> n = vec<T>(0, 0, 1)) |
73 | - : plane<T>(n, c) | |
73 | + : plane<T>() | |
74 | 74 | { |
75 | 75 | init(); //start with the default setting |
76 | 76 | normal(n); //orient |
... | ... | @@ -81,10 +81,12 @@ public: |
81 | 81 | ///@param s: size of the rectangle. |
82 | 82 | ///@param n: x,y,z direction of the normal. |
83 | 83 | CUDA_CALLABLE rect(vec<T> c, T s, vec<T> n = vec<T>(0, 0, 1)) |
84 | - : plane<T>(n, c) | |
84 | + : plane<T>() | |
85 | 85 | { |
86 | 86 | init(); //start with the default setting |
87 | 87 | scale(s); |
88 | + center(c); | |
89 | + rotate(n, X, Y); | |
88 | 90 | } |
89 | 91 | |
90 | 92 | ///creates a rectangle from a centerpoint and an X and Y direction vectors. | ... | ... |