]> SALOME platform Git repositories - modules/geom.git/blob - src/NMTDS/NMTDS_BndSphere.lxx
Salome HOME
Mantis issue 0020626: EDF 1200 GEOM: the discretisation of the circles in the OCC...
[modules/geom.git] / src / NMTDS / NMTDS_BndSphere.lxx
1 //  Copyright (C) 2007-2008  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.
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 // File:        NMTDS_BndSphere.lxx
23 // Created:     
24 // Author:      Peter KURNEV
25 //              <pkv@irinox>
26
27
28 //=======================================================================
29 //function : SetCenter
30 //purpose  : 
31 //=======================================================================
32   inline void NMTDS_BndSphere::SetCenter(const gp_Pnt& theP)
33 {
34   myCenter=theP;
35 }
36 //=======================================================================
37 //function : Center
38 //purpose  : 
39 //=======================================================================
40   inline const gp_Pnt& NMTDS_BndSphere::Center()const
41 {
42   return myCenter;
43 }
44 //=======================================================================
45 //function : SetRadius
46 //purpose  : 
47 //=======================================================================
48   inline void NMTDS_BndSphere::SetRadius(const Standard_Real theR)
49 {
50   myRadius=theR;
51 }
52 //=======================================================================
53 //function : Radius
54 //purpose  : 
55 //=======================================================================
56   inline Standard_Real NMTDS_BndSphere::Radius()const
57 {
58   return myRadius;
59 }
60 //=======================================================================
61 //function : SetGap
62 //purpose  : 
63 //=======================================================================
64   inline void NMTDS_BndSphere::SetGap(const Standard_Real theGap)
65 {
66   myGap=theGap;
67 }
68 //=======================================================================
69 //function : Gap
70 //purpose  : 
71 //=======================================================================
72   inline Standard_Real NMTDS_BndSphere::Gap()const
73 {
74   return myGap;
75 }
76 //=======================================================================
77 //function : Add
78 //purpose  : 
79 //=======================================================================
80   inline void NMTDS_BndSphere::Add(const NMTDS_BndSphere& theOther)
81 {
82   Standard_Real aTmax, aR, aT, aTOther;
83   gp_Pnt aPc;
84   //
85   aPc.SetXYZ(0.5*(myCenter.XYZ()+theOther.myCenter.XYZ()));
86   //
87   aR=aPc.Distance(myCenter);
88   //
89   aT=myRadius+myGap;
90   aTOther=theOther.myRadius+theOther.myGap;
91   aTmax=(aT>aTOther) ? aT: aTOther;
92   //
93   aR=aR+aTmax;
94   //
95   myCenter=aPc;
96   myRadius=aR;
97 }
98 //=======================================================================
99 //function : SquareExtent
100 //purpose  : 
101 //=======================================================================
102   inline Standard_Real NMTDS_BndSphere::SquareExtent()const
103 {
104   Standard_Real aD;
105   //
106   aD=myRadius+myGap;
107   aD=aD+aD;
108   aD=aD*aD;
109   //
110   return aD;
111 }