Carna  Version 3.3.2
BoundingVolume.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2010 - 2015 Leonid Kostrykin
3  *
4  * Chair of Medical Engineering (mediTEC)
5  * RWTH Aachen University
6  * Pauwelsstr. 20
7  * 52074 Aachen
8  * Germany
9  *
10  */
11 
12 #ifndef BOUNDINGVOLUME_H_6014714286
13 #define BOUNDINGVOLUME_H_6014714286
14 
15 #include <Carna/Carna.h>
16 #include <Carna/base/noncopyable.h>
17 #include <Carna/base/math.h>
18 
23 namespace Carna
24 {
25 
26 namespace base
27 {
28 
29 
30 
31 // ----------------------------------------------------------------------------------
32 // BoundingVolume
33 // ----------------------------------------------------------------------------------
34 
42 class CARNA_LIB BoundingVolume
43 {
44 
46 
47  struct Details;
48  const std::unique_ptr< Details > pimpl;
49 
50 public:
51 
56 
60  virtual ~BoundingVolume();
61 
66  virtual void computeClosemostPoint( math::Vector3f& out, const math::Vector3f& reference ) const = 0;
67 
72  void setTransform( const math::Matrix4f& transform );
73 
78  const math::Matrix4f& transform() const;
79 
84  const math::Matrix4f& inverseTransform() const;
85 
86 }; // BoundingVolume
87 
88 
89 
90 } // namespace Carna :: base
91 
92 } // namespace Carna
93 
94 #endif // BOUNDINGVOLUME_H_6014714286
Defines Carna::base::math namespace and CARNA_FOR_VECTOR3UI.
Eigen::Matrix< float, 3, 1 > Vector3f
Defines vector.
Definition: math.h:196
Represents a Geometry minimal boundary volume of simple geometric shape. The volume is centered withi...
Eigen::Matrix< float, 4, 4, Eigen::ColMajor > Matrix4f
Defines matrix.
Definition: math.h:193
#define NON_COPYABLE
Features class it is placed in as non-copyable.
Definition: noncopyable.h:109