1 // Created on: 2013-12-20
2 // Created by: Denis BOGOLEPOV
3 // Copyright (c) 2013-2014 OPEN CASCADE SAS
5 // This file is part of Open CASCADE Technology software library.
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
16 #include <BVH_BinnedBuilder.hxx>
18 // =======================================================================
19 // function : BVH_Geometry
21 // =======================================================================
22 template<class T, int N>
23 BVH_Geometry<T, N>::BVH_Geometry()
24 : myIsDirty (Standard_False),
25 myBVH (new BVH_Tree<T, N>())
27 // Set default builder - binned SAH split
28 myBuilder = new BVH_BinnedBuilder<T, N, 32> (1 /* primitive per leaf */);
31 // =======================================================================
32 // function : ~BVH_Geometry
34 // =======================================================================
35 template<class T, int N>
36 BVH_Geometry<T, N>::~BVH_Geometry()
42 // =======================================================================
43 // function : MarkDirty
45 // =======================================================================
46 template<class T, int N>
47 void BVH_Geometry<T, N>::MarkDirty()
49 myIsDirty = Standard_True;
52 // =======================================================================
55 // =======================================================================
56 template<class T, int N>
57 BVH_Box<T, N> BVH_Geometry<T, N>::Box() const
64 myBox = BVH_Set<T, N>::Box();
68 // =======================================================================
71 // =======================================================================
72 template<class T, int N>
73 const NCollection_Handle<BVH_Tree<T, N> >& BVH_Geometry<T, N>::BVH()
83 // =======================================================================
86 // =======================================================================
87 template<class T, int N>
88 void BVH_Geometry<T, N>::Update()
95 myBuilder->Build (this, myBVH.operator->(), Box());
97 myIsDirty = Standard_False;
100 // =======================================================================
101 // function : Builder
103 // =======================================================================
104 template<class T, int N>
105 const NCollection_Handle<BVH_Builder<T, N> >& BVH_Geometry<T, N>::Builder() const
110 // =======================================================================
111 // function : SetBuilder
113 // =======================================================================
114 template<class T, int N>
115 void BVH_Geometry<T, N>::SetBuilder (NCollection_Handle<BVH_Builder<T, N> >& theBuilder)
117 myBuilder = theBuilder;