Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
SceneThreeDOutWrapper.cpp
1 #include "SceneThreeDOutWrapper.hh"
2 #include <Base/Debug/TimeMeasure.hh>
3 
4 using namespace std;
5 using namespace BIAS;
6 using namespace BIAS;
7 
8 
9 void SceneThreeDOutWrapper::Draw()
10 {
11  if(threeDOutObject_ != NULL){
12  //first render point uncertainties
13  if (GetFlag(DRAW_ELLIPSOIDS)){
14  if(covarianceColor_.NormL2() != 0)
15  threeDOutObject_->OpenGLOutEllipsoids(covarianceColor_);
16  else
17  threeDOutObject_->OpenGLOutEllipsoids();
18  }
19  //render images
20  threeDOutObject_->OpenGLOutImages();
21 
22  //eventually render triangles with splatting
23  switch(GetTriangleMeshDrawStyle()){
24  case TRIANGLE_SIMPLE :
25  threeDOutObject_->OpenGLOutIndexedFaceSets();
26  break;
27  case TRIANGLE_SPLATTING:
28  triangleSplatting_.SetCamera(GetGLProjectionParametersInterface());
29  triangleSplatting_.ComputeDepthTolerance(0.02);
30  triangleSplatting_.Splat();
31  break;
32  }
33  //set cameras covariance flag
34  if(GetFlag(DRAW_CAM_ELLIPSOIDS))
35  threeDOutObject_->SetParamsDrawCameraEllipse(true);
36  else
37  threeDOutObject_->SetParamsDrawCameraEllipse(false);
38  //render cameras
39  if (GetFlag(RENDER_CAMERA)) {
40  if(cameraColor_.NormL2() != 0)
41  threeDOutObject_->OpenGLOutPMatrices(cameraColor_);
42  else
43  threeDOutObject_->OpenGLOutPMatrices();
44  threeDOutObject_->OpenGLOutWCS();
45  }
46  //points and lines
47  threeDOutObject_->OpenGLOutPoints();
48  threeDOutObject_->OpenGLOutLines();
49  }
50 }
51 
52 void SceneThreeDOutWrapper::SetFlag(unsigned long int Flag)
53 {
54  if ( !(RenderFlags_ & Flag) )
55  RenderFlags_ += Flag;
56 }
57 
58 
59 void SceneThreeDOutWrapper::UnsetFlag(unsigned long int Flag)
60 {
61  if ( RenderFlags_ & Flag )
62  RenderFlags_ -= Flag;
63 }
64 
65 bool SceneThreeDOutWrapper::GetFlag(unsigned long int Flag)
66 {
67  bool tmp=false;
68  if ( RenderFlags_ & Flag ) tmp=true;
69  return tmp;
70 }
71 
72 void SceneThreeDOutWrapper::
73 GetBoundingBox(Vector3<double> & min, Vector3<double> & max)
74 {
75  BIASASSERT(threeDOutObject_!=NULL);
76  threeDOutObject_->GetBoundingBox(min, max);
77  if (min.NormL2()!=0 || max.NormL2()!=0) {
78  for (unsigned int i=0; i<3; i++) {
79  min[i] -= 1e-10;
80  max[i] += 1e-10;
81  double dist = 0.01*(max[i]-min[i]);
82  min[i] -= dist;
83  max[i] += dist;
84  }
85  }
86 }
87 
88 BIAS::Vector3<double> SceneThreeDOutWrapper::
89 GetBoundingBoxCenter()
90 {
91  BIASASSERT(threeDOutObject_!=NULL);
92  return threeDOutObject_->GetCenterOfPoints();
93 }
94 
95 void SceneThreeDOutWrapper::MoveScene(const double& delta) {
96  //cout<<"performing translation "<<delta<<" * "<<velocity_<<endl;
97  threeDOutObject_->Translation(delta * velocity_);
98 }
double NormL2() const
the L2 norm sqrt(a^2 + b^2 + c^2)
Definition: Vector3.hh:633