2021-05-20 12:49:33 +02:00
|
|
|
// Copyright 2009-2021 Intel Corporation
|
2020-12-19 14:50:20 +01:00
|
|
|
// 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;
|
|
|
|
}
|