Recast  1
Game with custom magic
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Parallelepiped.hpp
Go to the documentation of this file.
1 //
2 // Created by Oleg Morozenkov on 14.06.17.
3 //
4 
5 #ifndef RECAST_PARALLELEPIPED_H
6 #define RECAST_PARALLELEPIPED_H
7 
8 
9 #include <cassert>
10 #include "Size.hpp"
11 #include "Coord.hpp"
12 
18 public:
20  : _minX(minX), _maxX(maxX), _minY(minY), _maxY(maxY), _minZ(minZ), _maxZ(maxZ)
21  , _sizeX(maxX - minX + 1), _sizeY(maxY - minY + 1), _sizeZ(maxZ - minZ + 1)
22  {
23  assert(_minX <= _maxX && _minY <= _maxY && _minZ <= _maxZ);
24  }
25 
27  : _sizeX(sizeX), _sizeY(sizeY), _sizeZ(sizeZ)
28  , _maxX(sizeX / 2), _maxY(sizeY / 2), _maxZ(sizeZ / 2)
29  , _minX((sizeX / 2) - (sizeX - 1)), _minY((sizeY / 2) - (sizeY - 1)), _minZ((sizeZ / 2) - (sizeZ - 1))
30  {
31  }
32 
36  inline Coord minX() const noexcept {
37  return _minX;
38  };
39 
43  inline Coord maxX() const noexcept {
44  return _maxX;
45  };
46 
50  inline Coord minY() const noexcept {
51  return _minY;
52  };
53 
57  inline Coord maxY() const noexcept {
58  return _maxY;
59  };
60 
64  inline Coord minZ() const noexcept {
65  return _minZ;
66  };
67 
71  inline Coord maxZ() const noexcept {
72  return _maxZ;
73  };
74 
78  inline Size sizeX() const noexcept {
79  return _sizeX;
80  };
81 
85  inline Size sizeY() const noexcept {
86  return _sizeY;
87  };
88 
92  inline Size sizeZ() const noexcept {
93  return _sizeZ;
94  };
95 
99  inline Size volume() const noexcept {
100  return _sizeX * _sizeY * _sizeZ;
101  }
102 
107  inline bool isSameSize(const Parallelepiped& other) const noexcept {
108  return _sizeX == other._sizeX && _sizeY == other._sizeY && _sizeZ == other._sizeZ;
109  }
110 
111  inline bool operator==(const Parallelepiped& other) const noexcept {
112  return _minX == other._minX && _maxX == other._maxX &&
113  _minY == other._minY && _maxY == other._maxY &&
114  _minZ == other._minZ && _maxZ == other._maxZ;
115  }
116 
117  inline bool operator!=(const Parallelepiped& other) const noexcept {
118  return !(*this == other);
119  }
120 
121 protected:
128 };
129 
130 
131 #endif //RECAST_PARALLELEPIPED_H
Coord _minY
Definition: Parallelepiped.hpp:123
Coord maxZ() const noexcept
Definition: Parallelepiped.hpp:71
Coord _minZ
Definition: Parallelepiped.hpp:124
Coord maxY() const noexcept
Definition: Parallelepiped.hpp:57
Parallelepiped(Coord minX, Coord maxX, Coord minY, Coord maxY, Coord minZ, Coord maxZ)
Definition: Parallelepiped.hpp:19
Size sizeY() const noexcept
Definition: Parallelepiped.hpp:85
bool isSameSize(const Parallelepiped &other) const noexcept
Definition: Parallelepiped.hpp:107
Definition: Coord.hpp:16
Coord _minX
Definition: Parallelepiped.hpp:122
Coord maxX() const noexcept
Definition: Parallelepiped.hpp:43
Definition: Parallelepiped.hpp:17
Coord minY() const noexcept
Definition: Parallelepiped.hpp:50
Size _sizeX
Definition: Parallelepiped.hpp:125
Size sizeX() const noexcept
Definition: Parallelepiped.hpp:78
bool operator!=(const Parallelepiped &other) const noexcept
Definition: Parallelepiped.hpp:117
Size volume() const noexcept
Definition: Parallelepiped.hpp:99
Coord _maxY
Definition: Parallelepiped.hpp:123
Coord _maxX
Definition: Parallelepiped.hpp:122
Size _sizeZ
Definition: Parallelepiped.hpp:127
bool operator==(const Parallelepiped &other) const noexcept
Definition: Parallelepiped.hpp:111
Size _sizeY
Definition: Parallelepiped.hpp:126
Size sizeZ() const noexcept
Definition: Parallelepiped.hpp:92
Definition: Size.hpp:15
Coord minX() const noexcept
Definition: Parallelepiped.hpp:36
Coord _maxZ
Definition: Parallelepiped.hpp:124
Parallelepiped(Size sizeX, Size sizeY, Size sizeZ)
Definition: Parallelepiped.hpp:26
Coord minZ() const noexcept
Definition: Parallelepiped.hpp:64