UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
p_raytr_elements.H
1 /* p_raytr_elements.H */
2 /* $Id: p_raytr_elements.H,v 2.5 2001/10/09 14:54:42 hoh Exp $ */
3 #ifndef __p_raytr_elements_H
4 #define __p_raytr_elements_H
5 /*
6  Элементы трехмерной модели с плоскими границами, обеспечивающие трассировку
7  лучей.
8 
9  crossings etc -- пересечения лучей с границами.
10 
11  regular_set -- регулярные сетки точке на границах, обеспечивающие полное
12  покрытие границ набором лучей.
13 
14  pl_intern_raytr_тип -- еще одно порождение от any_тип, для поддержки настрела лучей собственно моделью meta_iis -- структура, содержащая данные, по которым будет формироваться идеальная импульсная сейсмограмма */ #include <mix/wenv.h> #include <mix/ObjectsAr.H> #include <mod3d/any_elements.H> #include <mod3d/p_elements.H> #include "rays.H" #include "p_raytr_hits.H" #define PM_TRANSMISSION 0 #define PM_REFLECTION 1 // Классы, упоминающиеся в файле class pl_intern_raytr_border; class rays_to_receiver; // Описание приемника class receiver_info{ protected: int iN1; int iN2; point pRP; public: receiver_info(int n1,int n2,point p){iN1=n1;iN2=n2;pRP=p;}; point rp()const{return pRP;}; int n1(){return iN1;}; int n2(){return iN2;}; Logic same_numbers(int n1,int n2)const{ if((n1==iN1)&&(n2==iN2))return TRUE; return FALSE; }; }; #define AnyType receiver_info #define AnyAr receivers #include <mix/AnyAr.H> // Геофизическая информация о пересечении луча с границей (от Игоря) class cross_info{ public: // Время пересечения double time; cross_info(){}; // Коэффициенты отражения-преломления не заносятся сразу, их может и не быть cross_info(double t, double dDx1,double dDy1,double dDz1, double dDx2,double dDy2,double dDz2, double dF ,double dA, // double dkdfi[3],double dkdt[3], double ksi[3], double vp[3], const double *dkdfi,const double *dkdt,const double *ksi, const double *vp,double *daDpdteta0,double *daDpdfi0,int ib, int w_t); void add_rc_coefs(double a[2],double b[2]); void add_rc_vectors(double[3],double[3]); void add_raypol(double da[3]); // Производные по углам double dDxDf,dDyDf,dDzDf; double dDxDaz,dDyDaz,dDzDaz; // Собственно углы double dFi,dAz; // Служебная для Игоря double dksidfi[3]; double dksidteta[3]; double ksi[3]; int iBody; // Номер тела, по которому в это пересечение луч пришел int wave_type; // тип волны на данном сегменте луча // Информация, необходимая собственно для сейсмограмм double vpol[3]; // Коэффициенты отражения и преломления, комплексные double dCRef[2],dCTrans[2]; // Лучевые параметры прохождения и преломления на границе, после refkin double vref[3],vtrans[3]; // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
15  лучей собственно моделью meta_iis -- структура, содержащая данные, по которым будет формироваться идеальная импульсная сейсмограмма */ #include <mix/wenv.h> #include <mix/ObjectsAr.H> #include <mod3d/any_elements.H> #include <mod3d/p_elements.H> #include "rays.H" #include "p_raytr_hits.H" #define PM_TRANSMISSION 0 #define PM_REFLECTION 1 // Классы, упоминающиеся в файле class pl_intern_raytr_border; class rays_to_receiver; // Описание приемника class receiver_info{ protected: int iN1; int iN2; point pRP; public: receiver_info(int n1,int n2,point p){iN1=n1;iN2=n2;pRP=p;}; point rp()const{return pRP;}; int n1(){return iN1;}; int n2(){return iN2;}; Logic same_numbers(int n1,int n2)const{ if((n1==iN1)&&(n2==iN2))return TRUE; return FALSE; }; }; #define AnyType receiver_info #define AnyAr receivers #include <mix/AnyAr.H> // Геофизическая информация о пересечении луча с границей (от Игоря) class cross_info{ public: // Время пересечения double time; cross_info(){}; // Коэффициенты отражения-преломления не заносятся сразу, их может и не быть cross_info(double t, double dDx1,double dDy1,double dDz1, double dDx2,double dDy2,double dDz2, double dF ,double dA, // double dkdfi[3],double dkdt[3], double ksi[3], double vp[3], const double *dkdfi,const double *dkdt,const double *ksi, const double *vp,double *daDpdteta0,double *daDpdfi0,int ib, int w_t); void add_rc_coefs(double a[2],double b[2]); void add_rc_vectors(double[3],double[3]); void add_raypol(double da[3]); // Производные по углам double dDxDf,dDyDf,dDzDf; double dDxDaz,dDyDaz,dDzDaz; // Собственно углы double dFi,dAz; // Служебная для Игоря double dksidfi[3]; double dksidteta[3]; double ksi[3]; int iBody; // Номер тела, по которому в это пересечение луч пришел int wave_type; // тип волны на данном сегменте луча // Информация, необходимая собственно для сейсмограмм double vpol[3]; // Коэффициенты отражения и преломления, комплексные double dCRef[2],dCTrans[2]; // Лучевые параметры прохождения и преломления на границе, после refkin double vref[3],vtrans[3]; // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
16 
17  meta_iis -- структура, содержащая данные, по которым будет формироваться
18  идеальная импульсная сейсмограмма
19  */
20 
21 #include <mix/wenv.h>
22 #include <mix/ObjectsAr.H>
23 
24 #include <mod3d/any_elements.H>
25 #include <mod3d/p_elements.H>
26 
27 #include "rays.H"
28 #include "p_raytr_hits.H"
29 
30 #define PM_TRANSMISSION 0
31 #define PM_REFLECTION 1
32 
33 // Классы, упоминающиеся в файле
34 class pl_intern_raytr_border;
35 class rays_to_receiver;
36 
37 // Описание приемникаclass receiver_info{ protected: int iN1; int iN2; point pRP; public: receiver_info(int n1,int n2,point p){iN1=n1;iN2=n2;pRP=p;}; point rp()const{return pRP;}; int n1(){return iN1;}; int n2(){return iN2;}; Logic same_numbers(int n1,int n2)const{ if((n1==iN1)&&(n2==iN2))return TRUE; return FALSE; }; }; #define AnyType receiver_info #define AnyAr receivers #include <mix/AnyAr.H> // Геофизическая информация о пересечении луча с границей (от Игоря) class cross_info{ public: // Время пересечения double time; cross_info(){}; // Коэффициенты отражения-преломления не заносятся сразу, их может и не быть cross_info(double t, double dDx1,double dDy1,double dDz1, double dDx2,double dDy2,double dDz2, double dF ,double dA, // double dkdfi[3],double dkdt[3], double ksi[3], double vp[3], const double *dkdfi,const double *dkdt,const double *ksi, const double *vp,double *daDpdteta0,double *daDpdfi0,int ib, int w_t); void add_rc_coefs(double a[2],double b[2]); void add_rc_vectors(double[3],double[3]); void add_raypol(double da[3]); // Производные по углам double dDxDf,dDyDf,dDzDf; double dDxDaz,dDyDaz,dDzDaz; // Собственно углы double dFi,dAz; // Служебная для Игоря double dksidfi[3]; double dksidteta[3]; double ksi[3]; int iBody; // Номер тела, по которому в это пересечение луч пришел int wave_type; // тип волны на данном сегменте луча // Информация, необходимая собственно для сейсмограмм double vpol[3]; // Коэффициенты отражения и преломления, комплексные double dCRef[2],dCTrans[2]; // Лучевые параметры прохождения и преломления на границе, после refkin double vref[3],vtrans[3]; // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
39 protected:
40  int iN1;
41  int iN2;
42  point pRP;
43 public:
44  receiver_info(int n1,int n2,point p){iN1=n1;iN2=n2;pRP=p;};
45  point rp()const{return pRP;};
46  int n1(){return iN1;};
47  int n2(){return iN2;};
48  Logic same_numbers(int n1,int n2)const{
49  if((n1==iN1)&&(n2==iN2))return TRUE;
50  return FALSE;
51  };
52 };
53 #define AnyType receiver_info
54 #define AnyAr receivers
55 #include <mix/AnyAr.H>
56 
57 // Геофизическая информация о пересечении луча с границей (от Игоря)class cross_info{ public: // Время пересечения double time; cross_info(){}; // Коэффициенты отражения-преломления не заносятся сразу, их может и не быть cross_info(double t, double dDx1,double dDy1,double dDz1, double dDx2,double dDy2,double dDz2, double dF ,double dA, // double dkdfi[3],double dkdt[3], double ksi[3], double vp[3], const double *dkdfi,const double *dkdt,const double *ksi, const double *vp,double *daDpdteta0,double *daDpdfi0,int ib, int w_t); void add_rc_coefs(double a[2],double b[2]); void add_rc_vectors(double[3],double[3]); void add_raypol(double da[3]); // Производные по углам double dDxDf,dDyDf,dDzDf; double dDxDaz,dDyDaz,dDzDaz; // Собственно углы double dFi,dAz; // Служебная для Игоря double dksidfi[3]; double dksidteta[3]; double ksi[3]; int iBody; // Номер тела, по которому в это пересечение луч пришел int wave_type; // тип волны на данном сегменте луча // Информация, необходимая собственно для сейсмограмм double vpol[3]; // Коэффициенты отражения и преломления, комплексные double dCRef[2],dCTrans[2]; // Лучевые параметры прохождения и преломления на границе, после refkin double vref[3],vtrans[3]; // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
58 class cross_info{
59 public:
60  // Время пересечения
61  double time;
62  cross_info(){};
63  // Коэффициенты отражения-преломления не заносятся сразу, их может и не быть cross_info(double t, double dDx1,double dDy1,double dDz1, double dDx2,double dDy2,double dDz2, double dF ,double dA, // double dkdfi[3],double dkdt[3], double ksi[3], double vp[3], const double *dkdfi,const double *dkdt,const double *ksi, const double *vp,double *daDpdteta0,double *daDpdfi0,int ib, int w_t); void add_rc_coefs(double a[2],double b[2]); void add_rc_vectors(double[3],double[3]); void add_raypol(double da[3]); // Производные по углам double dDxDf,dDyDf,dDzDf; double dDxDaz,dDyDaz,dDzDaz; // Собственно углы double dFi,dAz; // Служебная для Игоря double dksidfi[3]; double dksidteta[3]; double ksi[3]; int iBody; // Номер тела, по которому в это пересечение луч пришел int wave_type; // тип волны на данном сегменте луча // Информация, необходимая собственно для сейсмограмм double vpol[3]; // Коэффициенты отражения и преломления, комплексные double dCRef[2],dCTrans[2]; // Лучевые параметры прохождения и преломления на границе, после refkin double vref[3],vtrans[3]; // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
64  cross_info(double t,
65  double dDx1,double dDy1,double dDz1,
66  double dDx2,double dDy2,double dDz2,
67  double dF ,double dA,
68  // double dkdfi[3],double dkdt[3], double ksi[3], double vp[3],
69  const double *dkdfi,const double *dkdt,const double *ksi,
70  const double *vp,double *daDpdteta0,double *daDpdfi0,int ib,
71  int w_t);
72  void add_rc_coefs(double a[2],double b[2]);
73  void add_rc_vectors(double[3],double[3]);
74  void add_raypol(double da[3]);
75  // Производные по углам
76  double dDxDf,dDyDf,dDzDf;
77  double dDxDaz,dDyDaz,dDzDaz;
78 
79  // Собственно углы double dFi,dAz; // Служебная для Игоря double dksidfi[3]; double dksidteta[3]; double ksi[3]; int iBody; // Номер тела, по которому в это пересечение луч пришел int wave_type; // тип волны на данном сегменте луча // Информация, необходимая собственно для сейсмограмм double vpol[3]; // Коэффициенты отражения и преломления, комплексные double dCRef[2],dCTrans[2]; // Лучевые параметры прохождения и преломления на границе, после refkin double vref[3],vtrans[3]; // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
80  double dFi,dAz;
81 
82  // Служебная для Игоря double dksidfi[3]; double dksidteta[3]; double ksi[3]; int iBody; // Номер тела, по которому в это пересечение луч пришел int wave_type; // тип волны на данном сегменте луча // Информация, необходимая собственно для сейсмограмм double vpol[3]; // Коэффициенты отражения и преломления, комплексные double dCRef[2],dCTrans[2]; // Лучевые параметры прохождения и преломления на границе, после refkin double vref[3],vtrans[3]; // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
83  double dksidfi[3];
84  double dksidteta[3];
85  double ksi[3];
86  int iBody; // Номер тела, по которому в это пересечение луч пришел
87  int wave_type; // тип волны на данном сегменте луча // Информация, необходимая собственно для сейсмограмм double vpol[3]; // Коэффициенты отражения и преломления, комплексные double dCRef[2],dCTrans[2]; // Лучевые параметры прохождения и преломления на границе, после refkin double vref[3],vtrans[3]; // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
88 
89  // Информация, необходимая собственно для сейсмограмм double vpol[3]; // Коэффициенты отражения и преломления, комплексные double dCRef[2],dCTrans[2]; // Лучевые параметры прохождения и преломления на границе, после refkin double vref[3],vtrans[3]; // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
90 
91  double vpol[3];
92  // Коэффициенты отражения и преломления, комплексные double dCRef[2],dCTrans[2]; // Лучевые параметры прохождения и преломления на границе, после refkin double vref[3],vtrans[3]; // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
93  double dCRef[2],dCTrans[2];
94  // Лучевые параметры прохождения и преломления на границе, после refkin
95  double vref[3],vtrans[3];
96  // Военное чиселко по поводу отношения коэффициентов отражения для Игоря double dRefRat; double daDpdteta0[3]; double daDpdfi0[3]; // Вектор для поляризации поперечной волны потребный... double daRayPol[3]; int operator =(const cross_info&); }; // Описание одного пересечения луча с границей // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
97  double dRefRat;
98 
99  double daDpdteta0[3];
100  double daDpdfi0[3];
101 
102  // Вектор для поляризации поперечной волны потребный...
103  double daRayPol[3];
104  int operator =(const cross_info&);
105 };
106 
107 
108 // Описание одного пересечения луча с границей
109 
110 // Организация набора пересечений на поверхности // Служебный класс, нужен не всем class crossing:public point3d{ protected: int iBorder; // Номер границы, на которой произошло пересечение cross_info cr; ray_parameters rp; int iKind; // 0 - преломление, 1 - отражение public: crossing(const ray_parameters &rp, cross_info cr_,int ib, double x,double y, double z,int ik); crossing(); cross_info crossing_info()const {return cr;}; ray_parameters ray_pars(){return rp;}; int border()const{return iBorder;}; void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);}; void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);}; void add_raypol(double da[3]){cr.add_raypol(da);}; int reflected() const {return iKind;}; int operator =(const crossing&); void set_refl_type(int ik); void set_refrat(double rr); int kind() {return iKind;}; int get_wave_type() {return cr.wave_type;}; ray_parameters rp_as_sp()const; }; typedef crossing* p_crossing; #define AnyType crossing #define AnyAr crossings_ptrs #include <mix/AnyAr.H> struct meta_iis_element{ double dTime; double dValueX[2]; double dValueY[2]; double dValueZ[2]; }; #define AnyType meta_iis_element #define AnyAr meta_iis #include <mix/AnyAr.H> /* Безклассовые функции */ void general_get_ray_parameters (const point3d &pWhere, const crossing &cClosest, double &dFi,double &dAz, double &dDFi,double& dDAz,double &dRo, double dfl=0.8,double dal=0.8); double compare_reflected(const crossing&,const crossing&); double compare_transmitted(const crossing&,const crossing&); void get_ray_angles (double& dFi,double& dAz,const point&pStart, const point& pCurr,const geophys_params&gp); #endif /* p_raytr_elements.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
111 
112 // Служебный класс, нужен не всем
113 class crossing:public point3d{
114 protected:
115  int iBorder; // Номер границы, на которой произошло пересечение
116  cross_info cr;
117  ray_parameters rp;
118  int iKind; // 0 - преломление, 1 - отражение
119 public:
120  crossing(const ray_parameters &rp, cross_info cr_,int ib,
121  double x,double y, double z,int ik);
122  crossing();
123  cross_info crossing_info()const {return cr;};
124  ray_parameters ray_pars(){return rp;};
125  int border()const{return iBorder;};
126  void add_rc_coefs( double c1[2], double c2[2]){cr.add_rc_coefs(c1,c2);};
127  void add_rc_vectors(double v1[3],double v2[3]){cr.add_rc_vectors(v1,v2);};
128  void add_raypol(double da[3]){cr.add_raypol(da);};
129  int reflected() const {return iKind;};
130  int operator =(const crossing&);
131  void set_refl_type(int ik);
132  void set_refrat(double rr);
133  int kind() {return iKind;};
134  int get_wave_type() {return cr.wave_type;};
135  ray_parameters rp_as_sp()const;
136 };
137 
138 typedef crossing* p_crossing;
139 
140 #define AnyType crossing
141 #define AnyAr crossings_ptrs
142 #include <mix/AnyAr.H>
143 
145  double dTime;
146  double dValueX[2];
147  double dValueY[2];
148  double dValueZ[2];
149 };
150 
151 #define AnyType meta_iis_element
152 #define AnyAr meta_iis
153 #include <mix/AnyAr.H>
154 
155 
156 
157 /*
158  Безклассовые функции
159  */
160 void general_get_ray_parameters (const point3d &pWhere,
161  const crossing &cClosest,
162  double &dFi,double &dAz,
163  double &dDFi,double& dDAz,double &dRo,
164  double dfl=0.8,double dal=0.8);
165 
166 double compare_reflected(const crossing&,const crossing&);
167 double compare_transmitted(const crossing&,const crossing&);
168 void get_ray_angles (double& dFi,double& dAz,const point&pStart,
169  const point& pCurr,const geophys_params&gp);
170 #endif /* p_raytr_elements.H */
171 
172 /* Melnikov George Y. 2-Nov-1998 */
173 /* ... */
174 /* Melnikov George Yu. 31-Jan-2000 */
175 /* ... */
Definition: p_raytr_elements.H:113
Definition: any_elements.H:22
Definition: p_raytr_elements.H:58
Definition: p_raytr_elements.H:38
Definition: p_raytr_elements.H:144
Definition: rays.H:61
Definition: geometry.H:16
Definition: rays.H:170