Program Listing for File Geometry.h

Return to documentation for file (Source\Math\Inc\Math\Geometry.h)

#pragma once
#include "Types.h"
#include "Core/RawStorageFormat.h"

namespace Azura {
namespace Math {

constexpr float PI = 3.14159265358979323846f;
constexpr float TWO_PI = 6.28318530717958647692f;
constexpr float INV_PI = 0.31830988618379067154f;
constexpr float INV2_PI = 0.15915494309189533577f;
constexpr float INV4_PI = 0.07957747154594766788f;
constexpr float PI_OVER2 = 1.57079632679489661923f;
constexpr float PI_OVER4 = 0.78539816339744830961f;
constexpr float SQRT_2 = 1.41421356237309504880f;
constexpr float ONE_MINUS_EPSILON = 0.99999994f;
constexpr float ONE_DEGREE_RADIAN = 0.0174533f;

class Geometry
{
public:
  Geometry() = default;
  virtual ~Geometry() = default;

  // Copy & Move
  Geometry(const Geometry& other) = delete;
  Geometry(Geometry&& other) noexcept = delete;
  Geometry& operator=(const Geometry& other) = delete;
  Geometry& operator=(Geometry&& other) noexcept = delete;

  // Overrides
  virtual U32 VertexDataSize() const = 0;
  virtual U32 IndexDataSize() const = 0;
  virtual U32 NormalDataSize() const = 0;
  virtual U32 UVDataSize() const = 0;
  virtual U32 TotalDataSize() const = 0;

  virtual U32 GetVertexCount() const = 0;
  virtual U32 GetIndexCount() const = 0;
  virtual const U8* VertexData() const = 0;
  virtual const U8* NormalData() const = 0;
  virtual const U8* IndexData() const = 0;
  virtual const U8* UVData() const = 0;
  virtual RawStorageFormat GetVertexFormat() const = 0;
  virtual RawStorageFormat GetNormalFormat() const = 0;
  virtual RawStorageFormat GetIndexFormat() const = 0;
  virtual RawStorageFormat GetUVFormat() const = 0;
};

float ToRadians(float degrees);
float ToAngle(float radians);

} // namespace Math
} // namespace Azura