Revision control
++ // 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<typename T>
++ struct OBBox
++ {
++ public:
++
++ __forceinline OBBox () {}
++
++ __forceinline OBBox (EmptyTy)
++ : space(one), bounds(empty) {}
++
++ __forceinline OBBox (const BBox<T>& bounds)
++ : space(one), bounds(bounds) {}
++
++ __forceinline OBBox (const LinearSpace3<T>& space, const BBox<T>& 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<T> space; //!< orthonormal transformation
++ BBox<T> bounds; //!< bounds in transformed space
++ };
++
++ typedef OBBox<Vec3f> OBBox3f;
++ typedef OBBox<Vec3fa> OBBox3fa;
++ }