All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
IntersectionTests.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "VectorMathDecl.h"
6 #include "Geometry.h"
7 
8 namespace Eegeo
9 {
10  namespace Geometry
11  {
12  // TODO: split this into methods in an Intersection3d.h file & multiple impl files
14  {
15  public:
16  static bool TestSphereSphere(Eegeo::dv3 ca, double ra, Eegeo::dv3 cb, double rb);
17  static bool IntersectSegmentTriangle(Eegeo::dv3 p,
18  Eegeo::dv3 q,
19  Eegeo::dv3 a,
20  Eegeo::dv3 b,
21  Eegeo::dv3 c,
22  double &u,
23  double &v,
24  double &w,
25  double &t);
26  static bool TestRaySphere(Eegeo::dv3 p,Eegeo::dv3 d,Eegeo::dv3 sc,double sr);
27  static bool GetRayEarthSphereIntersection(const Eegeo::dv3& rayStart,
28  const Eegeo::dv3& rayDir,
29  Eegeo::dv3& out_closestIntersectionPoint);
30  static bool GetRayEarthSphereIntersection(const Eegeo::dv3& rayStart,
31  const Eegeo::dv3& rayDir,
32  Eegeo::dv3& out_closestIntersectionPoint,
33  double squaredRadious);
34 
35  static bool SphereIntersectsWithRay(const SingleSphere& sphere, const Eegeo::v3& rayStartPoint, const Eegeo::v3& rayDirection);
36 
37  static bool SphereIntersectsWithRay(const SingleSphere& sphere, const Eegeo::v3& rayStartPoint, const Eegeo::v3& rayDirection, float &t);
38 
39  static bool SphereIntersectsWithRay(const Sphere& sphere, const Eegeo::dv3& rayStartPoint, const Eegeo::dv3& rayDirection, double &t);
40 
41  static bool SphereIntersectsWithSphere(const SingleSphere& a, const SingleSphere& b);
42 
43  static bool SphereIntersectsWithPlane(const Sphere& sphere, const DoublePlane& plane);
44 
45  static bool TriangleIntersectsWithRay(const Eegeo::v3& rayOrigin,
46  const Eegeo::v3& rayDirection,
47  const Eegeo::v3& a,
48  const Eegeo::v3& b,
49  const Eegeo::v3& c,
50  double& t);
51 
52  static bool IntersectFrustumSphere(const Geometry::Frustum& frustum,
53  const v3& frustumRelativeSphereCenter,
54  const float sphereRadius,
55  uint& inactivePlaneFlags);
56 
57  static bool RayIntersectsWithPlane(const Eegeo::dv3 & rayOrigin,
58  const Eegeo::dv3 & rayDir,
59  const Eegeo::dv3 & planeNormal,
60  const Eegeo::dv3 & planePoint,
61  double & out_t,
62  Eegeo::dv3& out_intersectPoint);
63  };
64  }
65 }