WXP C++ Library Version 6.74.6
Loading...
Searching...
No Matches
Domain.h
1#ifndef _WINC_DOMAIN
2#define _WINC_DOMAIN
3
4#include <WXP/Const.h>
5#include <WXP/DomainVal.h>
6#include <WXP/EarthPoint.h>
7#include <WXP/EarthPoints.h>
8#include <WXP/GridPoint.h>
9#include <WXP/GridPoints.h>
10#include <WXP/Point.h>
11#include <WXP/Points.h>
12#include <WXP/Rect.h>
13#include <WXP/String.h>
14
15namespace WXP {
16 /*
17 Structure for domain location
18 */
19 class Domain : private DomainVal {
20 Rect limits;
21 Rect view;
22
23 double sat_rad;
24 double sat_rad2;
25 double sat_rad4;
26 double sat2_earth2;
27 double earth_sat_ratio;
28 double earth_ratio;
29 double earth_ratio2;
30 float tlat1;
31 float tlat2;
32 float cx, cy;
33 double xfactor;
34 double mult;
35 double yfactor;
36 double scale;
37
38 public:
39 static double earth_rad;
40 static double earth_maj;
41 static double earth_min;
43 Domain();
44 Domain( const char *str );
45 int init();
46 int set( DomainVal &val );
47 int set( const char *str );
48 int set( EarthPoint &ul, EarthPoint &lr, int rnx, int rny );
49 int set( int rnx, int rny );
50 DomainVal get();
52 inline bool isSet(){ return proj != Const::MISS? true: false; };
53 int setParam();
54 int setLimits();
55 int getLimits( Rect &rect );
57 int setView( Rect &rect );
59 inline int getProj(){ return proj; };
61 inline float getPLat(){ return plat; };
63 inline float getPLon(){ return plon; };
65 inline float getCLat(){ return clat; };
67 inline float getCLon(){ return clon; };
69 inline int getNx(){ return nx; };
71 inline int getNy(){ return ny; };
73 inline float getDx(){ return dx; };
75 inline float getDy(){ return dy; };
77 inline float getParam( int i ){ return i >= 0 && i < 5 ? param[i]: Const::MISS; };
78 int tranCenter( Point &pt );
79 float getAspect();
80 int tran( EarthPoint &ept, Point &pt );
81 int tran( Point &pt, EarthPoint &ept );
82 int tran( GridPoint &gpt, Point &pt );
83 int tran( Point &pt, GridPoint &gpt );
84 int tran( EarthPoint &ept, GridPoint &gpt );
85 int tran( GridPoint &gpt, EarthPoint &ept );
86 int tran( EarthPoints &epts, Points &pts );
87 int tran( EarthPoints &epts, GridPoints &gpts );
88
90 enum TranLocate {
95 CENTER
96 };
97 int tran( int w, EarthPoint &ept );
98 int tran( int w, GridPoint &gpt );
99 int tran( int w, Point &pt );
100
101 bool within( Point &pt );
102 bool within( EarthPoint &ept );
103 bool withinExt( Point &pt, int ext );
104 bool withinExt( EarthPoint &ept, int ext );
105 int where( Point &pt );
106 int where( EarthPoint &ept );
107 int scaleSize( int width, int height );
108 int scaleGrid( float scale );
109 int zoom( Point &pt, float zfac );
110 int pan( Point &pt );
111 int adjust( Point &pt );
112 int adjust( Points &pts );
113 float adjustDir( float dir, Point &pt );
114 float adjustDir( float dir, EarthPoint &ept );
115 float unadjustDir( float dir, Point &pt );
116 float unadjustDir( float dir, EarthPoint &ept );
117 int offset( Point &pt, float dir, float rad, Point &opt );
118 float direct( Point &pt1, Point &pt2 );
119 float getVert();
120 float getMapFactor( EarthPoint &ept );
121 int wrapLine( Point &pt1, Point &pt2 );
122 int wrapLine( Points &pts );
123 int offsetLine( Point &pt1, Point &pt2, int flag );
124 int offsetLine( Points &pts, int flag );
125 int toString( String &string );
126 int print();
127 int printLimits();
128
130 inline int isProj( int p ){ return p == proj; };
132 inline int isMap(){ return isMap( proj ); };
134 inline int isTherm(){ return isTherm( proj ); };
136 inline int isCoord(){ return isCoord( proj ); };
138 inline int isPolar(){ return isPolar( proj ); };
139
140 static int getProj( const char *proj );
141 static bool compare( Domain &dom1, Domain &dom2 );
142 static bool compareProj( Domain &dom1, Domain &dom2 );
143 static int translate( Domain &dom1, Domain &dom2, Point &pt1, Point &pt2 );
144 static int translate( Domain &dom1, Domain &dom2, GridPoint &gpt1, GridPoint &gpt2 );
145 static float calcEarthDist( EarthPoint &ept1, EarthPoint &ept2 );
146 static int offsetLatLon( EarthPoint &ept, float dir, float rad, EarthPoint &opt );
147
148 static const int PSTEREO = DomainVal::PSTEREO;
149 static const int LATLON = DomainVal::LATLON;
150 static const int MERC = DomainVal::MERC;
151 static const int LAMB = DomainVal::LAMB;
152 static const int ORTHO = DomainVal::ORTHO;
153 static const int GNOM = DomainVal::GNOM;
154 static const int MOLL = DomainVal::MOLL;
155 static const int LAMBAZ = DomainVal::LAMBAZ;
156 static const int ALBERS = DomainVal::ALBERS;
157 static const int SAT = DomainVal::SAT;
158 static const int RADIAL = DomainVal::RADIAL;
159 static const int PIXEL = DomainVal::PIXEL;
160 static const int XY = DomainVal::XY;
161 static const int XZ = DomainVal::XZ;
162 static const int XP = DomainVal::XP;
163 static const int XLOGP = DomainVal::XLOGP;
164 static const int POLAR = DomainVal::POLAR;
165 static const int CAT = DomainVal::CAT;
166 static const int SKEWT = DomainVal::SKEWT;
167 static const int STUVE = DomainVal::STUVE;
168 static const int EMA = DomainVal::EMA;
169 static const int TEPH = DomainVal::TEPH;
170 static const int RTEPH = DomainVal::RTEPH;
171 static const int ZOOM = DomainVal::ZOOM;
172 static const int SIZE = DomainVal::SIZE;
175 static inline bool isMap( int a ){ return (a >= PSTEREO && a <= SAT);}
177 static inline bool isTherm( int a ){ return (a >= SKEWT && a <= RTEPH);}
179 static inline bool isCoord( int a ){ return (a >= PIXEL && a <= CAT);}
181 static inline bool isPolar( int a ){ return (a == POLAR);}
182
183 static float OFFSET_LL;
184 static float OFFSET_MERC;
185 };
186}
187#endif
static const int MISS
Definition: Const.h:7
This class stores and manipulates domain data.
Definition: Domain.h:19
int print()
Definition: Domain.cc:2015
int isTherm()
Definition: Domain.h:134
static bool isCoord(int a)
Definition: Domain.h:179
int offsetLine(Point &pt1, Point &pt2, int flag)
Definition: Domain.cc:1912
static bool compare(Domain &dom1, Domain &dom2)
Definition: Domain.cc:292
int getNy()
Definition: Domain.h:71
int tran(EarthPoint &ept, Point &pt)
Definition: Domain.cc:422
int zoom(Point &pt, float zfac)
Definition: Domain.cc:1716
static const int RTEPH
Definition: Domain.h:170
int tranCenter(Point &pt)
Definition: Domain.cc:404
Rect getLimits()
Definition: Domain.cc:391
float getPLon()
Definition: Domain.h:63
static float calcEarthDist(EarthPoint &ept1, EarthPoint &ept2)
Definition: Domain.cc:1829
int offset(Point &pt, float dir, float rad, Point &opt)
Definition: Domain.cc:1748
int isCoord()
Definition: Domain.h:136
static const int STUVE
Definition: Domain.h:167
static double earth_min
Definition: Domain.h:41
int pan(Point &pt)
Definition: Domain.cc:1732
bool withinExt(Point &pt, int ext)
Definition: Domain.cc:1387
static const int XP
Definition: Domain.h:162
static bool isTherm(int a)
Definition: Domain.h:177
static const int POLAR
Definition: Domain.h:164
int set(DomainVal &val)
Definition: Domain.cc:70
int init()
Definition: Domain.cc:34
int getProj()
Definition: Domain.h:59
static bool isPolar(int a)
Definition: Domain.h:181
float getVert()
Definition: Domain.cc:1778
int wrapLine(Point &pt1, Point &pt2)
Definition: Domain.cc:1841
static const int XZ
Definition: Domain.h:161
static bool isMap(int a)
Definition: Domain.h:175
static const int LAMB
Definition: Domain.h:151
float getCLat()
Definition: Domain.h:65
static const int ORTHO
Definition: Domain.h:152
static const int SAT
Definition: Domain.h:157
int scaleSize(int width, int height)
Definition: Domain.cc:1664
Domain()
Definition: Domain.cc:57
int setParam()
Definition: Domain.cc:309
int scaleGrid(float scale)
Definition: Domain.cc:1693
float getParam(int i)
Definition: Domain.h:77
static const int ZOOM
Definition: Domain.h:171
int getNx()
Definition: Domain.h:69
DomainVal get()
Definition: Domain.cc:264
float getMapFactor(EarthPoint &ept)
Definition: Domain.cc:1810
bool isSet()
Definition: Domain.h:52
static const int ALBERS
Definition: Domain.h:156
static const int RADIAL
Definition: Domain.h:158
float adjustDir(float dir, Point &pt)
Definition: Domain.cc:1542
int printLimits()
Definition: Domain.cc:2067
static const int MOLL
Definition: Domain.h:154
static double earth_maj
Definition: Domain.h:40
int isMap()
Definition: Domain.h:132
static double earth_rad
Definition: Domain.h:39
static float OFFSET_MERC
Definition: Domain.h:184
static const int SIZE
Definition: Domain.h:172
float getAspect()
Definition: Domain.cc:413
static int translate(Domain &dom1, Domain &dom2, Point &pt1, Point &pt2)
Definition: Domain.cc:1446
int setLimits()
Definition: Domain.cc:361
static const int XY
Definition: Domain.h:160
static const int LAMBAZ
Definition: Domain.h:155
static const int TEPH
Definition: Domain.h:169
static int offsetLatLon(EarthPoint &ept, float dir, float rad, EarthPoint &opt)
Definition: Domain.cc:1764
int adjust(Point &pt)
Definition: Domain.cc:1491
static const int GNOM
Definition: Domain.h:153
float getPLat()
Definition: Domain.h:61
static const int CAT
Definition: Domain.h:165
static const int XLOGP
Definition: Domain.h:163
int isProj(int p)
Definition: Domain.h:130
float getDx()
Definition: Domain.h:73
float getDy()
Definition: Domain.h:75
static float OFFSET_LL
Definition: Domain.h:183
float direct(Point &pt1, Point &pt2)
Definition: Domain.cc:1789
TranLocate
Definition: Domain.h:90
@ LL
Definition: Domain.h:93
@ UL
Definition: Domain.h:91
@ LR
Definition: Domain.h:94
@ UR
Definition: Domain.h:92
@ CENTER
Definition: Domain.h:95
float getCLon()
Definition: Domain.h:67
float unadjustDir(float dir, Point &pt)
Definition: Domain.cc:1612
static const int MERC
Definition: Domain.h:150
static const int PIXEL
Definition: Domain.h:159
int isPolar()
Definition: Domain.h:138
static const int SKEWT
Definition: Domain.h:166
int where(Point &pt)
Definition: Domain.cc:1415
static bool compareProj(Domain &dom1, Domain &dom2)
Definition: Domain.cc:302
static const int LATLON
Definition: Domain.h:149
static const int EMA
Definition: Domain.h:168
int toString(String &string)
Definition: Domain.cc:1963
static const int PSTEREO
Definition: Domain.h:148
bool within(Point &pt)
Definition: Domain.cc:1361
This class creates an array a earth points (lat, lon)
Definition: EarthPoints.h:9
This class creates an array a 2D points (x, y)
Definition: GridPoints.h:9
This class creates an array a 2D points (x, y)
Definition: Points.h:8
This is a variable length string class.
Definition: String.h:5
All WXP classes fall under the WXP namespace.
Definition: Angle.h:4
This struct defines basic domain parameters.
Definition: DomainVal.h:5
static const int ZOOM
Definition: DomainVal.h:49
float dy
Definition: DomainVal.h:13
float clat
Definition: DomainVal.h:10
static const int SKEWT
Definition: DomainVal.h:44
static const int RADIAL
Definition: DomainVal.h:36
float param[5]
Definition: DomainVal.h:9
static const int CAT
Definition: DomainVal.h:43
static const int XY
Definition: DomainVal.h:38
static const int PSTEREO
Definition: DomainVal.h:26
static const int XZ
Definition: DomainVal.h:39
static const int XP
Definition: DomainVal.h:40
static const int LATLON
Definition: DomainVal.h:27
static const int SAT
Definition: DomainVal.h:35
float clon
Definition: DomainVal.h:11
float dx
Definition: DomainVal.h:12
int proj
Definition: DomainVal.h:6
float plon
Definition: DomainVal.h:8
static const int XLOGP
Definition: DomainVal.h:41
static const int MOLL
Definition: DomainVal.h:32
static const int SIZE
Definition: DomainVal.h:50
int ny
Definition: DomainVal.h:15
static const int LAMB
Definition: DomainVal.h:29
static const int STUVE
Definition: DomainVal.h:45
float plat
Definition: DomainVal.h:7
int nx
Definition: DomainVal.h:14
static const int ORTHO
Definition: DomainVal.h:30
static const int RTEPH
Definition: DomainVal.h:48
static const int ALBERS
Definition: DomainVal.h:34
static const int MERC
Definition: DomainVal.h:28
static const int PIXEL
Definition: DomainVal.h:37
static const int TEPH
Definition: DomainVal.h:47
static const int LAMBAZ
Definition: DomainVal.h:33
static const int EMA
Definition: DomainVal.h:46
static const int GNOM
Definition: DomainVal.h:31
static const int POLAR
Definition: DomainVal.h:42
This struct defines earth point values (lat, lon, elev)
Definition: EarthPoint.h:5
This struct defines basic gridpoint values.
Definition: GridPoint.h:5
This struct sets a 3D point (x, y, z)
Definition: Point.h:5
This structure defines rectangle coordinates.
Definition: Rect.h:5