#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. | |
Additional math functions and structures.