Blame view

stim/visualization/gl_aaboundingbox.h 1.39 KB
9c97e126   David Mayerich   added an axis-ali...
1
2
3
  #ifndef STIM_GL_AABB
  #define STIM_GL_AABB
  
b3a38641   David Mayerich   added the ability...
4
5
  #include <stim/visualization/aaboundingbox.h>
  #include <GL/gl.h>
9c97e126   David Mayerich   added an axis-ali...
6
  
b7624d0d   Jiaming Guo   add function to h...
7
  namespace stim {
9c97e126   David Mayerich   added an axis-ali...
8
  
b7624d0d   Jiaming Guo   add function to h...
9
10
  	template <typename T>
  	class gl_aaboundingbox : public aaboundingbox<T> {
9c97e126   David Mayerich   added an axis-ali...
11
  
b7624d0d   Jiaming Guo   add function to h...
12
  	public:
9c97e126   David Mayerich   added an axis-ali...
13
  
b7624d0d   Jiaming Guo   add function to h...
14
15
  		using stim::aaboundingbox<T>::A;
  		using stim::aaboundingbox<T>::B;
2e0f052a   Pavel Govyadinov   minor changes to ...
16
  
b7624d0d   Jiaming Guo   add function to h...
17
18
  		//default constructor
  		gl_aaboundingbox() : stim::aaboundingbox<T>() {}
9c97e126   David Mayerich   added an axis-ali...
19
  
b7624d0d   Jiaming Guo   add function to h...
20
21
  		//constructor takes an AABB
  		gl_aaboundingbox(stim::aaboundingbox<T> b) : stim::aaboundingbox<T>(b) {}
9c97e126   David Mayerich   added an axis-ali...
22
23
  
  
b7624d0d   Jiaming Guo   add function to h...
24
25
  		/// Specifies vertices of the bounding box using CW winding. Use GL_LINE_LOOP for wireframe or GL_QUADS for a solid.
  		void glWire() {
9c97e126   David Mayerich   added an axis-ali...
26
  
b7624d0d   Jiaming Guo   add function to h...
27
28
  			//front plane (in A[2])
  			glBegin(GL_LINE_LOOP);
9c97e126   David Mayerich   added an axis-ali...
29
30
31
32
  			glVertex3f(A[0], A[1], A[2]);
  			glVertex3f(A[0], B[1], A[2]);
  			glVertex3f(B[0], B[1], A[2]);
  			glVertex3f(B[0], A[1], A[2]);
b7624d0d   Jiaming Guo   add function to h...
33
  			glEnd();
9c97e126   David Mayerich   added an axis-ali...
34
  
b7624d0d   Jiaming Guo   add function to h...
35
36
  			//back plane (in B[2])
  			glBegin(GL_LINE_LOOP);
9c97e126   David Mayerich   added an axis-ali...
37
38
  			glVertex3f(B[0], B[1], B[2]);
  			glVertex3f(A[0], B[1], B[2]);
b7624d0d   Jiaming Guo   add function to h...
39
  			glVertex3f(A[0], A[1], B[2]);
9c97e126   David Mayerich   added an axis-ali...
40
  			glVertex3f(B[0], A[1], B[2]);
b7624d0d   Jiaming Guo   add function to h...
41
  			glEnd();
c184655c   David Mayerich   fixed bugs in AAB...
42
  
b7624d0d   Jiaming Guo   add function to h...
43
44
  			//fill out the rest of the lines to connect the two faces
  			glBegin(GL_LINES);
c184655c   David Mayerich   fixed bugs in AAB...
45
46
47
48
49
50
51
52
  			glVertex3f(A[0], B[1], A[2]);
  			glVertex3f(A[0], B[1], B[2]);
  			glVertex3f(B[0], B[1], B[2]);
  			glVertex3f(B[0], B[1], A[2]);
  			glVertex3f(B[0], A[1], A[2]);
  			glVertex3f(B[0], A[1], B[2]);
  			glVertex3f(A[0], A[1], B[2]);
  			glVertex3f(A[0], A[1], A[2]);
b7624d0d   Jiaming Guo   add function to h...
53
  			glEnd();
c184655c   David Mayerich   fixed bugs in AAB...
54
  
b7624d0d   Jiaming Guo   add function to h...
55
  		}
9c97e126   David Mayerich   added an axis-ali...
56
57
  
  
b7624d0d   Jiaming Guo   add function to h...
58
  	};		//end stim::gl_aabb
9c97e126   David Mayerich   added an axis-ali...
59
60
61
62
  
  
  };		//end namespace stim
  
2e0f052a   Pavel Govyadinov   minor changes to ...
63
  #endif