Diligent Engine  v.2.4.g
Classes | Namespaces | Enumerations | Functions
AdvancedMath.hpp File Reference
#include <float.h>
#include "../../Platforms/interface/PlatformDefinitions.h"
#include "../../Primitives/interface/FlagEnum.h"
#include "BasicMath.hpp"

Go to the source code of this file.

Classes

struct  Diligent::Plane3D
 
struct  Diligent::ViewFrustum
 
struct  Diligent::ViewFrustumExt
 
struct  Diligent::BoundBox
 
struct  std::hash< Diligent::Plane3D >
 
struct  std::hash< Diligent::ViewFrustum >
 
struct  std::hash< Diligent::ViewFrustumExt >
 

Namespaces

 Diligent
 The library uses Direct3D-style math:
 
 std
 

Enumerations

enum  Diligent::BoxVisibility { Diligent::BoxVisibility::Invisible, Diligent::BoxVisibility::Intersecting, Diligent::BoxVisibility::FullyVisible }
 
enum  Diligent::FRUSTUM_PLANE_FLAGS : Uint32 {
  Diligent::FRUSTUM_PLANE_FLAG_NONE = 0x00, Diligent::FRUSTUM_PLANE_FLAG_LEFT_PLANE = 1 << ViewFrustum::LEFT_PLANE_IDX, Diligent::FRUSTUM_PLANE_FLAG_RIGHT_PLANE = 1 << ViewFrustum::RIGHT_PLANE_IDX, Diligent::FRUSTUM_PLANE_FLAG_BOTTOM_PLANE = 1 << ViewFrustum::BOTTOM_PLANE_IDX,
  Diligent::FRUSTUM_PLANE_FLAG_TOP_PLANE = 1 << ViewFrustum::TOP_PLANE_IDX, Diligent::FRUSTUM_PLANE_FLAG_NEAR_PLANE = 1 << ViewFrustum::NEAR_PLANE_IDX, Diligent::FRUSTUM_PLANE_FLAG_FAR_PLANE = 1 << ViewFrustum::FAR_PLANE_IDX, Diligent::FRUSTUM_PLANE_FLAG_FULL_FRUSTUM,
  Diligent::FRUSTUM_PLANE_FLAG_OPEN_NEAR
}
 

Functions

void Diligent::ExtractViewFrustumPlanesFromMatrix (const float4x4 &Matrix, ViewFrustum &Frustum, bool bIsOpenGL)
 
void Diligent::ExtractViewFrustumPlanesFromMatrix (const float4x4 &Matrix, ViewFrustumExt &FrustumExt, bool bIsOpenGL)
 
float3 Diligent::GetBoxNearestCorner (const float3 &Direction, const BoundBox &Box)
 Returns the nearest bounding box corner along the given direction. More...
 
float3 Diligent::GetBoxFarthestCorner (const float3 &Direction, const BoundBox &Box)
 Returns the farthest bounding box corner along the given direction. More...
 
BoxVisibility Diligent::GetBoxVisibilityAgainstPlane (const Plane3D &Plane, const BoundBox &Box)
 
 Diligent::DEFINE_FLAG_ENUM_OPERATORS (FRUSTUM_PLANE_FLAGS)
 
BoxVisibility Diligent::GetBoxVisibility (const ViewFrustum &ViewFrustum, const BoundBox &Box, FRUSTUM_PLANE_FLAGS PlaneFlags=FRUSTUM_PLANE_FLAG_FULL_FRUSTUM)
 
BoxVisibility Diligent::GetBoxVisibility (const ViewFrustumExt &ViewFrustumExt, const BoundBox &Box, FRUSTUM_PLANE_FLAGS PlaneFlags=FRUSTUM_PLANE_FLAG_FULL_FRUSTUM)
 
float Diligent::GetPointToBoxDistance (const BoundBox &BndBox, const float3 &Pos)
 
bool Diligent::operator== (const Plane3D &p1, const Plane3D &p2)
 
bool Diligent::operator== (const ViewFrustum &f1, const ViewFrustum &f2)
 
bool Diligent::operator== (const ViewFrustumExt &f1, const ViewFrustumExt &f2)
 
template<typename T , typename Y >
Diligent::HermiteSpline (T f0, T f1, T t0, T t1, Y x)
 
void Diligent::GetFrustumMinimumBoundingSphere (float Proj_00, float Proj_11, float NearPlane, float FarPlane, float3 &Center, float &Radius)
 
bool Diligent::IntersectRayBox3D (const float3 &RayOrigin, const float3 &RayDirection, float3 BoxMin, float3 BoxMax, float &EnterDist, float &ExitDist)
 Intersects a ray with 3D box and computes distances to intersections. More...
 
bool Diligent::IntersectRayAABB (const float3 &RayOrigin, const float3 &RayDirection, const BoundBox &AABB, float &EnterDist, float &ExitDist)
 Intersects a ray with the axis-aligned bounding box and computes distances to intersections. More...
 
bool Diligent::IntersectRayBox2D (const float2 &RayOrigin, const float2 &RayDirection, float2 BoxMin, float2 BoxMax, float &EnterDist, float &ExitDist)
 Intersects a 2D ray with the 2D axis-aligned bounding box and computes distances to intersections. More...
 
float Diligent::IntersectRayTriangle (const float3 &V0, const float3 &V1, const float3 &V2, const float3 &RayOrigin, const float3 &RayDirection, bool CullBackFace=false)
 Intersects a ray with the trianlge using Moller-Trumbore algorithm and returns the distance along the ray to the intesrsection point. If the intersection point is behind the ray origin, the distance will be negative. If there is no intersection, returns +FLT_MAX. More...
 
template<typename TCallback >
void Diligent::TraceLineThroughGrid (float2 f2Start, float2 f2End, int2 i2GridSize, TCallback Callback)
 Traces a 2D line through the square cell grid and enumerates all cells the line touches. More...
 
template<typename T , typename IntermediateType >
bool Diligent::IsPointInsideTriangle (const Vector2< T > &V0, const Vector2< T > &V1, const Vector2< T > &V2, const Vector2< T > &Point, bool AllowEdges)
 Tests if a point is inside triangle. More...
 
template<typename T >
bool Diligent::IsPointInsideTriangle (const Vector2< T > &V0, const Vector2< T > &V1, const Vector2< T > &V2, const Vector2< T > &Point, bool AllowEdges)
 
template<typename T , class TCallback >
void Diligent::RasterizeTriangle (Vector2< T > V0, Vector2< T > V1, Vector2< T > V2, TCallback Callback)
 Rasterizes a triangle and calls the callback function for every sample covered. More...
 
template<bool AllowTouch, typename T >
bool Diligent::CheckBox2DBox2DOverlap (const Vector2< T > &Box0Min, const Vector2< T > &Box0Max, const Vector2< T > &Box1Min, const Vector2< T > &Box1Max)
 Checks if two 2D-boxes overlap. More...