CD_Scene.h
Go to the documentation of this file.
1 #ifndef _CD_SCENE
2 # define _CD_SCENE
3 
4 # pragma once
5 
6 # include <sch/CD/CD_Pair.h>
7 # include <sch/S_Object/S_Object.h>
8 # include <sch/sch_api.h>
9 # include <vector>
10 
11 namespace sch
12 {
13 class CD_Scene
14 {
15 public:
16  SCH_API CD_Scene(void);
17  SCH_API virtual ~CD_Scene(void);
18 
22  SCH_API int addObject(S_Object * O);
23 
27  SCH_API void withdrawObject(int a);
28 
29  SCH_API void ignorePair(int a, int b);
30 
31  SCH_API void considerPair(int a, int b);
32 
33  SCH_API CD_Pair * operator()(int a, int b) const
34  {
35  if(a != b)
36  {
37  return (b < a) ? pairs_[a][b] : pairs_[b][a];
38  }
39  else
40  return NULL;
41  }
42 
44 
45  SCH_API S_Object * operator[](size_t i) const
46  {
47  return objects_[i];
48  }
49 
50  SCH_API size_t size()
51  {
52  return objects_.size();
53  }
54 
58  SCH_API Scalar getWitnessPoints(int a, int b, Point3 & p1, Point3 & p2)
59  {
60  if(a != b)
61  {
62  p1 = witness_[a][b];
63  p2 = witness_[b][a];
64  return distances_[a][b];
65  }
66  else
67  {
68  return 0;
69  }
70  }
71 
72 protected:
73  std::vector<S_Object *> objects_;
74 
75  std::vector<std::vector<CD_Pair *>> pairs_;
76 
77  std::vector<std::vector<Point3>> witness_;
78 
79  std::vector<std::vector<Scalar>> distances_;
80 };
81 } // namespace sch
82 #endif
83 
sch::CD_Scene::operator[]
SCH_API S_Object * operator[](size_t i) const
Definition: CD_Scene.h:45
sch
Definition: CD_Pair.h:11
sch::CD_Scene::sceneProximityQuery
SCH_API int sceneProximityQuery()
SCH_API
#define SCH_API
Definition: sch_api.h:13
CD_Pair.h
sch::CD_Scene::pairs_
std::vector< std::vector< CD_Pair * > > pairs_
Definition: CD_Scene.h:75
sch::CD_Scene::ignorePair
SCH_API void ignorePair(int a, int b)
sch::CD_Scene::size
SCH_API size_t size()
Definition: CD_Scene.h:50
sch::CD_Scene::withdrawObject
SCH_API void withdrawObject(int a)
Withdraw an object.
sch::CD_Scene::distances_
std::vector< std::vector< Scalar > > distances_
Definition: CD_Scene.h:79
sch::CD_Scene
Definition: CD_Scene.h:13
sch::CD_Scene::getWitnessPoints
SCH_API Scalar getWitnessPoints(int a, int b, Point3 &p1, Point3 &p2)
Doesn't Compute the closest points, just gives the result of last computations.
Definition: CD_Scene.h:58
sch::CD_Scene::~CD_Scene
virtual SCH_API ~CD_Scene(void)
sch_api.h
sch::CD_Pair
Definition: CD_Pair.h:14
sch::CD_Scene::considerPair
SCH_API void considerPair(int a, int b)
sch::CD_Scene::objects_
std::vector< S_Object * > objects_
Definition: CD_Scene.h:73
sch::CD_Scene::addObject
SCH_API int addObject(S_Object *O)
Add Object to scene, returns an index that must be kept for collision detection.
CD_Matrix::Vector3T< Scalar, false >
sch::CD_Scene::witness_
std::vector< std::vector< Point3 > > witness_
Definition: CD_Scene.h:77
sch::S_Object
Definition: S_Object.h:71
sch::Scalar
double Scalar
Definition: SCH_Types.h:23
sch::CD_Scene::CD_Scene
SCH_API CD_Scene(void)
S_Object.h
sch::CD_Scene::operator()
SCH_API CD_Pair * operator()(int a, int b) const
Definition: CD_Scene.h:33