All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
OrientedBox.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "VectorMath.h"
6 #include "Geometry.h"
7 #include <vector>
8 
9 namespace Eegeo
10 {
11  namespace Geometry
12  {
14  {
15  Eegeo::dv3 m_centre;
16  Eegeo::dv3 m_axisX;
17  Eegeo::dv3 m_axisY;
18  Eegeo::dv3 m_axisZ;
19  Eegeo::dv3 m_halfWidthExtents;
20 
21  public:
22 
23  OrientedBox();
24 
25  OrientedBox(Eegeo::dv3 centre,
26  Eegeo::dv3 axisX,
27  Eegeo::dv3 axisY,
28  Eegeo::dv3 axisZ,
29  Eegeo::dv3 halfWidthExtents);
30 
31  double GetVolume();
32 
33  Eegeo::dv3 CalculateNormalizedCoordinates(Eegeo::dv3 vertex);
34  };
35 
36  void ExpandBoxToContainVertices(Eegeo::dv3 xDir,
37  Eegeo::dv3 yDir,
38  Eegeo::dv3 zDir,
39  std::vector<Eegeo::dv3>& verts,
40  Eegeo::dv3 _massCenter,
41  DoubleBounds3D& bounds);
42 
43  OrientedBox CreateFromPointCloudAndDirection(std::vector<Eegeo::dv3>& outlinePoints,
44  int numOutlinePoints,
45  Eegeo::dv3 massCenter,
46  Eegeo::dv3 direction,
47  Eegeo::dv3 knownUpDirection);
48 
49  Eegeo::dv3 CalculateMassCentre(std::vector<Eegeo::dv3>& outlinePoints, int numOutlinePoints);
50 
51  void CreateOrientedBoxFromOutlinePointCloud(std::vector<Eegeo::dv3>& outlinePoints,
52  Eegeo::dv3 upDirection,
53  OrientedBox& box);
54  }
55 }