tmp update
This commit is contained in:
parent
946cffbb15
commit
cdc982dd54
@ -471,32 +471,45 @@ namespace gctl
|
|||||||
* @param[in] dlon lon间隔
|
* @param[in] dlon lon间隔
|
||||||
* @param[in] dlat lat间隔
|
* @param[in] dlat lat间隔
|
||||||
* @param[in] rad 半径值
|
* @param[in] rad 半径值
|
||||||
|
* @param[in] cor 网格起始位置
|
||||||
*/
|
*/
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void get_grid_point3s(array<point3s<T>> &out_ps, T lonmin, T lonmax, T latmin,
|
void grid_points_2d(array<point3s<T>> &out_ps, T lonmin, T lonmax, T latmin,
|
||||||
T latmax, T dlon, T dlat, T rad)
|
T latmax, T dlon, T dlat, T rad, matrix_corner_e cor = BtmLeft)
|
||||||
{
|
{
|
||||||
if (lonmin >= lonmax || latmin >= latmax || lonmin+dlon>lonmax || latmin+dlat>latmax)
|
if (lonmin >= lonmax || latmin >= latmax ||
|
||||||
|
lonmin + dlon > lonmax || latmin + dlat > latmax ||
|
||||||
|
dlon <= 0 || dlat <= 0)
|
||||||
{
|
{
|
||||||
throw invalid_argument("Invalid range parameters. From get_grid_point3s(...)");
|
throw invalid_argument("[gctl::grid_points_2d] Invalid parameters.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dlon <= 0 || dlat <= 0)
|
int lonnum = round((lonmax-lonmin)/dlon) + 1;
|
||||||
{
|
int latnum = round((latmax-latmin)/dlat) + 1;
|
||||||
throw invalid_argument("Invalid interval parameters. From get_grid_point3s(...)");
|
|
||||||
}
|
|
||||||
|
|
||||||
int lonnum = floor((lonmax-lonmin)/dlon) + 1;
|
|
||||||
int latnum = floor((latmax-latmin)/dlat) + 1;
|
|
||||||
|
|
||||||
out_ps.resize(lonnum*latnum);
|
out_ps.resize(lonnum*latnum);
|
||||||
for (int j = 0; j < latnum; j++)
|
if (cor == BtmLeft)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < lonnum; i++)
|
for (int j = 0; j < latnum; j++)
|
||||||
{
|
{
|
||||||
out_ps.at(j*lonnum+i).lon = lonmin + dlon*i;
|
for (int i = 0; i < lonnum; i++)
|
||||||
out_ps.at(j*lonnum+i).lat = latmin + dlat*j;
|
{
|
||||||
out_ps.at(j*lonnum+i).rad = rad;
|
out_ps.at(j*lonnum+i).lon = lonmin + dlon*i;
|
||||||
|
out_ps.at(j*lonnum+i).lat = latmin + dlat*j;
|
||||||
|
out_ps.at(j*lonnum+i).rad = rad;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // cor == TopLeft
|
||||||
|
{
|
||||||
|
for (int j = 0; j < latnum; j++)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < lonnum; i++)
|
||||||
|
{
|
||||||
|
out_ps.at(j*lonnum+i).lon = lonmin + dlon*i;
|
||||||
|
out_ps.at(j*lonnum+i).lat = latmax - dlat*j;
|
||||||
|
out_ps.at(j*lonnum+i).rad = rad;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user