UNIVERS
15.3
UNIVERS base processing software API
Main Page
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
include
mod3d
p_straight_elements.H
1
/* p_straight_elements.H */
2
/* $Id: p_straight_elements.H,v 1.6 2001/05/07 17:12:10 hoh Exp $ */
3
#ifndef __p_straight_elements_H
4
#define __p_straight_elements_H
5
6
#include <mod3d/mod3d_raytrace.H>
7
#include "rays_straight.H"
8
9
class
pl_straight_body
:
public
pl_intern_body
{
10
protected
:
11
// Обработанные и еще не обработанные лучи rays arProcessedRays; rays arNewRays; // Соответствующие /\ пересечения на входе в тело IntAr aiProcessedCrossings; IntAr aiNewCrossings; void addh_ray (ray *pRNew,int iCN); public: pl_straight_body(geophys_params gp):pl_intern_body(gp){}; pl_straight_body(any_borders &ab,geophys_params gp); ~pl_straight_body(){arProcessedRays.clean();arNewRays.clean();}; void commit_pass (); const IntAr& get_all_crossings ()const; const rays& get_all_rays ()const; // Этот массив, к сожалению, иногда нужно исправлять... IntAr& get_new_crossings (); const rays &get_new_rays ()const; Logic store_ray (ray* pRNew,int iBorder); void clear_rays(){arNewRays.clean(); arProcessedRays.clean();}; Logic reflecting_border(int iB)const; }; typedef pl_straight_body* p_pl_straight_body; typedef ObjectsAr<p_pl_straight_body> pl_straight_bodies; // Прохождение по пути, заданному шаблоном class border_hit_info:public hit_point_info{ protected: rays_straight * pr; IntAr iaTemplate; int iReflectBorder; int iHitBorder; int iBody; Logic verify_ray (ray*r)const; public: virtual ray* shoot(ray_parameters&,point&,Logic&,double); virtual ray* shoot(double,double,point&,Logic&,double); virtual Logic good_enough(double,ray*); border_hit_info(rays_straight*,int,int, ray*prToPass,int, double dl=PM_ALPHA_LESS_D,double dm=PM_ALPHA_MORE_D, int i1=MN_CHINA_D,double d1=MN_PHI_D,int i2=MILNUM2_D, double d2=PM_ALPHA_STOP_D,int i3=PM_MAX_ITERATIONS_COUNT_D); border_hit_info(rays_straight*,ray*,int,int, double dl=PM_ALPHA_LESS_D,double dm=PM_ALPHA_MORE_D, int i1=MN_CHINA_D,double d1=MN_PHI_D,int i2=MILNUM2_D, double d2=PM_ALPHA_STOP_D,int i3=PM_MAX_ITERATIONS_COUNT_D); int get_ref_bord_num(); int get_hit_bord_num(); }; // Прохождение по пути, заданному шаблоном, строго дальше, нежели этот шаблон class hit_through_border_info:public general_hit_info{ protected: rays_straight * pr; ray * prTemplate; int iReflectBorder; geophys_params gp; raytr_params rp; public: virtual ray* shoot(ray_parameters&,point&,Logic&,double); virtual ray* shoot(double,double,point&,Logic&,double); virtual Logic good_enough(double,ray*); virtual void get_ray_parameters (const point3d &pWhere,const crossing&c,double &dFi, double &dAz,double &dDFi,double& dDAz,double &dRo); virtual void get_ray_parameters(const point3d &pWhere,const ray* rLast,double &dFi, double &dAz,double &dDFi,double& dDAz,double &dRo); hit_through_border_info(rays_straight *,ray *, double dl=PM_ALPHA_LESS_D,double dm=PM_ALPHA_MORE_D, int i3=PM_MAX_ITERATIONS_COUNT_D, double d2=PM_ALPHA_STOP_D/10., int i1=MN_CHINA_D,double d1=MN_PHI_D,int i2=MILNUM2_D); }; #endif /* p_straight_elements.H */ /* Melnikov George Yu. 2-Feb-2000 */ /* ... */
12
rays
arProcessedRays;
13
rays
arNewRays;
14
15
// Соответствующие /\ пересечения на входе в тело IntAr aiProcessedCrossings; IntAr aiNewCrossings; void addh_ray (ray *pRNew,int iCN); public: pl_straight_body(geophys_params gp):pl_intern_body(gp){}; pl_straight_body(any_borders &ab,geophys_params gp); ~pl_straight_body(){arProcessedRays.clean();arNewRays.clean();}; void commit_pass (); const IntAr& get_all_crossings ()const; const rays& get_all_rays ()const; // Этот массив, к сожалению, иногда нужно исправлять... IntAr& get_new_crossings (); const rays &get_new_rays ()const; Logic store_ray (ray* pRNew,int iBorder); void clear_rays(){arNewRays.clean(); arProcessedRays.clean();}; Logic reflecting_border(int iB)const; }; typedef pl_straight_body* p_pl_straight_body; typedef ObjectsAr<p_pl_straight_body> pl_straight_bodies; // Прохождение по пути, заданному шаблоном class border_hit_info:public hit_point_info{ protected: rays_straight * pr; IntAr iaTemplate; int iReflectBorder; int iHitBorder; int iBody; Logic verify_ray (ray*r)const; public: virtual ray* shoot(ray_parameters&,point&,Logic&,double); virtual ray* shoot(double,double,point&,Logic&,double); virtual Logic good_enough(double,ray*); border_hit_info(rays_straight*,int,int, ray*prToPass,int, double dl=PM_ALPHA_LESS_D,double dm=PM_ALPHA_MORE_D, int i1=MN_CHINA_D,double d1=MN_PHI_D,int i2=MILNUM2_D, double d2=PM_ALPHA_STOP_D,int i3=PM_MAX_ITERATIONS_COUNT_D); border_hit_info(rays_straight*,ray*,int,int, double dl=PM_ALPHA_LESS_D,double dm=PM_ALPHA_MORE_D, int i1=MN_CHINA_D,double d1=MN_PHI_D,int i2=MILNUM2_D, double d2=PM_ALPHA_STOP_D,int i3=PM_MAX_ITERATIONS_COUNT_D); int get_ref_bord_num(); int get_hit_bord_num(); }; // Прохождение по пути, заданному шаблоном, строго дальше, нежели этот шаблон class hit_through_border_info:public general_hit_info{ protected: rays_straight * pr; ray * prTemplate; int iReflectBorder; geophys_params gp; raytr_params rp; public: virtual ray* shoot(ray_parameters&,point&,Logic&,double); virtual ray* shoot(double,double,point&,Logic&,double); virtual Logic good_enough(double,ray*); virtual void get_ray_parameters (const point3d &pWhere,const crossing&c,double &dFi, double &dAz,double &dDFi,double& dDAz,double &dRo); virtual void get_ray_parameters(const point3d &pWhere,const ray* rLast,double &dFi, double &dAz,double &dDFi,double& dDAz,double &dRo); hit_through_border_info(rays_straight *,ray *, double dl=PM_ALPHA_LESS_D,double dm=PM_ALPHA_MORE_D, int i3=PM_MAX_ITERATIONS_COUNT_D, double d2=PM_ALPHA_STOP_D/10., int i1=MN_CHINA_D,double d1=MN_PHI_D,int i2=MILNUM2_D); }; #endif /* p_straight_elements.H */ /* Melnikov George Yu. 2-Feb-2000 */ /* ... */
16
IntAr
aiProcessedCrossings;
17
IntAr
aiNewCrossings;
18
19
void
addh_ray (
ray
*pRNew,
int
iCN);
20
public
:
21
pl_straight_body
(
geophys_params
gp):
pl_intern_body
(gp){};
22
pl_straight_body
(
any_borders
&ab,
geophys_params
gp);
23
~
pl_straight_body
(){arProcessedRays.clean();arNewRays.clean();};
24
void
commit_pass ();
25
const
IntAr
& get_all_crossings ()
const
;
26
const
rays
& get_all_rays ()
const
;
27
// Этот массив, к сожалению, иногда нужно исправлять...
28
IntAr
& get_new_crossings ();
29
const
rays
&get_new_rays ()
const
;
30
Logic store_ray (
ray
* pRNew,
int
iBorder);
31
void
clear_rays(){arNewRays.clean(); arProcessedRays.clean();};
32
Logic reflecting_border(
int
iB)
const
;
33
};
34
35
typedef
pl_straight_body
*
p_pl_straight_body
;
36
typedef
ObjectsAr<p_pl_straight_body>
pl_straight_bodies
;
37
38
39
40
41
// Прохождение по пути, заданному шаблоном class border_hit_info:public hit_point_info{ protected: rays_straight * pr; IntAr iaTemplate; int iReflectBorder; int iHitBorder; int iBody; Logic verify_ray (ray*r)const; public: virtual ray* shoot(ray_parameters&,point&,Logic&,double); virtual ray* shoot(double,double,point&,Logic&,double); virtual Logic good_enough(double,ray*); border_hit_info(rays_straight*,int,int, ray*prToPass,int, double dl=PM_ALPHA_LESS_D,double dm=PM_ALPHA_MORE_D, int i1=MN_CHINA_D,double d1=MN_PHI_D,int i2=MILNUM2_D, double d2=PM_ALPHA_STOP_D,int i3=PM_MAX_ITERATIONS_COUNT_D); border_hit_info(rays_straight*,ray*,int,int, double dl=PM_ALPHA_LESS_D,double dm=PM_ALPHA_MORE_D, int i1=MN_CHINA_D,double d1=MN_PHI_D,int i2=MILNUM2_D, double d2=PM_ALPHA_STOP_D,int i3=PM_MAX_ITERATIONS_COUNT_D); int get_ref_bord_num(); int get_hit_bord_num(); }; // Прохождение по пути, заданному шаблоном, строго дальше, нежели этот шаблон class hit_through_border_info:public general_hit_info{ protected: rays_straight * pr; ray * prTemplate; int iReflectBorder; geophys_params gp; raytr_params rp; public: virtual ray* shoot(ray_parameters&,point&,Logic&,double); virtual ray* shoot(double,double,point&,Logic&,double); virtual Logic good_enough(double,ray*); virtual void get_ray_parameters (const point3d &pWhere,const crossing&c,double &dFi, double &dAz,double &dDFi,double& dDAz,double &dRo); virtual void get_ray_parameters(const point3d &pWhere,const ray* rLast,double &dFi, double &dAz,double &dDFi,double& dDAz,double &dRo); hit_through_border_info(rays_straight *,ray *, double dl=PM_ALPHA_LESS_D,double dm=PM_ALPHA_MORE_D, int i3=PM_MAX_ITERATIONS_COUNT_D, double d2=PM_ALPHA_STOP_D/10., int i1=MN_CHINA_D,double d1=MN_PHI_D,int i2=MILNUM2_D); }; #endif /* p_straight_elements.H */ /* Melnikov George Yu. 2-Feb-2000 */ /* ... */
42
class
border_hit_info
:
public
hit_point_info
{
43
protected
:
44
rays_straight
* pr;
45
IntAr
iaTemplate;
46
int
iReflectBorder;
47
int
iHitBorder;
48
int
iBody;
49
50
Logic verify_ray (
ray
*r)
const
;
51
public
:
52
virtual
ray
* shoot(
ray_parameters
&,
point
&,Logic&,
double
);
53
virtual
ray
* shoot(
double
,
double
,
point
&,Logic&,
double
);
54
virtual
Logic good_enough(
double
,
ray
*);
55
border_hit_info
(
rays_straight
*,
int
,
int
,
56
ray
*prToPass,
int
,
57
double
dl=PM_ALPHA_LESS_D,
double
dm=PM_ALPHA_MORE_D,
58
int
i1=MN_CHINA_D,
double
d1=MN_PHI_D,
int
i2=MILNUM2_D,
59
double
d2=PM_ALPHA_STOP_D,
int
i3=PM_MAX_ITERATIONS_COUNT_D);
60
border_hit_info
(
rays_straight
*,
ray
*,
int
,
int
,
61
double
dl=PM_ALPHA_LESS_D,
double
dm=PM_ALPHA_MORE_D,
62
int
i1=MN_CHINA_D,
double
d1=MN_PHI_D,
int
i2=MILNUM2_D,
63
double
d2=PM_ALPHA_STOP_D,
int
i3=PM_MAX_ITERATIONS_COUNT_D);
64
int
get_ref_bord_num();
65
int
get_hit_bord_num();
66
};
67
68
// Прохождение по пути, заданному шаблоном, строго дальше, нежели этот шаблон class hit_through_border_info:public general_hit_info{ protected: rays_straight * pr; ray * prTemplate; int iReflectBorder; geophys_params gp; raytr_params rp; public: virtual ray* shoot(ray_parameters&,point&,Logic&,double); virtual ray* shoot(double,double,point&,Logic&,double); virtual Logic good_enough(double,ray*); virtual void get_ray_parameters (const point3d &pWhere,const crossing&c,double &dFi, double &dAz,double &dDFi,double& dDAz,double &dRo); virtual void get_ray_parameters(const point3d &pWhere,const ray* rLast,double &dFi, double &dAz,double &dDFi,double& dDAz,double &dRo); hit_through_border_info(rays_straight *,ray *, double dl=PM_ALPHA_LESS_D,double dm=PM_ALPHA_MORE_D, int i3=PM_MAX_ITERATIONS_COUNT_D, double d2=PM_ALPHA_STOP_D/10., int i1=MN_CHINA_D,double d1=MN_PHI_D,int i2=MILNUM2_D); }; #endif /* p_straight_elements.H */ /* Melnikov George Yu. 2-Feb-2000 */ /* ... */
69
class
hit_through_border_info
:
public
general_hit_info
{
70
protected
:
71
rays_straight
* pr;
72
ray
* prTemplate;
73
int
iReflectBorder;
74
geophys_params
gp;
75
raytr_params
rp;
76
public
:
77
virtual
ray
* shoot(
ray_parameters
&,
point
&,Logic&,
double
);
78
virtual
ray
* shoot(
double
,
double
,
point
&,Logic&,
double
);
79
virtual
Logic good_enough(
double
,
ray
*);
80
81
virtual
void
82
get_ray_parameters (
const
point3d
&pWhere,
const
crossing
&c,
double
&dFi,
83
double
&dAz,
double
&dDFi,
double
& dDAz,
double
&dRo);
84
virtual
void
85
get_ray_parameters(
const
point3d
&pWhere,
const
ray
* rLast,
double
&dFi,
86
double
&dAz,
double
&dDFi,
double
& dDAz,
double
&dRo);
87
88
hit_through_border_info
(
rays_straight
*,
ray
*,
89
double
dl=PM_ALPHA_LESS_D,
double
dm=PM_ALPHA_MORE_D,
90
int
i3=PM_MAX_ITERATIONS_COUNT_D,
91
double
d2=PM_ALPHA_STOP_D/10.,
92
int
i1=MN_CHINA_D,
double
d1=MN_PHI_D,
int
i2=MILNUM2_D);
93
};
94
95
#endif
/* p_straight_elements.H */
96
97
/* Melnikov George Yu. 2-Feb-2000 */
98
/* ... */
crossing
Definition:
p_raytr_elements.H:113
geophys_params
Definition:
any_elements.H:22
pl_straight_body
Definition:
p_straight_elements.H:9
hit_through_border_info
Definition:
p_straight_elements.H:69
IntAr
Definition:
IntAr.H:14
ray_parameters
Definition:
rays.H:61
pl_intern_body
Definition:
p_elements.H:145
point
Definition:
geometry.H:16
ObjectsAr< p_ray >
ray
Definition:
rays.H:81
hit_point_info
Definition:
p_raytr_hits.H:66
border_hit_info
Definition:
p_straight_elements.H:42
general_hit_info
Definition:
p_raytr_hits.H:31
rays_straight
Definition:
rays_straight.H:11
raytr_params
Definition:
any_elements.H:33
Generated by
1.8.5