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] 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;