我目前有一个生成点网格的算法。lx
它以 x ( ) 的长度和 y ( )的长度的形式从用户那里获取输入,以及将点间隔的ly
增量或增量 (dx
和)。dy
我需要这些点始终在 和定义的边界正方形的边缘开始和lx
结束ly
。我尝试了几种方法:
边界正方形的起始边缘定义为:
double startx = lx / -2.0, starty = ly / -2.0;
我的第一种方法确定点数和轮数:
int numintervalx = round(lx / dx), numintervaly = round(ly / dy);
我的第二种方法确定点数并使用大于点数的最接近的整数:
int numintervalx = ceil(lx / dx), numintervaly = ceil(ly / dy);
我的第三种方法确定点数并使用小于点数的最接近整数:
int numintervalx = floor(lx / dx), numintervaly = floor(ly / dy);
然后重新计算增量以适应边界框:
dx = lx / double(numintervalx);
dy = ly / double(numintervaly);
然后将这些输入到一个for
循环中,该循环自己生成点:
for (int i = 0; i <= numintervaly; i++)
for (int j = 0; j <= numintervalx; j++)
{
double point[3] = {startx + dx * j, starty + dy * i, 0};
}
是否有另一种更准确的方法可以使实际网格更接近用户指定的网格,仍然总是在边缘开始和结束?