summaryrefslogtreecommitdiff
path: root/thirdparty/embree/common/math/obbox.h
blob: 2fe8bbf0718a174c647f29904ece440694f0fc5c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// 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;
}