UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
p_model.H
1 /* p_model.H */
2 /* $Id: p_model.H,v 2.26 2005/07/18 07:15:51 nikita Exp $ */
3 #ifndef __p_model_H
4 #define __p_model_H
5 
6 #include <mix/Progress.hpp>
7 #include "any_elements.H"
8 #include "any_model.H"
9 #include "p_elements.H"
10 #include "db_managers.H"
11 /*
12  Конкретная модель: сплайны - плоскости, а границы тел - многоугольники.
13  Дополнительные возможности по сравнению с базовым классом -
14  - отображение элементов модели пользователю (а не только их количества)
15  - вместо any_border(s) и подобных - их дети p_...
16 // классы из p_elements.H
17 class point;
18 class point2D;
19 class aSegments2D;
20 class pl_intern_spline;
21 class pl_intern_border;
22 class pl_intern_body;
23 class pl_spline;
24 class pl_border;
25 class pl_body;
26 class pl_overlying_splines;
27  */
28 
29 class pl_model:public any_model{
30 protected:
31  db_volume_manager *pdbvTables;
32  db_results_manager *pdbmTables;
33  IntAr* piaInclinometry;
34  aPoints* papInclinometry;
35  pl_intern_borders modelBorders; //nikita 22.04.05
36  Logic parallel_structure_flag;
37  //Parameters for parallel model
39 
40  int read_from_DB(const dbItem &dbiWhere); // Считали откуда надо
41  // Найти по точке тело int get_body(const point &pWhere, pl_intern_body * &pb) const; // Связывание набора плоскостей в систему тел и границ. virtual int correlate(const pl_overlying_splines& apOSplines, pl_intern_body* bInitial,const IntAr& iaSequence); // Для использования в конструкторе по базе данных virtual pl_intern_border* new_border(pl_intern_spline*,border_flag); virtual pl_intern_spline* new_spline(double,double,double,double); virtual pl_intern_body* new_body(geophys_params&); void add_breakpoints (const aPoints&apInclIn,int iI,int iCBody,int iTB); Logic cross_border (const point &p1,const point & p2,point&pRes,int iB); void incl_pass_body (const point &p1,const point & p2,int iC,int&iN); /**Read segments defining borders of model volume */ ErrCode readModelVolumeSegs(dbHandle);//nikita 25.04.05 dbNameStruct dbsModGlass; int write_bodies()const; // Пустой, чтобы из верхних уровней не вызывать ничего pl_model(){ pdbmTables=NULL; piaInclinometry=NULL; papInclinometry=NULL; pdbvTables=NULL; pPMP=NULL; }; public: pl_model(const dbItem &dbiWhere); pl_model(const dbNameStruct &dbh1D, const dbItem &dbiBorders, char* sC,IntAr *iaSequence=NULL); pl_model(pl_model& am); // Конструктор копирования... Не бывает virtual ~pl_model(); unsigned get_model_bounds_num(); Logic get_model_bound(unsigned n, aPoints* points); // Отображение элементов модели int get_border(int i, pl_border &bord) const; // из тела под номером n1 границу с номером n2 int get_border(int n1,int n2, pl_border &pb) const; int get_body(int i, pl_body &bod) const; // Тело по содержащейся в нем точке int get_body(const point &pWhere, pl_body &pb) const; int get_spline(int i, pl_spline &spl) const; // Номер границы в модели по номеру границы в теле int get_border_num(int ibod,int iborloc,int& iborglob) const; // Функция отображения пересечения плоскостей модели с заданной плоскостью int slice(const pl_spline& sSlice, // Локальная система координат const point& p0,const point& p1,const point& p2, // Сюда засунем результат aSegments2D & aSegments, // Сюда засунем границы области моделирования aSegments2D & aBorder, // Here push numbers of bounds to get possibility // select bounds in 3DToolKit program interactively (inserted by nikita) // this parameter is NULL by default to avoid possible uncompatibility with other UNIVERS programs IntAr* borderNumbers = NULL)const; // Определение того, что точка находится внутри области моделирования Logic in_model_area(point p)const; // Запись // virtual int write_to_DB(const dbItem &dbiWhere)const; virtual int write_to_DB(Progress* zp=NULL)const; void get_shots_data(aPoints& apSPs,IntAr& iaDT,IntAr& iaUT){ pdbmTables->get_shots_data(apSPs,iaDT,iaUT); }; void delete_modeling_data(const point& pSP); // По инклинометрии - набор точек пересечения границ модели по этой инкл. const aPoints& install_inclinometry(const aPoints& apInclIn); // Инклинометрия задается парой координат, вертикальная палка const aPoints& install_vertical_inclinometry(double X, double Y); // Получить данные о модели по ^ кривой void get_vp(DoubleAr &)const; void get_kp(DoubleAr &)const; void get_vs(DoubleAr &)const; void get_ks(DoubleAr &)const; void set_vp(const DoubleAr &); void set_kp(const DoubleAr &); void set_vs(const DoubleAr &); void set_ks(const DoubleAr &); Logic get_parallel_flag()const {return parallel_structure_flag;}; void set_parallel_flag(Logic Flag){parallel_structure_flag=Flag;}; parallel_model_params* get_parallel_model_params() {return pPMP;}; void fix_dbStruct(dbNameStruct& dbnsIn)const{pdbvTables->fix_dbStruct(dbnsIn);}; void prepare_tables(point p ,int i1,int i2){ pdbmTables->prepare_tables(p,i1,i2,this); }; p_pl_spline get_point_direction(const point3d &pWhere)const; /* New improvements by Garry */ Logic check_structure(); /* Checking of model structure for possibility to raytracing as in parallel structured model */ Logic get_layers_inclination(double& a, double& b, double& c); Logic set_params_for_parallel(); Logic analyse_gp(int LeadingWaveType); virtual const char* class_id(){return "pl_model";}; virtual Logic isDerivedFrom(const char* class_name); }; #endif /* p_model.H */ /* Melnikov George Y. 17-Sep-1998 */ /* ... */ /* Melnikov George Yu. 29-Nov-1999 */ /* ... */
42  int get_body(const point &pWhere, pl_intern_body * &pb) const;
43  // Связывание набора плоскостей в систему тел и границ.
44  virtual int correlate(const pl_overlying_splines& apOSplines,
45  pl_intern_body* bInitial,const IntAr& iaSequence);
46 
47  // Для использования в конструкторе по базе данных virtual pl_intern_border* new_border(pl_intern_spline*,border_flag); virtual pl_intern_spline* new_spline(double,double,double,double); virtual pl_intern_body* new_body(geophys_params&); void add_breakpoints (const aPoints&apInclIn,int iI,int iCBody,int iTB); Logic cross_border (const point &p1,const point & p2,point&pRes,int iB); void incl_pass_body (const point &p1,const point & p2,int iC,int&iN); /**Read segments defining borders of model volume */ ErrCode readModelVolumeSegs(dbHandle);//nikita 25.04.05 dbNameStruct dbsModGlass; int write_bodies()const; // Пустой, чтобы из верхних уровней не вызывать ничего pl_model(){ pdbmTables=NULL; piaInclinometry=NULL; papInclinometry=NULL; pdbvTables=NULL; pPMP=NULL; }; public: pl_model(const dbItem &dbiWhere); pl_model(const dbNameStruct &dbh1D, const dbItem &dbiBorders, char* sC,IntAr *iaSequence=NULL); pl_model(pl_model& am); // Конструктор копирования... Не бывает virtual ~pl_model(); unsigned get_model_bounds_num(); Logic get_model_bound(unsigned n, aPoints* points); // Отображение элементов модели int get_border(int i, pl_border &bord) const; // из тела под номером n1 границу с номером n2 int get_border(int n1,int n2, pl_border &pb) const; int get_body(int i, pl_body &bod) const; // Тело по содержащейся в нем точке int get_body(const point &pWhere, pl_body &pb) const; int get_spline(int i, pl_spline &spl) const; // Номер границы в модели по номеру границы в теле int get_border_num(int ibod,int iborloc,int& iborglob) const; // Функция отображения пересечения плоскостей модели с заданной плоскостью int slice(const pl_spline& sSlice, // Локальная система координат const point& p0,const point& p1,const point& p2, // Сюда засунем результат aSegments2D & aSegments, // Сюда засунем границы области моделирования aSegments2D & aBorder, // Here push numbers of bounds to get possibility // select bounds in 3DToolKit program interactively (inserted by nikita) // this parameter is NULL by default to avoid possible uncompatibility with other UNIVERS programs IntAr* borderNumbers = NULL)const; // Определение того, что точка находится внутри области моделирования Logic in_model_area(point p)const; // Запись // virtual int write_to_DB(const dbItem &dbiWhere)const; virtual int write_to_DB(Progress* zp=NULL)const; void get_shots_data(aPoints& apSPs,IntAr& iaDT,IntAr& iaUT){ pdbmTables->get_shots_data(apSPs,iaDT,iaUT); }; void delete_modeling_data(const point& pSP); // По инклинометрии - набор точек пересечения границ модели по этой инкл. const aPoints& install_inclinometry(const aPoints& apInclIn); // Инклинометрия задается парой координат, вертикальная палка const aPoints& install_vertical_inclinometry(double X, double Y); // Получить данные о модели по ^ кривой void get_vp(DoubleAr &)const; void get_kp(DoubleAr &)const; void get_vs(DoubleAr &)const; void get_ks(DoubleAr &)const; void set_vp(const DoubleAr &); void set_kp(const DoubleAr &); void set_vs(const DoubleAr &); void set_ks(const DoubleAr &); Logic get_parallel_flag()const {return parallel_structure_flag;}; void set_parallel_flag(Logic Flag){parallel_structure_flag=Flag;}; parallel_model_params* get_parallel_model_params() {return pPMP;}; void fix_dbStruct(dbNameStruct& dbnsIn)const{pdbvTables->fix_dbStruct(dbnsIn);}; void prepare_tables(point p ,int i1,int i2){ pdbmTables->prepare_tables(p,i1,i2,this); }; p_pl_spline get_point_direction(const point3d &pWhere)const; /* New improvements by Garry */ Logic check_structure(); /* Checking of model structure for possibility to raytracing as in parallel structured model */ Logic get_layers_inclination(double& a, double& b, double& c); Logic set_params_for_parallel(); Logic analyse_gp(int LeadingWaveType); virtual const char* class_id(){return "pl_model";}; virtual Logic isDerivedFrom(const char* class_name); }; #endif /* p_model.H */ /* Melnikov George Y. 17-Sep-1998 */ /* ... */ /* Melnikov George Yu. 29-Nov-1999 */ /* ... */
48  virtual pl_intern_border* new_border(pl_intern_spline*,border_flag);
49  virtual pl_intern_spline* new_spline(double,double,double,double);
50  virtual pl_intern_body* new_body(geophys_params&);
51  void add_breakpoints (const aPoints&apInclIn,int iI,int iCBody,int iTB);
52  Logic cross_border (const point &p1,const point & p2,point&pRes,int iB);
53  void incl_pass_body (const point &p1,const point & p2,int iC,int&iN);
54 
56  ErrCode readModelVolumeSegs(dbHandle);//nikita 25.04.05
57  dbNameStruct dbsModGlass;
58  int write_bodies()const;
59  // Пустой, чтобы из верхних уровней не вызывать ничего pl_model(){ pdbmTables=NULL; piaInclinometry=NULL; papInclinometry=NULL; pdbvTables=NULL; pPMP=NULL; }; public: pl_model(const dbItem &dbiWhere); pl_model(const dbNameStruct &dbh1D, const dbItem &dbiBorders, char* sC,IntAr *iaSequence=NULL); pl_model(pl_model& am); // Конструктор копирования... Не бывает virtual ~pl_model(); unsigned get_model_bounds_num(); Logic get_model_bound(unsigned n, aPoints* points); // Отображение элементов модели int get_border(int i, pl_border &bord) const; // из тела под номером n1 границу с номером n2 int get_border(int n1,int n2, pl_border &pb) const; int get_body(int i, pl_body &bod) const; // Тело по содержащейся в нем точке int get_body(const point &pWhere, pl_body &pb) const; int get_spline(int i, pl_spline &spl) const; // Номер границы в модели по номеру границы в теле int get_border_num(int ibod,int iborloc,int& iborglob) const; // Функция отображения пересечения плоскостей модели с заданной плоскостью int slice(const pl_spline& sSlice, // Локальная система координат const point& p0,const point& p1,const point& p2, // Сюда засунем результат aSegments2D & aSegments, // Сюда засунем границы области моделирования aSegments2D & aBorder, // Here push numbers of bounds to get possibility // select bounds in 3DToolKit program interactively (inserted by nikita) // this parameter is NULL by default to avoid possible uncompatibility with other UNIVERS programs IntAr* borderNumbers = NULL)const; // Определение того, что точка находится внутри области моделирования Logic in_model_area(point p)const; // Запись // virtual int write_to_DB(const dbItem &dbiWhere)const; virtual int write_to_DB(Progress* zp=NULL)const; void get_shots_data(aPoints& apSPs,IntAr& iaDT,IntAr& iaUT){ pdbmTables->get_shots_data(apSPs,iaDT,iaUT); }; void delete_modeling_data(const point& pSP); // По инклинометрии - набор точек пересечения границ модели по этой инкл. const aPoints& install_inclinometry(const aPoints& apInclIn); // Инклинометрия задается парой координат, вертикальная палка const aPoints& install_vertical_inclinometry(double X, double Y); // Получить данные о модели по ^ кривой void get_vp(DoubleAr &)const; void get_kp(DoubleAr &)const; void get_vs(DoubleAr &)const; void get_ks(DoubleAr &)const; void set_vp(const DoubleAr &); void set_kp(const DoubleAr &); void set_vs(const DoubleAr &); void set_ks(const DoubleAr &); Logic get_parallel_flag()const {return parallel_structure_flag;}; void set_parallel_flag(Logic Flag){parallel_structure_flag=Flag;}; parallel_model_params* get_parallel_model_params() {return pPMP;}; void fix_dbStruct(dbNameStruct& dbnsIn)const{pdbvTables->fix_dbStruct(dbnsIn);}; void prepare_tables(point p ,int i1,int i2){ pdbmTables->prepare_tables(p,i1,i2,this); }; p_pl_spline get_point_direction(const point3d &pWhere)const; /* New improvements by Garry */ Logic check_structure(); /* Checking of model structure for possibility to raytracing as in parallel structured model */ Logic get_layers_inclination(double& a, double& b, double& c); Logic set_params_for_parallel(); Logic analyse_gp(int LeadingWaveType); virtual const char* class_id(){return "pl_model";}; virtual Logic isDerivedFrom(const char* class_name); }; #endif /* p_model.H */ /* Melnikov George Y. 17-Sep-1998 */ /* ... */ /* Melnikov George Yu. 29-Nov-1999 */ /* ... */
60  pl_model(){
61  pdbmTables=NULL;
62  piaInclinometry=NULL;
63  papInclinometry=NULL;
64  pdbvTables=NULL;
65  pPMP=NULL;
66  };
67 
68 public:
69  pl_model(const dbItem &dbiWhere);
70  pl_model(const dbNameStruct &dbh1D, const dbItem &dbiBorders,
71  char* sC,IntAr *iaSequence=NULL);
72  pl_model(pl_model& am); // Конструктор копирования... Не бывает
73  virtual ~pl_model();
74 
75  unsigned get_model_bounds_num();
76  Logic get_model_bound(unsigned n, aPoints* points);
77 
78  // Отображение элементов модели
79  int get_border(int i, pl_border &bord) const;
80  // из тела под номером n1 границу с номером n2
81  int get_border(int n1,int n2, pl_border &pb) const;
82  int get_body(int i, pl_body &bod) const;
83  // Тело по содержащейся в нем точке
84  int get_body(const point &pWhere, pl_body &pb) const;
85  int get_spline(int i, pl_spline &spl) const;
86 
87  // Номер границы в модели по номеру границы в теле int get_border_num(int ibod,int iborloc,int& iborglob) const; // Функция отображения пересечения плоскостей модели с заданной плоскостью int slice(const pl_spline& sSlice, // Локальная система координат const point& p0,const point& p1,const point& p2, // Сюда засунем результат aSegments2D & aSegments, // Сюда засунем границы области моделирования aSegments2D & aBorder, // Here push numbers of bounds to get possibility // select bounds in 3DToolKit program interactively (inserted by nikita) // this parameter is NULL by default to avoid possible uncompatibility with other UNIVERS programs IntAr* borderNumbers = NULL)const; // Определение того, что точка находится внутри области моделирования Logic in_model_area(point p)const; // Запись // virtual int write_to_DB(const dbItem &dbiWhere)const; virtual int write_to_DB(Progress* zp=NULL)const; void get_shots_data(aPoints& apSPs,IntAr& iaDT,IntAr& iaUT){ pdbmTables->get_shots_data(apSPs,iaDT,iaUT); }; void delete_modeling_data(const point& pSP); // По инклинометрии - набор точек пересечения границ модели по этой инкл. const aPoints& install_inclinometry(const aPoints& apInclIn); // Инклинометрия задается парой координат, вертикальная палка const aPoints& install_vertical_inclinometry(double X, double Y); // Получить данные о модели по ^ кривой void get_vp(DoubleAr &)const; void get_kp(DoubleAr &)const; void get_vs(DoubleAr &)const; void get_ks(DoubleAr &)const; void set_vp(const DoubleAr &); void set_kp(const DoubleAr &); void set_vs(const DoubleAr &); void set_ks(const DoubleAr &); Logic get_parallel_flag()const {return parallel_structure_flag;}; void set_parallel_flag(Logic Flag){parallel_structure_flag=Flag;}; parallel_model_params* get_parallel_model_params() {return pPMP;}; void fix_dbStruct(dbNameStruct& dbnsIn)const{pdbvTables->fix_dbStruct(dbnsIn);}; void prepare_tables(point p ,int i1,int i2){ pdbmTables->prepare_tables(p,i1,i2,this); }; p_pl_spline get_point_direction(const point3d &pWhere)const; /* New improvements by Garry */ Logic check_structure(); /* Checking of model structure for possibility to raytracing as in parallel structured model */ Logic get_layers_inclination(double& a, double& b, double& c); Logic set_params_for_parallel(); Logic analyse_gp(int LeadingWaveType); virtual const char* class_id(){return "pl_model";}; virtual Logic isDerivedFrom(const char* class_name); }; #endif /* p_model.H */ /* Melnikov George Y. 17-Sep-1998 */ /* ... */ /* Melnikov George Yu. 29-Nov-1999 */ /* ... */
88  int get_border_num(int ibod,int iborloc,int& iborglob) const;
89 
90  // Функция отображения пересечения плоскостей модели с заданной плоскостью int slice(const pl_spline& sSlice, // Локальная система координат const point& p0,const point& p1,const point& p2, // Сюда засунем результат aSegments2D & aSegments, // Сюда засунем границы области моделирования aSegments2D & aBorder, // Here push numbers of bounds to get possibility // select bounds in 3DToolKit program interactively (inserted by nikita) // this parameter is NULL by default to avoid possible uncompatibility with other UNIVERS programs IntAr* borderNumbers = NULL)const; // Определение того, что точка находится внутри области моделирования Logic in_model_area(point p)const; // Запись // virtual int write_to_DB(const dbItem &dbiWhere)const; virtual int write_to_DB(Progress* zp=NULL)const; void get_shots_data(aPoints& apSPs,IntAr& iaDT,IntAr& iaUT){ pdbmTables->get_shots_data(apSPs,iaDT,iaUT); }; void delete_modeling_data(const point& pSP); // По инклинометрии - набор точек пересечения границ модели по этой инкл. const aPoints& install_inclinometry(const aPoints& apInclIn); // Инклинометрия задается парой координат, вертикальная палка const aPoints& install_vertical_inclinometry(double X, double Y); // Получить данные о модели по ^ кривой void get_vp(DoubleAr &)const; void get_kp(DoubleAr &)const; void get_vs(DoubleAr &)const; void get_ks(DoubleAr &)const; void set_vp(const DoubleAr &); void set_kp(const DoubleAr &); void set_vs(const DoubleAr &); void set_ks(const DoubleAr &); Logic get_parallel_flag()const {return parallel_structure_flag;}; void set_parallel_flag(Logic Flag){parallel_structure_flag=Flag;}; parallel_model_params* get_parallel_model_params() {return pPMP;}; void fix_dbStruct(dbNameStruct& dbnsIn)const{pdbvTables->fix_dbStruct(dbnsIn);}; void prepare_tables(point p ,int i1,int i2){ pdbmTables->prepare_tables(p,i1,i2,this); }; p_pl_spline get_point_direction(const point3d &pWhere)const; /* New improvements by Garry */ Logic check_structure(); /* Checking of model structure for possibility to raytracing as in parallel structured model */ Logic get_layers_inclination(double& a, double& b, double& c); Logic set_params_for_parallel(); Logic analyse_gp(int LeadingWaveType); virtual const char* class_id(){return "pl_model";}; virtual Logic isDerivedFrom(const char* class_name); }; #endif /* p_model.H */ /* Melnikov George Y. 17-Sep-1998 */ /* ... */ /* Melnikov George Yu. 29-Nov-1999 */ /* ... */
91  int slice(const pl_spline& sSlice,
92  // Локальная система координат const point& p0,const point& p1,const point& p2, // Сюда засунем результат aSegments2D & aSegments, // Сюда засунем границы области моделирования aSegments2D & aBorder, // Here push numbers of bounds to get possibility // select bounds in 3DToolKit program interactively (inserted by nikita) // this parameter is NULL by default to avoid possible uncompatibility with other UNIVERS programs IntAr* borderNumbers = NULL)const; // Определение того, что точка находится внутри области моделирования Logic in_model_area(point p)const; // Запись // virtual int write_to_DB(const dbItem &dbiWhere)const; virtual int write_to_DB(Progress* zp=NULL)const; void get_shots_data(aPoints& apSPs,IntAr& iaDT,IntAr& iaUT){ pdbmTables->get_shots_data(apSPs,iaDT,iaUT); }; void delete_modeling_data(const point& pSP); // По инклинометрии - набор точек пересечения границ модели по этой инкл. const aPoints& install_inclinometry(const aPoints& apInclIn); // Инклинометрия задается парой координат, вертикальная палка const aPoints& install_vertical_inclinometry(double X, double Y); // Получить данные о модели по ^ кривой void get_vp(DoubleAr &)const; void get_kp(DoubleAr &)const; void get_vs(DoubleAr &)const; void get_ks(DoubleAr &)const; void set_vp(const DoubleAr &); void set_kp(const DoubleAr &); void set_vs(const DoubleAr &); void set_ks(const DoubleAr &); Logic get_parallel_flag()const {return parallel_structure_flag;}; void set_parallel_flag(Logic Flag){parallel_structure_flag=Flag;}; parallel_model_params* get_parallel_model_params() {return pPMP;}; void fix_dbStruct(dbNameStruct& dbnsIn)const{pdbvTables->fix_dbStruct(dbnsIn);}; void prepare_tables(point p ,int i1,int i2){ pdbmTables->prepare_tables(p,i1,i2,this); }; p_pl_spline get_point_direction(const point3d &pWhere)const; /* New improvements by Garry */ Logic check_structure(); /* Checking of model structure for possibility to raytracing as in parallel structured model */ Logic get_layers_inclination(double& a, double& b, double& c); Logic set_params_for_parallel(); Logic analyse_gp(int LeadingWaveType); virtual const char* class_id(){return "pl_model";}; virtual Logic isDerivedFrom(const char* class_name); }; #endif /* p_model.H */ /* Melnikov George Y. 17-Sep-1998 */ /* ... */ /* Melnikov George Yu. 29-Nov-1999 */ /* ... */
93  const point& p0,const point& p1,const point& p2,
94  // Сюда засунем результат
95  aSegments2D & aSegments,
96  // Сюда засунем границы области моделирования
97  aSegments2D & aBorder,
98  // Here push numbers of bounds to get possibility
99  // select bounds in 3DToolKit program interactively (inserted by nikita)
100  // this parameter is NULL by default to avoid possible uncompatibility with other UNIVERS programs
101  IntAr* borderNumbers = NULL)const;
102 
103  // Определение того, что точка находится внутри области моделирования
104  Logic in_model_area(point p)const;
105  // Запись // virtual int write_to_DB(const dbItem &dbiWhere)const; virtual int write_to_DB(Progress* zp=NULL)const; void get_shots_data(aPoints& apSPs,IntAr& iaDT,IntAr& iaUT){ pdbmTables->get_shots_data(apSPs,iaDT,iaUT); }; void delete_modeling_data(const point& pSP); // По инклинометрии - набор точек пересечения границ модели по этой инкл. const aPoints& install_inclinometry(const aPoints& apInclIn); // Инклинометрия задается парой координат, вертикальная палка const aPoints& install_vertical_inclinometry(double X, double Y); // Получить данные о модели по ^ кривой void get_vp(DoubleAr &)const; void get_kp(DoubleAr &)const; void get_vs(DoubleAr &)const; void get_ks(DoubleAr &)const; void set_vp(const DoubleAr &); void set_kp(const DoubleAr &); void set_vs(const DoubleAr &); void set_ks(const DoubleAr &); Logic get_parallel_flag()const {return parallel_structure_flag;}; void set_parallel_flag(Logic Flag){parallel_structure_flag=Flag;}; parallel_model_params* get_parallel_model_params() {return pPMP;}; void fix_dbStruct(dbNameStruct& dbnsIn)const{pdbvTables->fix_dbStruct(dbnsIn);}; void prepare_tables(point p ,int i1,int i2){ pdbmTables->prepare_tables(p,i1,i2,this); }; p_pl_spline get_point_direction(const point3d &pWhere)const; /* New improvements by Garry */ Logic check_structure(); /* Checking of model structure for possibility to raytracing as in parallel structured model */ Logic get_layers_inclination(double& a, double& b, double& c); Logic set_params_for_parallel(); Logic analyse_gp(int LeadingWaveType); virtual const char* class_id(){return "pl_model";}; virtual Logic isDerivedFrom(const char* class_name); }; #endif /* p_model.H */ /* Melnikov George Y. 17-Sep-1998 */ /* ... */ /* Melnikov George Yu. 29-Nov-1999 */ /* ... */
106  // virtual int write_to_DB(const dbItem &dbiWhere)const;
107  virtual int write_to_DB(Progress* zp=NULL)const;
108  void get_shots_data(aPoints& apSPs,IntAr& iaDT,IntAr& iaUT){
109  pdbmTables->get_shots_data(apSPs,iaDT,iaUT);
110  };
111  void delete_modeling_data(const point& pSP);
112 
113  // По инклинометрии - набор точек пересечения границ модели по этой инкл.
114  const aPoints& install_inclinometry(const aPoints& apInclIn);
115  // Инклинометрия задается парой координат, вертикальная палка
116  const aPoints& install_vertical_inclinometry(double X, double Y);
117 
118  // Получить данные о модели по ^ кривой
119  void get_vp(DoubleAr &)const;
120  void get_kp(DoubleAr &)const;
121  void get_vs(DoubleAr &)const;
122  void get_ks(DoubleAr &)const;
123 
124  void set_vp(const DoubleAr &);
125  void set_kp(const DoubleAr &);
126  void set_vs(const DoubleAr &);
127  void set_ks(const DoubleAr &);
128 
129  Logic get_parallel_flag()const {return parallel_structure_flag;};
130  void set_parallel_flag(Logic Flag){parallel_structure_flag=Flag;};
131  parallel_model_params* get_parallel_model_params() {return pPMP;};
132 
133  void fix_dbStruct(dbNameStruct& dbnsIn)const{pdbvTables->fix_dbStruct(dbnsIn);};
134  void prepare_tables(point p ,int i1,int i2){
135  pdbmTables->prepare_tables(p,i1,i2,this);
136  };
137  p_pl_spline get_point_direction(const point3d &pWhere)const;
138 
139  /* New improvements by Garry */
140  Logic check_structure(); /* Checking of model structure for possibility to
141  raytracing as in parallel structured model */
142  Logic get_layers_inclination(double& a, double& b, double& c);
143  Logic set_params_for_parallel();
144  Logic analyse_gp(int LeadingWaveType);
145 
146  virtual const char* class_id(){return "pl_model";};
147  virtual Logic isDerivedFrom(const char* class_name);
148 
149 };
150 
151 #endif /* p_model.H */
152 
153 /* Melnikov George Y. 17-Sep-1998 */
154 /* ... */
155 /* Melnikov George Yu. 29-Nov-1999 */
156 /* ... */
Definition: any_elements.H:43
Definition: p_elements.H:225
Definition: p_elements.H:86
Definition: any_elements.H:22
Definition: p_model.H:29
Definition: dbnamedefs.h:67
Definition: any_model.H:30
Definition: db_managers.H:75
Definition: p_elements.H:23
Definition: p_elements.H:201
Definition: IntAr.H:14
ErrCode readModelVolumeSegs(dbHandle)
Definition: p_elements.H:145
Definition: db_managers.H:18
Definition: p_elements.H:168
Definition: geometry.H:16
Definition: ObjectsAr.H:21
Definition: Progress.hpp:16
Definition: DoubleAr.H:14
Definition: dbnamedefs.h:85