xc
CircularSector3d.h
1 // -*-c++-*-
2 //----------------------------------------------------------------------------
3 // xc utils library; general purpose classes and functions.
4 //
5 // Copyright (C) Luis C. Pérez Tato
6 //
7 // XC utils is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation, either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // This software is distributed in the hope that it will be useful, but
13 // WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program.
19 // If not, see <http://www.gnu.org/licenses/>.
20 //----------------------------------------------------------------------------
21 //CircularSector2d.h
22 
23 #ifndef SECTORCIRCULAR3D_H
24 #define SECTORCIRCULAR3D_H
25 
26 #include "D2to3d.h"
27 #include "CircularSector2d.h"
28 
29 class Pos3d;
30 
32 //
34 class CircularSector3d : public D2to3d
35  {
36  CircularSector2d sect_circ;
37  public:
38  CircularSector3d(void) : D2to3d(), sect_circ() {}
39  CircularSector3d(const Pos3d centro,const GEOM_FT &rad,const double &th1,const double &th2);
40  CircularSector3d(const GEOM_FT &rad2,const Pos3d &centro,const double &th1,const double &th2);
41  CircularSector3d(const Pos3d &c,const double &r,const Vector3d &n,const Vector3d &Xaxis,const double &angIni,const double &angFin);
42  CircularSector3d(const Pos3d &p1,const Pos3d &p2,const Pos3d &p3);
43 
44  virtual D2to3d *getCopy(void) const;
45  Pos3d Centro(void) const;
46  Pos3d PInic(void) const;
47  Pos3d PFin(void) const;
48  Pos3d PMed(void) const;
49  virtual Pos3d getCenterOfMass(void) const;
50  virtual Pos3d ArcCentroid(void) const;
51  GEOM_FT getSquaredRadius(void) const;
52  GEOM_FT getRadius(void) const;
53  GEOM_FT getDiameter(void) const;
54  inline double getIncludedAngle(void) const
55  { return sect_circ.getIncludedAngle(); }
56  double getAngle(const Pos3d &) const;
57  double getLambda(const Pos3d &) const;
58  virtual GEOM_FT getLength(void) const
59  { return sect_circ.getLength(); }
60  virtual GEOM_FT getArcLength(void) const
61  { return sect_circ.getArcLength(); }
63  inline GEOM_FT getPerimeter(void) const
64  { return getLength(); }
66  virtual GEOM_FT getArea(void) const
67  { return sect_circ.getArea(); }
69  virtual GEOM_FT getVolume(void) const
70  { return 0; }
71  inline const double &Theta1(void) const
72  { return sect_circ.Theta1(); }
73  inline double &Theta1(void)
74  { return sect_circ.Theta1(); }
75  inline const double &Theta2(void) const
76  { return sect_circ.Theta2(); }
77  inline double &Theta2(void)
78  { return sect_circ.Theta2(); }
79  virtual GEOM_FT Ix(void) const;
80  virtual GEOM_FT Iy(void) const;
81  virtual GEOM_FT Pxy(void) const;
82  virtual GEOM_FT Iz(void) const;
83 
84  virtual GEOM_FT GetMax(unsigned short int i) const;
85  virtual GEOM_FT GetMin(unsigned short int i) const;
86 
87  virtual bool In(const Pos3d &p, const double &tol= 0.0) const;
88  Pos3dArray getArcPoints(const size_t &n) const;
89 
90  friend bool operator ==(const CircularSector3d &a,const CircularSector3d &b);
91 
92 
93  void Print(std::ostream &os) const;
94  };
95 
96 #endif
97 
98 
99 
virtual GEOM_FT getLength(void) const
Return the length of the circular sector.
Definition: CircularSector2d.cc:168
virtual GEOM_FT GetMax(unsigned short int i) const
Return the maximum value of the i-th coordinate.
Definition: CircularSector3d.cc:115
virtual Pos3d ArcCentroid(void) const
Return the position of the arc centroid.
Definition: CircularSector3d.cc:89
Pos3d PFin(void) const
Return the point final del arco.
Definition: CircularSector3d.cc:78
GEOM_FT getPerimeter(void) const
Return the perimeter of the object.
Definition: CircularSector3d.h:63
Array of positions in a three-dimensional space.
Definition: Pos3dArray.h:38
Sector de círculo en tres dimensiones.
Definition: CircularSector3d.h:34
Pos3d PInic(void) const
Return the point inicial del arco.
Definition: CircularSector3d.cc:74
double getLambda(const Pos3d &) const
Returns the parameter of the point in the arc (distance to the arc&#39;s first point measured over the ar...
Definition: CircularSector3d.cc:103
virtual GEOM_FT getArea(void) const
Return the area of the circular sector.
Definition: CircularSector2d.cc:172
Pos3d PMed(void) const
Return the point medio del arco.
Definition: CircularSector3d.cc:82
virtual GEOM_FT getArea(void) const
Return the area of the object.
Definition: CircularSector3d.h:66
Pos3d Centro(void) const
Return el centro del círculo.
Definition: CircularSector3d.cc:70
virtual GEOM_FT getArcLength(void) const
Return the length of the arc.
Definition: CircularSector2d.cc:164
virtual GEOM_FT getLength(void) const
Return the length of the object.
Definition: CircularSector3d.h:58
Class that places 2D objects (circle, ellipse, polygons, ...) in a 3D space.
Definition: D2to3d.h:44
D2to3d(void)
Constructor.
Definition: D2to3d.cc:40
double getIncludedAngle(void) const
Return the included angle.
Definition: CircularSector2d.cc:160
Posición en tres dimensiones.
Definition: Pos3d.h:44
virtual GEOM_FT GetMin(unsigned short int i) const
Return the minimum value of the i-th coordinate.
Definition: CircularSector3d.cc:120
Pos3dArray getArcPoints(const size_t &n) const
Return n points equally spaced over the circle arc.
Definition: CircularSector3d.cc:136
virtual D2to3d * getCopy(void) const
Constructor virtual.
Definition: CircularSector3d.cc:34
2D circular sector.
Definition: CircularSector2d.h:34
virtual GEOM_FT getVolume(void) const
Return the volume of the object.
Definition: CircularSector3d.h:69
Vector en tres dimensiones.
Definition: Vector3d.h:39
virtual bool In(const Pos3d &p, const double &tol=0.0) const
Return true if the point is in the plane.
Definition: CircularSector3d.cc:127