Version: 8.3.0
Main Page
Related Pages
Packages
Data Structures
Files
File List
Globals
SMESH_Octree.hxx
Go to the documentation of this file.
1
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
2
//
3
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5
//
6
// This library is free software; you can redistribute it and/or
7
// modify it under the terms of the GNU Lesser General Public
8
// License as published by the Free Software Foundation; either
9
// version 2.1 of the License, or (at your option) any later version.
10
//
11
// This library is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
// Lesser General Public License for more details.
15
//
16
// You should have received a copy of the GNU Lesser General Public
17
// License along with this library; if not, write to the Free Software
18
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
//
20
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21
//
22
23
// SMESH SMESH_Octree : Octree implementation
24
// File : SMESH_Octree.hxx
25
// Created : Tue Jan 16 16:00:00 2007
26
// Author : Nicolas Geimer & Aurélien Motteux (OCC)
27
// Module : SMESH
28
//
29
#ifndef _SMESH_OCTREE_HXX_
30
#define _SMESH_OCTREE_HXX_
31
32
#include "
SMESH_Utils.hxx
"
33
#include "
SMESH_Tree.hxx
"
34
#include <Bnd_B3d.hxx>
35
36
//================================================================================
44
class
SMESHUtils_EXPORT
SMESH_Octree
:
public
SMESH_Tree
< Bnd_B3d, 8 >
45
{
46
public
:
47
typedef
SMESH_Tree< Bnd_B3d, 8>
TBaseTree
;
48
49
// Constructor. limit must be provided at tree root construction.
50
// limit will be deleted by SMESH_Octree
51
SMESH_Octree
(
SMESH_TreeLimit
* limit=0);
52
virtual
~SMESH_Octree
() {};
53
54
// Compute the bigger dimension of my box
55
double
maxSize
()
const
;
56
57
// Return index of a child the given point is in
58
inline
static
int
getChildIndex(
double
x,
double
y,
double
z,
const
gp_XYZ& boxMiddle);
59
60
protected
:
61
62
// Allocate a bndbox according to childIndex. childIndex is zero based
63
virtual
Bnd_B3d*
newChildBox
(
int
childIndex)
const
;
64
65
// Change size of a box by a factor; each dimension changes independently of others
66
virtual
void
enlargeByFactor
( Bnd_B3d* box,
double
factor )
const
;
67
};
68
69
//================================================================================
73
inline
int
SMESH_Octree::getChildIndex
(
double
x,
double
y,
double
z,
const
gp_XYZ& mid)
74
{
75
return
(x > mid.X()) + ( y > mid.Y())*2 + (z > mid.Z())*4;
76
}
77
78
#endif
src
SMESHUtils
SMESH_Octree.hxx
Copyright © 2007-2017 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS