Implement Geometric Class Definitions (round 2)

This commit is contained in:
2024-01-26 00:14:28 -05:00
parent 4152b0d2aa
commit 256fe730cd
11 changed files with 139 additions and 11 deletions

View File

@@ -1,8 +1,45 @@
//
// Created by dawsh on 1/25/24.
//
#pragma once
#ifndef J3ML_OBB_H
#define J3ML_OBB_H
#include "AABB.h"
#endif //J3ML_OBB_H
namespace Geometry {
class OBB
{
public:
// The center position of this OBB
Vector3 pos;
// Stores half-sizes to x, y, and z directions in the local space of this OBB.
Vector3 r;
// Specifies normalized direc tion vectors for the local axes
Vector3 axis[3];
OBB() {}
OBB(const Vector3& pos, const Vector3& radii, const Vector3& axis0, const Vector3& axis1, const Vector3& axis2);
OBB(const AABB& aabb);
inline static int NumFaces() { return 6; }
inline static int NumEdges() { return 12; }
inline static int NumVertices() { return 8; }
Polyhedron ToPolyhedron() const;
AABB MinimalEnclosingAABB() const;
Sphere MinimalEnclosingSphere() const;
Sphere MaximalContainedSphere() const;
Vector3 Size() const;
Vector3 HalfSize() const;
Vector3 Diagonal() const;
Vector3 HalfDiagonal() const;
bool IsFinite() const;
bool IsDegenerate() const;
Vector3 CenterPoint() const;
Vector3 Centroid() const;
Vector3 AnyPointFast() const;
float Volume();
float SurfaceArea();
LineSegment Edge(int edgeIndex) const;
Vector3 CornerPoint(int cornerIndex) const;
};
}