Diligent Engine
 
Loading...
Searching...
No Matches
AdvancedMath.hpp File Reference
#include <float.h>
#include <vector>
#include <type_traits>
#include "../../Platforms/interface/PlatformDefinitions.h"
#include "../../Primitives/interface/FlagEnum.h"
#include "BasicMath.hpp"

Classes

struct  Diligent::Plane3D
 
class  Diligent::Polygon2DTriangulator< IndexType >
 
class  Diligent::Polygon3DTriangulator< IndexType, ComponentType >
 3D polygon triangulator. More...
 

Namespaces

namespace  Diligent
 Graphics engine namespace.
 

Enumerations

enum class  Diligent::BoxVisibility { Diligent::Invisible , Diligent::Intersecting , Diligent::FullyVisible }
 Bounding box visibility. More...
 
enum  Diligent::TRIANGULATE_POLYGON_RESULT : Uint32 {
  Diligent::TRIANGULATE_POLYGON_RESULT_OK = 0 , Diligent::TRIANGULATE_POLYGON_RESULT_TOO_FEW_VERTS = 1u << 0u , Diligent::TRIANGULATE_POLYGON_RESULT_VERTS_COLLINEAR = 1u << 1u , Diligent::TRIANGULATE_POLYGON_RESULT_INVALID_CONVEX = 1u << 2u ,
  Diligent::TRIANGULATE_POLYGON_RESULT_INVALID_EAR = 1u << 3u , Diligent::TRIANGULATE_POLYGON_RESULT_NO_EAR_FOUND = 1u << 4u
}
 Triangulation result flags returned by the polygon triangulator. More...
 

Functions

void Diligent::ExtractViewFrustumPlanesFromMatrix (const float4x4 &Matrix, ViewFrustum &Frustum, bool bIsOpenGL)
 
float3 Diligent::GetBoxNearestCorner (const float3 &Direction, const BoundBox &Box)
 Returns the nearest bounding box corner along the given direction.
 
float3 Diligent::GetBoxFarthestCorner (const float3 &Direction, const BoundBox &Box)
 Returns the farthest bounding box corner along the given direction.
 
BoxVisibility Diligent::GetBoxVisibilityAgainstPlane (const Plane3D &Plane, const BoundBox &Box)
 
BoxVisibility Diligent::GetBoxVisibilityAgainstPlane (const Plane3D &Plane, const OrientedBoundingBox &Box)
 
void Diligent::GetFrustumMinimumBoundingSphere (float Proj_00, float Proj_11, float NearPlane, float FarPlane, float3 &Center, float &Radius)
 Returns the minimum bounding sphere of a view frustum.
 
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.
 
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.
 
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.
 
float Diligent::IntersectRayTriangle (const float3 &V0, const float3 &V1, const float3 &V2, const float3 &RayOrigin, const float3 &RayDirection, bool CullBackFace=false)
 
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.
 
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.
 
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.
 
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.
 
template<bool AllowTouch, typename T>
bool Diligent::CheckLineSectionOverlap (T Min0, T Max0, T Min1, T Max1)
 Checks if two 1D-line sections overlap.
 

Detailed Description

Additional math functions and structures.