Salome HOME
3df194c680dd5586f3297391c113cfe46113bbf5
[modules/hexablock.git] / src / HEXABLOCK / HexCylinder.hxx
1
2 // class : Les cylindres
3
4 // Copyright (C) 2009-2023  CEA, EDF
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 #ifndef __CYLINDER_H_
23 #define __CYLINDER_H_
24
25 #include "Hex_defines.hxx"
26 #include "HexEltBase.hxx"
27
28 BEGIN_NAMESPACE_HEXA
29
30 class HEXABLOCKENGINE_EXPORT Cylinder : public EltBase
31 {
32 public :
33     Vertex* getBase ()      { return c_base;   }
34     Vector* getDirection () { return c_dir;    }
35     double  getRadius ()    { return c_radius; }
36     double  getHeight ()    { return c_height; }
37
38     Cylinder (Vertex* b, Vector* v, double r, double h);
39     virtual ~Cylinder () {}
40
41     int interCylinder(Cylinder* s, bool& left, bool& right, double* sol);
42     Vertex* interCylinder(Cylinder* other, bool& left, bool& right);
43     void saveXml (XmlWriter* xml);
44     virtual double  getInternalRadius () { return 0; }
45
46 protected:
47     Vertex* c_base;
48     Vector* c_dir;
49
50     double c_radius;
51     double c_height;
52 };
53
54 // ------------------------------------------- Inlining
55
56
57 END_NAMESPACE_HEXA
58 #endif