All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Plane.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "MathFunc.h"
6 #include "VectorMath.h"
7 
8 namespace Eegeo
9 {
10  namespace Geometry
11  {
12  class Plane
13  {
14  public:
15 
16  float a, b, c, d;
17 
18  Plane Norm() const
19  {
20  float length = 1.f/Eegeo::Math::Sqrtf(a*a + b*b + c*c);
21  Plane p;
22 
23  p.a = a*length;
24  p.b = b*length;
25  p.c = c*length;
26  p.d = d*length;
27 
28  return p;
29  }
30 
31 
32  static Plane CreateFromNormalAndPoint(const v3& normal, const v3& pointOnPlane);
33  static Plane Create(const v3& normal, float distanceOriginToPlane);
34 
35  static Plane Zero();
36 
37  static Plane Transform(const Plane& plane, const m44& nonScalingTransform);
38  };
39  }
40 }