tmp update

This commit is contained in:
张壹 2025-01-08 10:40:46 +08:00
parent 946cffbb15
commit cdc982dd54

View File

@ -471,32 +471,45 @@ namespace gctl
* @param[in] dlon lon间隔
* @param[in] dlat lat间隔
* @param[in] rad
* @param[in] cor
*/
template <typename T>
void get_grid_point3s(array<point3s<T>> &out_ps, T lonmin, T lonmax, T latmin,
T latmax, T dlon, T dlat, T rad)
void grid_points_2d(array<point3s<T>> &out_ps, T lonmin, T lonmax, T latmin,
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)
{
throw invalid_argument("Invalid interval parameters. From get_grid_point3s(...)");
}
int lonnum = floor((lonmax-lonmin)/dlon) + 1;
int latnum = floor((latmax-latmin)/dlat) + 1;
int lonnum = round((lonmax-lonmin)/dlon) + 1;
int latnum = round((latmax-latmin)/dlat) + 1;
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;
out_ps.at(j*lonnum+i).lat = latmin + dlat*j;
out_ps.at(j*lonnum+i).rad = rad;
for (int i = 0; i < lonnum; i++)
{
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;