Robotics Library  0.7.0
Scene.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2009, Markus Rickert
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are met:
7 //
8 // * Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright notice,
11 // this list of conditions and the following disclaimer in the documentation
12 // and/or other materials provided with the distribution.
13 //
14 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
18 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 // POSSIBILITY OF SUCH DAMAGE.
25 //
26 
27 #ifndef RL_SG_ODE_SCENE_H
28 #define RL_SG_ODE_SCENE_H
29 
30 #include <ode/ode.h>
31 
32 #include "../DepthScene.h"
33 #include "../RaycastScene.h"
34 #include "../SimpleScene.h"
35 
36 namespace rl
37 {
38  namespace sg
39  {
45  namespace ode
46  {
48  {
49  public:
50  Scene();
51 
52  virtual ~Scene();
53 
54  bool areColliding(::rl::sg::Body* first, ::rl::sg::Body* second);
55 
56  bool areColliding(::rl::sg::Model* first, ::rl::sg::Model* second);
57 
58  bool areColliding(::rl::sg::Shape* first, ::rl::sg::Shape* second);
59 
61 
62  ::rl::math::Real depth(::rl::sg::Shape* first, ::rl::sg::Shape* second, ::rl::math::Vector3& point1, ::rl::math::Vector3& point2);
63 
64  bool isColliding();
65 
67 
68  bool raycast(::rl::sg::Shape* shape, const ::rl::math::Vector3& source, const ::rl::math::Vector3& target, ::rl::math::Real& distance);
69 
70  ::dSpaceID space;
71 
72  ::dWorldID world;
73 
74  protected:
75 
76  private:
77  static void bodyDepthCallback(void* data, ::dGeomID o1, ::dGeomID o2);
78 
79  static void bodySimpleCallback(void* data, ::dGeomID o1, ::dGeomID o2);
80 
81  static void modelSimpleCallback(void* data, ::dGeomID o1, ::dGeomID o2);
82 
83  static void rayNearCallback(void* data, ::dGeomID o1, ::dGeomID o2);
84 
85  static void shapeDepthCallback(void* data, ::dGeomID o1, ::dGeomID o2);
86 
87  static void shapeSimpleCallback(void* data, ::dGeomID o1, ::dGeomID o2);
88  };
89  }
90  }
91 }
92 
93 #endif // RL_SG_ODE_SCENE_H
Definition: DepthScene.h:41
::dSpaceID space
Definition: Scene.h:70
Definition: Scene.h:47
Scalar distance(const Transform< Scalar, Dim, Mode, Options > &other, const Scalar &weight=1) const
Definition: TransformAddons.h:33
::rl::sg::Shape * raycast(const ::rl::math::Vector3 &source, const ::rl::math::Vector3 &target, ::rl::math::Real &distance)
Definition: Scene.cpp:173
static void modelSimpleCallback(void *data, ::dGeomID o1, ::dGeomID o2)
Definition: Scene.cpp:153
Definition: RaycastScene.h:40
double Real
Definition: Real.h:42
::dWorldID world
Definition: Scene.h:72
Definition: Body.h:44
static void rayNearCallback(void *data, ::dGeomID o1, ::dGeomID o2)
Definition: Scene.cpp:240
static void bodySimpleCallback(void *data, ::dGeomID o1, ::dGeomID o2)
Definition: Scene.cpp:111
Robotics Library.
Definition: AnalogInput.cpp:29
bool areColliding(::rl::sg::Body *first, ::rl::sg::Body *second)
Definition: Scene.cpp:61
bool isColliding()
Definition: Scene.cpp:139
::rl::sg::Model * create()
Definition: Scene.cpp:147
static void shapeSimpleCallback(void *data, ::dGeomID o1, ::dGeomID o2)
Definition: Scene.cpp:279
virtual ~Scene()
Definition: Scene.cpp:48
::Eigen::Matrix< Real, 3, 1 > Vector3
Definition: Vector.h:46
static void bodyDepthCallback(void *data, ::dGeomID o1, ::dGeomID o2)
Definition: Scene.cpp:105
static void shapeDepthCallback(void *data, ::dGeomID o1, ::dGeomID o2)
Definition: Scene.cpp:273
Definition: Model.h:42
Definition: SimpleScene.h:40
::rl::math::Real depth(::rl::sg::Shape *first, ::rl::sg::Shape *second, ::rl::math::Vector3 &point1, ::rl::math::Vector3 &point2)
Definition: Scene.cpp:117
Definition: Shape.h:40
Scene()
Definition: Scene.cpp:38