Commit fddfdc023620acde6c004027e7e8a8e8914596ef
1 parent
55417e1e
fixed aabb errors
Showing
3 changed files
with
83 additions
and
23 deletions
Show diff stats
stim/math/vec3.h
@@ -243,7 +243,7 @@ public: | @@ -243,7 +243,7 @@ public: | ||
243 | return false; | 243 | return false; |
244 | } | 244 | } |
245 | 245 | ||
246 | -//#ifndef __NVCC__ | 246 | +#ifndef __NVCC__ |
247 | /// Outputs the vector as a string | 247 | /// Outputs the vector as a string |
248 | std::string str() const{ | 248 | std::string str() const{ |
249 | std::stringstream ss; | 249 | std::stringstream ss; |
@@ -261,7 +261,7 @@ public: | @@ -261,7 +261,7 @@ public: | ||
261 | 261 | ||
262 | return ss.str(); | 262 | return ss.str(); |
263 | } | 263 | } |
264 | -//#endif | 264 | +#endif |
265 | 265 | ||
266 | size_t size(){ return 3; } | 266 | size_t size(){ return 3; } |
267 | 267 |
stim/visualization/aabb3.h
@@ -6,14 +6,14 @@ | @@ -6,14 +6,14 @@ | ||
6 | 6 | ||
7 | namespace stim{ | 7 | namespace stim{ |
8 | 8 | ||
9 | - template<typename T> | ||
10 | - using aabb3 = aabbn<T, 3>; | ||
11 | -/*/// Structure for a 3D axis aligned bounding box | 9 | + //template<typename T> |
10 | + //using aabb3 = aabbn<T, 3>; | ||
11 | +/// Structure for a 3D axis aligned bounding box | ||
12 | template<typename T> | 12 | template<typename T> |
13 | struct aabb3 : public aabbn<T, 3>{ | 13 | struct aabb3 : public aabbn<T, 3>{ |
14 | 14 | ||
15 | - aabb3() : aabbn() {} | ||
16 | - aabb3(T x0, T y0, T z0, T x1, T y1, T z1){ | 15 | + CUDA_CALLABLE aabb3() : aabbn() {} |
16 | + CUDA_CALLABLE aabb3(T x0, T y0, T z0, T x1, T y1, T z1){ | ||
17 | low[0] = x0; | 17 | low[0] = x0; |
18 | low[1] = y0; | 18 | low[1] = y0; |
19 | low[2] = z0; | 19 | low[2] = z0; |
@@ -22,11 +22,39 @@ struct aabb3 : public aabbn<T, 3>{ | @@ -22,11 +22,39 @@ struct aabb3 : public aabbn<T, 3>{ | ||
22 | high[2] = x2; | 22 | high[2] = x2; |
23 | } | 23 | } |
24 | 24 | ||
25 | - aabb3 aabbn<T, 3>() { | 25 | + CUDA_CALLABLE aabb3(T x, T y, T z) { |
26 | + low[0] = high[0] = x; | ||
27 | + low[1] = high[1] = y; | ||
28 | + low[2] = high[2] = z; | ||
29 | + } | ||
30 | + | ||
31 | + CUDA_CALLABLE void insert(T x, T y, T z) { | ||
32 | + T p[3]; | ||
33 | + p[0] = x; | ||
34 | + p[1] = y; | ||
35 | + p[2] = z; | ||
36 | + aabbn<T, 3>::insert(p); | ||
37 | + } | ||
26 | 38 | ||
39 | + CUDA_CALLABLE void trim_low(T x, T y, T z) { | ||
40 | + T p[3]; | ||
41 | + p[0] = x; | ||
42 | + p[1] = y; | ||
43 | + p[2] = z; | ||
44 | + aabbn<T, 3>::trim_low(p); | ||
27 | } | 45 | } |
28 | 46 | ||
29 | -};*/ | 47 | + CUDA_CALLABLE void trim_high(T x, T y, T z) { |
48 | + T p[3]; | ||
49 | + p[0] = x; | ||
50 | + p[1] = y; | ||
51 | + p[2] = z; | ||
52 | + aabbn<T, 3>::trim_high(p); | ||
53 | + } | ||
54 | + | ||
55 | + | ||
56 | + | ||
57 | +}; | ||
30 | 58 | ||
31 | } | 59 | } |
32 | 60 |
stim/visualization/aabbn.h
@@ -25,26 +25,58 @@ struct aabbn{ | @@ -25,26 +25,58 @@ struct aabbn{ | ||
25 | init(i); | 25 | init(i); |
26 | } | 26 | } |
27 | 27 | ||
28 | + /// For even inputs to the constructor, the input could be one point or a set of pairs of points | ||
28 | CUDA_CALLABLE aabbn(T x0, T x1) { | 29 | CUDA_CALLABLE aabbn(T x0, T x1) { |
29 | - low[0] = x0; | ||
30 | - high[0] = x1; | 30 | + if (D == 1) { |
31 | + low[0] = x0; | ||
32 | + high[0] = x1; | ||
33 | + } | ||
34 | + else if (D == 2) { | ||
35 | + low[0] = high[0] = x0; | ||
36 | + low[1] = high[1] = x1; | ||
37 | + } | ||
31 | } | 38 | } |
32 | 39 | ||
40 | + /// In the case of 3 inputs, this must be a 3D bounding box, so initialize to a box of size 0 at (x, y, z) | ||
41 | + /*CUDA_CALLABLE aabbn(T x, T y, T z) { | ||
42 | + low[0] = high[0] = x; | ||
43 | + low[1] = high[1] = y; | ||
44 | + low[2] = high[2] = z; | ||
45 | + }*/ | ||
46 | + | ||
33 | CUDA_CALLABLE aabbn(T x0, T y0, T x1, T y1) { | 47 | CUDA_CALLABLE aabbn(T x0, T y0, T x1, T y1) { |
34 | - low[0] = x0; | ||
35 | - high[0] = x1; | ||
36 | - low[1] = y0; | ||
37 | - high[1] = y1; | 48 | + if (D == 2) { |
49 | + low[0] = x0; | ||
50 | + high[0] = x1; | ||
51 | + low[1] = y0; | ||
52 | + high[1] = y1; | ||
53 | + } | ||
54 | + else if(D == 4){ | ||
55 | + low[0] = high[0] = x0; | ||
56 | + low[1] = high[1] = y0; | ||
57 | + low[2] = high[2] = x1; | ||
58 | + low[3] = high[3] = y1; | ||
59 | + } | ||
38 | } | 60 | } |
39 | 61 | ||
40 | - CUDA_CALLABLE aabbn(T x0, T y0, T z0, T x1, T y1, T z1) { | ||
41 | - low[0] = x0; | ||
42 | - high[0] = x1; | ||
43 | - low[1] = y0; | ||
44 | - high[1] = y1; | ||
45 | - low[2] = z0; | ||
46 | - high[2] = z1; | ||
47 | - } | 62 | + /*CUDA_CALLABLE aabbn(T x0, T y0, T z0, T x1, T y1, T z1) { |
63 | + if (D == 3) { | ||
64 | + low[0] = x0; | ||
65 | + high[0] = x1; | ||
66 | + low[1] = y0; | ||
67 | + high[1] = y1; | ||
68 | + low[2] = z0; | ||
69 | + high[2] = z1; | ||
70 | + } | ||
71 | + else if (D == 6) { | ||
72 | + low[0] = high[0] = x0; | ||
73 | + low[1] = high[1] = y0; | ||
74 | + low[2] = high[2] = z0; | ||
75 | + low[3] = high[3] = x1; | ||
76 | + low[4] = high[4] = y1; | ||
77 | + low[5] = high[5] = z1; | ||
78 | + } | ||
79 | + }*/ | ||
48 | 80 | ||
49 | 81 | ||
50 | //insert a point into the bounding box, growing the box appropriately | 82 | //insert a point into the bounding box, growing the box appropriately |