63 lines
2.4 KiB
C++
63 lines
2.4 KiB
C++
#pragma once
|
|
|
|
#include <J3ML/LinearAlgebra/Vector3.h>
|
|
#include "Plane.h"
|
|
#include "Sphere.h"
|
|
|
|
using namespace LinearAlgebra;
|
|
|
|
namespace Geometry
|
|
{
|
|
class AABB
|
|
{
|
|
static AABB FromCenterAndSize(const Vector3 FromSize);
|
|
|
|
float MinX();
|
|
|
|
// Returns the smallest sphere that contains this AABB.
|
|
// This function computes the minimal volume sphere that contains all the points inside this AABB
|
|
Sphere MinimalEnclosingSphere() const;
|
|
// Returns the largest sphere that can fit inside this AABB
|
|
// This function computes the largest sphere that can fit inside this AABB.
|
|
Sphere MaximalContainedSphere() const;
|
|
Vector3 GetCentroid() const;
|
|
// Quickly returns an arbitrary point inside this AABB
|
|
Vector3 AnyPointFast() const;
|
|
|
|
Vector3 PointInside(float x, float y, float z) const;
|
|
// Returns an edge of this AABB
|
|
LineSegment Edge(int edgeIndex) const;
|
|
Vector3 CornerPoint(int cornerIndex);
|
|
Vector3 ExtremePoint(const Vector3& direction) const;
|
|
Vector3 ExtremePoint(const Vector3& direction, float projectionDistance);
|
|
Vector3 PointOnEdge(int edgeIndex, float u) const;
|
|
Vector3 FaceCenterPoint(int faceIndex) const;
|
|
Vector3 FacePoint(int faceIndex, float u, float v) const;
|
|
Vector3 FaceNormal(int faceIndex) const;
|
|
Plane FacePlane(int faceIndex);
|
|
static AABB MinimalEnclosingAABB(const Vector3* pointArray, int numPoints);
|
|
Vector3 GetSize();
|
|
Vector3 GetVolume();
|
|
float GetVolumeCubed();
|
|
float GetSurfaceArea();
|
|
Vector3 GetRandomPointInside();
|
|
Vector3 GetRandomPointOnSurface();
|
|
Vector3 GetRandomPointOnEdge();
|
|
Vector3 GetRandomCornerPoint();
|
|
AABB Translated(const Vector3& offset) const;
|
|
AABB TransformAABB(const Matrix3x3& transform);
|
|
AABB TransformAABB(const Matrix4x4& transform);
|
|
AABB TransformAABB(const Quaternion& transform);
|
|
OBB Transform(const Matrix3x3& transform);
|
|
OBB Transform(const Matrix4x4& transform);
|
|
OBB Transform(const Quaternion& transform);
|
|
|
|
bool Contains(const Vector3& point) const;
|
|
bool Contains(const LineSegment& lineSegment) const;
|
|
bool Contains(const AABB& aabb) const;
|
|
bool Contains(const OBB& obb) const;
|
|
bool Contains(const Sphere& sphere) const;
|
|
bool C
|
|
};
|
|
}
|