DYT/Tool/TritonSDK/PublicHeaders/OrientedBoundingBox.h
2024-12-27 22:40:15 +08:00

40 lines
1021 B
C++

// Copyright (c) 2013-2014 Sundog Software, LLC. All rights reserved worldwide.
#ifndef TRITON_OREINTED_BOUNDING_BOX_H
#define TRITON_OREINTED_BOUNDING_BOX_H
/** \file OrientedBoundingBox.h
\brief A class describing an oriented bounding box.
*/
#include "TritonCommon.h"
#include "Vector3.h"
#include "Matrix3.h"
namespace Triton
{
/** An oriented bounding box defined by a center point and three axes. */
class OrientedBoundingBox : public MemObject
{
public:
/** Constructor. */
OrientedBoundingBox();
/** Define the OBB by a center point and vectors from center to extents in X, Y, and Z. */
void Set(const Vector3& center, const Vector3& xExtent, const Vector3& yExtent, const Vector3& zExtent);
/** Test if a point is enclosed by the box. */
bool PointInBox(const Vector3& point, double slop) const;
/** Recomputes the basis used for PointInBox */
void RecomputeBasis();
Vector3 center;
Vector3 axes[3];
double halfDistances[3];
Matrix3 invBasis;
};
}
#endif