8 #include <zm/ZmProgress.H>
9 #include "ray_tracing.hpp"
10 #include <mth/u2d_box.hpp>
96 typedef vector<LSpoint> LSpointsAr;
103 LSpointsAr startLSps;
158 void Shooter(
double stAngle,
double endAngle,
int target,
double fStep,
int &rNum,
159 double *rT,
double *rAmpl,
double *rAngle,
double *recF,
int *recNum);
160 void Shooter2(
double stAngle,
double endAngle,
int &num,
double *recT,
161 double *recAmpl,
double *recAngle,
double *recF,
int *recNum);
163 void GetWATimes(WAVE_TYPE wT,
double *recX,
double *recZ,
int n,
double *recT);
166 void GetWavePath(
CodeAr rCode,
WavePath *wp,
bool &good_path_flag,
bool &stop_pressed_flag,
double dl=10.,
double den=10.);
169 void GetDirectWavePath(
CodeAr rCode,
WavePath *wp,
bool &good_path_flag,
bool &stop_pressed_flag,
double dl=10.,
double den=10.);
178 void MShooterSP(WAVE_TYPE wT,
LSList *resLS,
bool &stop_pressed_flag,
double sx = -1.,
double sz = -1.,
int ns_bnum=-1);
179 void MShooterSPNew(WAVE_TYPE wT,
LSlist *resLS,
bool &stop_pressed_flag,
double sx = -1.,
double sz = -1.,
int ns_bnum=-1);
181 void MShooterUP(WAVE_TYPE wT,
bool rt,
LSList *ls,
RecInfoAr &recInfos,
bool &stop_pressed_flag,
int tbn=-1);
182 void MShooterDOWN(WAVE_TYPE wT,
bool rt,
LSList *inLS,
LSList *outLS,
bool &stop_pressed_flag);
185 void MShooterUniversal(WAVE_TYPE wT,
bool rt,
LSlist *inLS,
LSlist *outLS,
bool &stop_pressed_flag,
bool WellShoot,
int tbn,
RTParams &rtp);
191 void MShooterREC(
int n1=-1,
int n2=-1, WAVE_TYPE wt=PRESSURE);
193 void stop_MShooter(
bool &stop_pressed_flag,
LSInfo *&lsDesc);
194 void stop_MShooterUP(
bool &stop_pressed_flag,
RecInfoAr &recInfos);
197 bool firstLsPoint(
double spX,
double spZ,
198 double &startF,
double &stepF,
203 bool &stop_pressed_flag);
205 void exactFirstPoint(
double spX,
double spZ,
206 double &startF,
double &stepF,
209 bool &stop_pressed_flag);
211 bool sourceShooter(
double spX,
double spZ,
212 double &startF,
double &stepF,
218 bool &stop_pressed_flag);
223 void SaveHod(
RecInfoAr recInfos,
double spX,
double spZ,
int fbLine=-1,
int pmLine=-1);
225 void SaveLS(
dbItem dbiLSList,
double spX,
double spZ,
228 void LoadLS(
dbItem dbiLSList,
LSInfo *ls,
double &spX,
double &spZ, WAVE_TYPE &wt,
double &eps,
int &bNum);
232 void SaveRecLS(
int recNum, WAVE_TYPE wt,
int bodyNum,
double eps,
LSList *recLS);
234 bool LoadRecLS(
int recNum, WAVE_TYPE wt,
int bNum,
LSList *recLS);
236 void DeleteLSList(
dbItem dbiModelList);
246 void LSShooterUP(
WavePath *wp, WAVE_TYPE wT,
bool rt,
LSList *ls,
RecInfoAr &recInfos,
bool &stop_pressed_flag,
int tbn=-1);
254 void clean_LS(
LSList *&_list);
257 void GetActiveZoneStart(
CodeAr rCode,
int_ar *bNums,
double &tmp_f,
double &start_x,
double &start_z,
258 double first_x,
double first_z,
double angleStep2,
double eps);
261 void OneDirectShoot(
double x0,
double z0,
double x1,
double z1,
double base_angle,
int rec_num,
262 double &result_x,
double &result_z,
double &result_angle,
double &result_f,
double &time,
double eps);
265 bool CheckRec(
int rec_num,
int bNum);
268 void GetNearestRecNum(
int bodyNum,
double last_x,
double last_z,
int &first_rec,
int &count);
274 bool MShooterDownStN(
LSInfo *LS,
int stBN,
RTParams rtp,
int &stN,
int &bn);
276 LSPoint &ilsp,
double &stF,
double &dL);
287 bool GetNextPoint(
int bn,
LSPoint lsp1,
double dl,
LSPoint &lsp2);
289 bool MShooterUnivFP(
LSInfo *LS,
int &num,
int &bNum,
int stBNum,
RTParams rtp,
LSPoint &lsp,
LSPoint &ilsp,
double &stF,
double &dL,
bool WellShoot);
293 bool MShooterUnivStN(
LSInfo *LS,
int stBN,
RTParams rtp,
int &stN,
int &bn,
bool WellShoot);
297 bool HalfAngleShooter(
double spX,
double spZ,
double startF,
double stepF,
CodeAr rCode,
int_ar *bNums,
bool raySave,
LSInfo *InterLS);
298 bool DoudleTransform(
RTParams rtp,
LSList *inLS,
int lsnum,
LSInfo *WellLS,
int fst,
int snd,
double recZ,
double recX,
RecInfo *rInfo);
302 bool GetNextPoint(
int bn,
double x1,
double z1,
double f1,
double iA1,
double oT1,
double stA1,
double dl,
303 double &x2,
double &z2,
double &f2,
double &iA2,
double &oT2,
double &stA2);
308 int CompareParams(
double f1,
double f2,
double t1,
double t2);
309 bool CheckNextLSPoint(
double x1,
double z1,
double x2,
double z2,
int bNum,
double &xs,
double &zs);
311 bool CheckUpGoingRay(
RayInfo *ray,
int bn,
bool flag);
313 void stop_process(
WavePath *&wp,
bool &good_path_flag);
318 int BoxRec(
U2dBox *uBox, vector<int> &res_id,
double *recX,
double *recZ);
320 double *recX,
double *recZ,
RecInfoAr &recInfos);
323 bool MShooterUnivStN(
LSource *LS,
int stBN,
RTParams rtp,
int &stN,
int &bn,
bool WellShoot);
324 bool MShooterUnivFP(
LSource *LS,
int &num,
int &bNum,
int stBNum,
RTParams rtp,
LSpoint &lsp,
LSpoint &ilsp,
double &stF,
double &dL,
bool WellShoot);
329 bool GetNextPoint(
int bn,
LSpoint lsp1,
double dl,
LSpoint &lsp2);
337 bool HalfAngleShooter(
double spX,
double spZ,
double startF,
double stepF,
CodeAr rCode,
int_ar *bNums,
bool raySave,
LSource *InterLS);
340 void stop_MShooter(
bool &stop_pressed_flag,
LSource *&lsDesc);
Definition: rt_shooter.hpp:80
Definition: rt_shooter.hpp:99
Ray tracing class.
Definition: ray_tracing.hpp:24
Definition: rt_shooter.hpp:107
Definition: rt_shooter.hpp:128
Definition: rt_shooter.hpp:89
Ray data storage sturcture.
Definition: rt_storage.hpp:74
LS code structure.
Definition: rt_shooter.hpp:50
Definition: Progress.hpp:16
Definition: objectar.hpp:57
Progress * PBar2
Definition: rt_shooter.hpp:242
Observation system class.
Definition: os.hpp:13
Definition: rt_shooter.hpp:116
Definition: rt_shooter.hpp:38
Definition: vel2dmod_ldb.hpp:16
Definition: rt_shooter.hpp:66
Definition: u2d_box.hpp:8
Definition: rt_shooter.hpp:17
Definition: objectar.hpp:55
Definition: objectar.hpp:56
Definition: rt_shooter.hpp:122
Definition: objectar.hpp:17
Progress * PBar1
Definition: rt_shooter.hpp:241
Definition: u2d_point.hpp:156
Definition: dbnamedefs.h:85
Definition: rt_shooter.hpp:138
Definition: rt_shooter.hpp:151