UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
pp_stack.H
1 /* pp_stack.H */
2 /* $Id: pp_stack.H,v 2.2 2007/06/26 08:45:01 ibadm Exp $ */
3 #ifndef __pp_stack_H
4 #define __pp_stack_H
5 
6 #include <mod3d/any_elements.H>
7 #include <mod3d/p_elements.H>
8 
9 #include "p_vspogt_elements.H"
10 
12  int iCount;
13  double A,B,C,D;
14  double dAmp;
15  pp_stack_element(){iCount=0; A=B=C=D=dAmp=0.;};
16 };
17 
18 /*
19  typedef pp_stack_element p_pp_stack_element;
20  #define AnyType p_pp_stack_element
21  #define AnyAr pp_stack_elements
22  #include <mix/AnyAr.H>
23  */
24 
25 class any_stack{
26 public:
27  virtual void add_node(const pl_spline&,const point&,double);
28  virtual double desired_step();
29 };
30 
31 class pp_stack:public any_stack{
32 
33 protected:
34  point2D p1,p2,p3,p4; // p3 в общем не используется, но мало ли что...
35  double dx,dy,dz;
36  double zMin,zMax;
37  int iX,iY,iZ;
38  pp_stack_element **** p_Container; // Вроде бы достаточно звездочек ;)
39 
40  // По трехмерной точке - положение xy на нашем прямоугольнике
41  void position(const point&,double& t1,double& t2)const;
42 
43  // По точному положению точки - номера ячеек
44  void precise_position(double t1,double t2,int& iX,int& iY)const;
45 
46  // по точке - номера ячеек
47  void node(const point&,int&,int&,int&)const;
48 
49  // Накопить чтонадо в обозначенном кубике
50  void stack_element(int,int,int,const pl_spline&,double);
51 
52  // По номеру ячейки - ейный центр point3d center(int i,int j,int k)const; public: // Конструктор по четырехугольнику на поверхности, мин-макс глубинам, шагам pp_stack(const point2D&,const point2D&,const point2D&,const point2D&, double,double, double,double,double); ~pp_stack(); // Накопленные результаты - сплайны, точки отражения, амплитуды void results(p_pl_splines&, aPoints&, DoubleAr&)const; // Накопить еще одну точку в гденадо virtual void add_node(const pl_spline&,const point&,double); virtual double desired_step(); }; struct p_stack_element{ int iCount; double dAmp; }; class p_stack:public any_stack,public mixer{ protected: // Плоскость с накопленными количеством и качеством double A,B,C,D; int iXnodes, iYnodes; double dX,dY; p_stack_element** ppData; // Свалка с данными // point2D paLocalV[4]; // Локальные координаты вершин double lx[3], ly[3], lz[3]; /* Local corrd. system on the plain - three points so 0 - origin 0-1 - x direction, 0-2 - y direction */ double x2d[4],y2d[4]; // Локальные координаты прямоугольника (для Игоря) point2D node(int,int)const; public: ~p_stack(); p_stack (const point& p0,const point& p1, const point& p2,const point& p3, double dX,double dY, int iXn, int iYn,pl_model *pM); void results(DoubleAr& aAmpls,aPoints2D& aWhere)const; void results(DoubleAr& aAmpls,IntAr&,IntAr&)const; void get_mix_direction (const point3d& pWhat,double& A,double& B); virtual void add_node(const pl_spline&,const point&,double); virtual double desired_step(); }; #endif /* pp_stack.H */ /* Melnikov George Yu. 4-May-1999 */ /* Melnikov George Yu. 5-May-1999 */ /* Melnikov George Yu. 6-May-1999 */ /* Melnikov George Yu. 18-Jun-1999 */ /* Melnikov George Yu. 20-Jun-1999 */ /* Melnikov George Yu. 21-Jun-1999 */ /* Melnikov George Yu. 22-Jun-1999 */ /* Melnikov George Yu. 2-Dec-1999 */
53  point3d center(int i,int j,int k)const;
54 public:
55  // Конструктор по четырехугольнику на поверхности, мин-макс глубинам, шагам
56  pp_stack(const point2D&,const point2D&,const point2D&,const point2D&,
57  double,double,
58  double,double,double);
59  ~pp_stack();
60  // Накопленные результаты - сплайны, точки отражения, амплитуды
61  void results(p_pl_splines&, aPoints&, DoubleAr&)const;
62 
63  // Накопить еще одну точку в гденадо virtual void add_node(const pl_spline&,const point&,double); virtual double desired_step(); }; struct p_stack_element{ int iCount; double dAmp; }; class p_stack:public any_stack,public mixer{ protected: // Плоскость с накопленными количеством и качеством double A,B,C,D; int iXnodes, iYnodes; double dX,dY; p_stack_element** ppData; // Свалка с данными // point2D paLocalV[4]; // Локальные координаты вершин double lx[3], ly[3], lz[3]; /* Local corrd. system on the plain - three points so 0 - origin 0-1 - x direction, 0-2 - y direction */ double x2d[4],y2d[4]; // Локальные координаты прямоугольника (для Игоря) point2D node(int,int)const; public: ~p_stack(); p_stack (const point& p0,const point& p1, const point& p2,const point& p3, double dX,double dY, int iXn, int iYn,pl_model *pM); void results(DoubleAr& aAmpls,aPoints2D& aWhere)const; void results(DoubleAr& aAmpls,IntAr&,IntAr&)const; void get_mix_direction (const point3d& pWhat,double& A,double& B); virtual void add_node(const pl_spline&,const point&,double); virtual double desired_step(); }; #endif /* pp_stack.H */ /* Melnikov George Yu. 4-May-1999 */ /* Melnikov George Yu. 5-May-1999 */ /* Melnikov George Yu. 6-May-1999 */ /* Melnikov George Yu. 18-Jun-1999 */ /* Melnikov George Yu. 20-Jun-1999 */ /* Melnikov George Yu. 21-Jun-1999 */ /* Melnikov George Yu. 22-Jun-1999 */ /* Melnikov George Yu. 2-Dec-1999 */
64  virtual void add_node(const pl_spline&,const point&,double);
65 
66  virtual double desired_step();
67 };
68 
70  int iCount;
71  double dAmp;
72 };
73 
74 class p_stack:public any_stack,public mixer{
75 protected:
76  // Плоскость с накопленными количеством и качеством double A,B,C,D; int iXnodes, iYnodes; double dX,dY; p_stack_element** ppData; // Свалка с данными // point2D paLocalV[4]; // Локальные координаты вершин double lx[3], ly[3], lz[3]; /* Local corrd. system on the plain - three points so 0 - origin 0-1 - x direction, 0-2 - y direction */ double x2d[4],y2d[4]; // Локальные координаты прямоугольника (для Игоря) point2D node(int,int)const; public: ~p_stack(); p_stack (const point& p0,const point& p1, const point& p2,const point& p3, double dX,double dY, int iXn, int iYn,pl_model *pM); void results(DoubleAr& aAmpls,aPoints2D& aWhere)const; void results(DoubleAr& aAmpls,IntAr&,IntAr&)const; void get_mix_direction (const point3d& pWhat,double& A,double& B); virtual void add_node(const pl_spline&,const point&,double); virtual double desired_step(); }; #endif /* pp_stack.H */ /* Melnikov George Yu. 4-May-1999 */ /* Melnikov George Yu. 5-May-1999 */ /* Melnikov George Yu. 6-May-1999 */ /* Melnikov George Yu. 18-Jun-1999 */ /* Melnikov George Yu. 20-Jun-1999 */ /* Melnikov George Yu. 21-Jun-1999 */ /* Melnikov George Yu. 22-Jun-1999 */ /* Melnikov George Yu. 2-Dec-1999 */
77  double A,B,C,D;
78  int iXnodes, iYnodes;
79  double dX,dY;
80  p_stack_element** ppData; // Свалка с данными
81  // point2D paLocalV[4]; // Локальные координаты вершин double lx[3], ly[3], lz[3]; /* Local corrd. system on the plain - three points so 0 - origin 0-1 - x direction, 0-2 - y direction */ double x2d[4],y2d[4]; // Локальные координаты прямоугольника (для Игоря) point2D node(int,int)const; public: ~p_stack(); p_stack (const point& p0,const point& p1, const point& p2,const point& p3, double dX,double dY, int iXn, int iYn,pl_model *pM); void results(DoubleAr& aAmpls,aPoints2D& aWhere)const; void results(DoubleAr& aAmpls,IntAr&,IntAr&)const; void get_mix_direction (const point3d& pWhat,double& A,double& B); virtual void add_node(const pl_spline&,const point&,double); virtual double desired_step(); }; #endif /* pp_stack.H */ /* Melnikov George Yu. 4-May-1999 */ /* Melnikov George Yu. 5-May-1999 */ /* Melnikov George Yu. 6-May-1999 */ /* Melnikov George Yu. 18-Jun-1999 */ /* Melnikov George Yu. 20-Jun-1999 */ /* Melnikov George Yu. 21-Jun-1999 */ /* Melnikov George Yu. 22-Jun-1999 */ /* Melnikov George Yu. 2-Dec-1999 */
82  double lx[3], ly[3], lz[3]; /* Local corrd. system on the plain -
83  three points so 0 - origin
84  0-1 - x direction, 0-2 - y direction */
85  double x2d[4],y2d[4]; // Локальные координаты прямоугольника (для Игоря)
86  point2D node(int,int)const;
87 public:
88  ~p_stack();
89  p_stack (const point& p0,const point& p1,
90  const point& p2,const point& p3,
91  double dX,double dY, int iXn, int iYn,pl_model *pM);
92  void results(DoubleAr& aAmpls,aPoints2D& aWhere)const;
93  void results(DoubleAr& aAmpls,IntAr&,IntAr&)const;
94 
95  void get_mix_direction (const point3d& pWhat,double& A,double& B);
96 
97  virtual void add_node(const pl_spline&,const point&,double);
98  virtual double desired_step();
99 };
100 
101 #endif /* pp_stack.H */
102 /* Melnikov George Yu. 4-May-1999 */
103 /* Melnikov George Yu. 5-May-1999 */
104 /* Melnikov George Yu. 6-May-1999 */
105 /* Melnikov George Yu. 18-Jun-1999 */
106 /* Melnikov George Yu. 20-Jun-1999 */
107 /* Melnikov George Yu. 21-Jun-1999 */
108 /* Melnikov George Yu. 22-Jun-1999 */
109 /* Melnikov George Yu. 2-Dec-1999 */
Definition: p_model.H:29
Definition: p_vspogt_elements.H:175
Definition: pp_stack.H:31
Definition: IntAr.H:14
Definition: pp_stack.H:74
Definition: p_elements.H:168
Definition: geometry.H:16
Definition: pp_stack.H:11
Definition: pp_stack.H:69
Definition: DoubleAr.H:14
Definition: pp_stack.H:25
Definition: geometry.H:39