UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
p_raytr_model.H
1 /* p_raytr_model.H */
2 /* $Id: p_raytr_model.H,v 2.7 2005/07/18 07:16:05 nikita Exp $ */
3 #ifndef __p_raytr_model_H
4 #define __p_raytr_model_H
5 /*
6  Модель, поддерживающая настрел лучей.
7  */
8 
9 #include <mix/trset.h>
10 #include <mod3d/p_model.H>
11 #include <mix/Progress.hpp>
12 
13 #include <mod3d/db_container.H>
14 
15 #include "rays.H"
16 #include "p_raytr_elements.H"
17 
18 // Организация условной компиляции для отладки // Не забыть удалить в окончательной версии #ifdef GDEBUG #define PM_DEBUG_PATH "res/" #endif class pl_intern_raytr_border; #define PM_DOWNGOING (1<<0) #define PM_UPGOING (2<<0) class pl_raytr_model:public pl_model{ protected: int iTest; int iHRStoreRegime; rays_to_receivers HitRays; // Лучи, прошедшие из источника в приемник receivers aReceivers; // В один момент обрабатываем только один источник (пока что) rays_shoot * pRays; // Набор лучей из источника // Попадание в точку с начальными параметрами. Если попало - TRUE // Общий случай Logic hit_general(point3d,ray_parameters,ray*&, general_hit_info&,const crossing *pCG=NULL) const; // Паллиативы с прежних времен, может, в straight-ребенка перенесу Logic hit(point3d,ray*,int,ray*&,double dAcc, crossing *pCG=NULL) const; // прямая волна Logic hit_reflected(point3d,ray*,int,ray*&, int,double dAcc, crossing *pCG=NULL) const; // отраженная волна Logic hit_straight_through_edge(const point3d& ,ray *&,double ) const; void fix_fi_az(const double&dFi,const double&dAz,const double&dDFi, const double&dDAz,double&dFiFin,double&dAzFin)const; public: pl_raytr_model (const dbItem &dbiWhere); pl_raytr_model (); ~pl_raytr_model (); pl_raytr_model (pl_model& am); int n_of_receivers(){return aReceivers.count();}; void store(StorageID sid)const; void load(StorageID sid); //start of insertion by nikita /** Get paths of rays to given receiver */ const rayPathAr* get_rays_paths_to_receiver(int receiverId); //end of insertion by nikita // Для Игоря, чтобы показывать, что уже настрелено (возможно перемещение // в другой класс, постарше) // Подгрузить лучи, которые попадали в какие-нибудь приемники (источник один) void load_rays_to_receivers(const point &,int ik1,int ik2); // Выдать все пересечения всех подгруженных ^ функцией лучей void get_rays_to_receivers_reflections(aPoints&)const; // Остальные подобные ^ функции будут приписываться по мере надобности // Потребуется ... ray * raw_ray(double f,double a){ return pRays->raw_ray(f,a); }; void get_receivers_numbers(IntAr& iaN1,IntAr& iaN2) const; void get_receivers(aPoints&) const; //start of insertion by nikita /** Get receiver information by it's number */ void get_receiver(int nRec, receiver_info* Rec); /** Get model receivers*/ void get_receivers(receivers* aRec); /** get list of receivers inside of depth interval */ void get_receivers_in_depth_interval(float start, float end, receivers* aRec); //end of insertion by nikita void set_hr_dbwrite_regime (int iR); virtual const char* class_id(){return "pl_raytr_model";};//nikita virtual Logic isDerivedFrom(const char* class_name);//nikita friend class rays_set; }; #endif /* p_raytr_model.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
19 
20 // Не забыть удалить в окончательной версии#ifdef GDEBUG #define PM_DEBUG_PATH "res/" #endif class pl_intern_raytr_border; #define PM_DOWNGOING (1<<0) #define PM_UPGOING (2<<0) class pl_raytr_model:public pl_model{ protected: int iTest; int iHRStoreRegime; rays_to_receivers HitRays; // Лучи, прошедшие из источника в приемник receivers aReceivers; // В один момент обрабатываем только один источник (пока что) rays_shoot * pRays; // Набор лучей из источника // Попадание в точку с начальными параметрами. Если попало - TRUE // Общий случай Logic hit_general(point3d,ray_parameters,ray*&, general_hit_info&,const crossing *pCG=NULL) const; // Паллиативы с прежних времен, может, в straight-ребенка перенесу Logic hit(point3d,ray*,int,ray*&,double dAcc, crossing *pCG=NULL) const; // прямая волна Logic hit_reflected(point3d,ray*,int,ray*&, int,double dAcc, crossing *pCG=NULL) const; // отраженная волна Logic hit_straight_through_edge(const point3d& ,ray *&,double ) const; void fix_fi_az(const double&dFi,const double&dAz,const double&dDFi, const double&dDAz,double&dFiFin,double&dAzFin)const; public: pl_raytr_model (const dbItem &dbiWhere); pl_raytr_model (); ~pl_raytr_model (); pl_raytr_model (pl_model& am); int n_of_receivers(){return aReceivers.count();}; void store(StorageID sid)const; void load(StorageID sid); //start of insertion by nikita /** Get paths of rays to given receiver */ const rayPathAr* get_rays_paths_to_receiver(int receiverId); //end of insertion by nikita // Для Игоря, чтобы показывать, что уже настрелено (возможно перемещение // в другой класс, постарше) // Подгрузить лучи, которые попадали в какие-нибудь приемники (источник один) void load_rays_to_receivers(const point &,int ik1,int ik2); // Выдать все пересечения всех подгруженных ^ функцией лучей void get_rays_to_receivers_reflections(aPoints&)const; // Остальные подобные ^ функции будут приписываться по мере надобности // Потребуется ... ray * raw_ray(double f,double a){ return pRays->raw_ray(f,a); }; void get_receivers_numbers(IntAr& iaN1,IntAr& iaN2) const; void get_receivers(aPoints&) const; //start of insertion by nikita /** Get receiver information by it's number */ void get_receiver(int nRec, receiver_info* Rec); /** Get model receivers*/ void get_receivers(receivers* aRec); /** get list of receivers inside of depth interval */ void get_receivers_in_depth_interval(float start, float end, receivers* aRec); //end of insertion by nikita void set_hr_dbwrite_regime (int iR); virtual const char* class_id(){return "pl_raytr_model";};//nikita virtual Logic isDerivedFrom(const char* class_name);//nikita friend class rays_set; }; #endif /* p_raytr_model.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
21 #ifdef GDEBUG
22 
23 #define PM_DEBUG_PATH "res/"
24 
25 #endif
26 
27 class pl_intern_raytr_border;
28 
29 #define PM_DOWNGOING (1<<0)
30 #define PM_UPGOING (2<<0)
31 
32 class pl_raytr_model:public pl_model{
33 protected:
34 
35  int iTest;
36  int iHRStoreRegime;
37 
38  rays_to_receivers HitRays; // Лучи, прошедшие из источника в приемник
39 
40  receivers aReceivers;
41 
42  // В один момент обрабатываем только один источник (пока что)
43  rays_shoot * pRays; // Набор лучей из источника
44 
45  // Попадание в точку с начальными параметрами. Если попало - TRUE
46  // Общий случай
47  Logic hit_general(point3d,ray_parameters,ray*&,
48  general_hit_info&,const crossing *pCG=NULL) const;
49 
50  // Паллиативы с прежних времен, может, в straight-ребенка перенесу Logic hit(point3d,ray*,int,ray*&,double dAcc, crossing *pCG=NULL) const; // прямая волна Logic hit_reflected(point3d,ray*,int,ray*&, int,double dAcc, crossing *pCG=NULL) const; // отраженная волна Logic hit_straight_through_edge(const point3d& ,ray *&,double ) const; void fix_fi_az(const double&dFi,const double&dAz,const double&dDFi, const double&dDAz,double&dFiFin,double&dAzFin)const; public: pl_raytr_model (const dbItem &dbiWhere); pl_raytr_model (); ~pl_raytr_model (); pl_raytr_model (pl_model& am); int n_of_receivers(){return aReceivers.count();}; void store(StorageID sid)const; void load(StorageID sid); //start of insertion by nikita /** Get paths of rays to given receiver */ const rayPathAr* get_rays_paths_to_receiver(int receiverId); //end of insertion by nikita // Для Игоря, чтобы показывать, что уже настрелено (возможно перемещение // в другой класс, постарше) // Подгрузить лучи, которые попадали в какие-нибудь приемники (источник один) void load_rays_to_receivers(const point &,int ik1,int ik2); // Выдать все пересечения всех подгруженных ^ функцией лучей void get_rays_to_receivers_reflections(aPoints&)const; // Остальные подобные ^ функции будут приписываться по мере надобности // Потребуется ... ray * raw_ray(double f,double a){ return pRays->raw_ray(f,a); }; void get_receivers_numbers(IntAr& iaN1,IntAr& iaN2) const; void get_receivers(aPoints&) const; //start of insertion by nikita /** Get receiver information by it's number */ void get_receiver(int nRec, receiver_info* Rec); /** Get model receivers*/ void get_receivers(receivers* aRec); /** get list of receivers inside of depth interval */ void get_receivers_in_depth_interval(float start, float end, receivers* aRec); //end of insertion by nikita void set_hr_dbwrite_regime (int iR); virtual const char* class_id(){return "pl_raytr_model";};//nikita virtual Logic isDerivedFrom(const char* class_name);//nikita friend class rays_set; }; #endif /* p_raytr_model.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
51  Logic hit(point3d,ray*,int,ray*&,double dAcc,
52  crossing *pCG=NULL) const; // прямая волна
53  Logic hit_reflected(point3d,ray*,int,ray*&,
54  int,double dAcc,
55  crossing *pCG=NULL) const; // отраженная волна
56  Logic hit_straight_through_edge(const point3d& ,ray *&,double ) const;
57  void fix_fi_az(const double&dFi,const double&dAz,const double&dDFi,
58  const double&dDAz,double&dFiFin,double&dAzFin)const;
59 public:
60 
61  pl_raytr_model (const dbItem &dbiWhere);
62  pl_raytr_model ();
63  ~pl_raytr_model ();
65 
66  int n_of_receivers(){return aReceivers.count();};
67 
68  void store(StorageID sid)const;
69  void load(StorageID sid);
70 
71  //start of insertion by nikita
73  const rayPathAr* get_rays_paths_to_receiver(int receiverId);
74  //end of insertion by nikita
75 
76  // Для Игоря, чтобы показывать, что уже настрелено (возможно перемещение
77  // в другой класс, постарше)
78 
79  // Подгрузить лучи, которые попадали в какие-нибудь приемники (источник один)
80  void load_rays_to_receivers(const point &,int ik1,int ik2);
81  // Выдать все пересечения всех подгруженных ^ функцией лучей
82  void get_rays_to_receivers_reflections(aPoints&)const;
83  // Остальные подобные ^ функции будут приписываться по мере надобности // Потребуется ... ray * raw_ray(double f,double a){ return pRays->raw_ray(f,a); }; void get_receivers_numbers(IntAr& iaN1,IntAr& iaN2) const; void get_receivers(aPoints&) const; //start of insertion by nikita /** Get receiver information by it's number */ void get_receiver(int nRec, receiver_info* Rec); /** Get model receivers*/ void get_receivers(receivers* aRec); /** get list of receivers inside of depth interval */ void get_receivers_in_depth_interval(float start, float end, receivers* aRec); //end of insertion by nikita void set_hr_dbwrite_regime (int iR); virtual const char* class_id(){return "pl_raytr_model";};//nikita virtual Logic isDerivedFrom(const char* class_name);//nikita friend class rays_set; }; #endif /* p_raytr_model.H */ /* Melnikov George Y. 2-Nov-1998 */ /* ... */ /* Melnikov George Yu. 31-Jan-2000 */ /* ... */
84 
85  // Потребуется ...
86  ray * raw_ray(double f,double a){
87  return pRays->raw_ray(f,a);
88  };
89 
90  void get_receivers_numbers(IntAr& iaN1,IntAr& iaN2) const;
91  void get_receivers(aPoints&) const;
92 
93  //start of insertion by nikita
95  void get_receiver(int nRec, receiver_info* Rec);
96 
98  void get_receivers(receivers* aRec);
99 
101  void get_receivers_in_depth_interval(float start, float end, receivers* aRec);
102  //end of insertion by nikita
103  void set_hr_dbwrite_regime (int iR);
104 
105  virtual const char* class_id(){return "pl_raytr_model";};//nikita
106 
107  virtual Logic isDerivedFrom(const char* class_name);//nikita
108 
109  friend class rays_set;
110 };
111 
112 
113 #endif /* p_raytr_model.H */
114 /* Melnikov George Y. 2-Nov-1998 */
115 /* ... */
116 /* Melnikov George Yu. 31-Jan-2000 */
117 /* ... */
118 
119 
void get_receivers_in_depth_interval(float start, float end, receivers *aRec)
Definition: p_raytr_elements.H:113
Definition: p_model.H:29
Definition: p_raytr_elements.H:38
Definition: IntAr.H:14
Definition: rays.H:61
Definition: geometry.H:16
Definition: rays.H:207
Definition: rays.H:81
Definition: db_container.H:24
Definition: rays.H:223
const rayPathAr * get_rays_paths_to_receiver(int receiverId)
Definition: p_raytr_hits.H:31
void get_receiver(int nRec, receiver_info *Rec)
Definition: dbnamedefs.h:85
Definition: p_raytr_model.H:32