// Copyright 2009-2021 Intel Corporation // SPDX-License-Identifier: Apache-2.0 #pragma once #include "bbox.h" #include "linearspace3.h" namespace embree { /*! Oriented bounding box */ template struct OBBox { public: __forceinline OBBox () {} __forceinline OBBox (EmptyTy) : space(one), bounds(empty) {} __forceinline OBBox (const BBox& bounds) : space(one), bounds(bounds) {} __forceinline OBBox (const LinearSpace3& space, const BBox& bounds) : space(space), bounds(bounds) {} friend embree_ostream operator<<(embree_ostream cout, const OBBox& p) { return cout << "{ space = " << p.space << ", bounds = " << p.bounds << "}"; } public: LinearSpace3 space; //!< orthonormal transformation BBox bounds; //!< bounds in transformed space }; typedef OBBox OBBox3f; typedef OBBox OBBox3fa; }