负x,y坐标为线性阵列索引

Negative X,Y Coordinates to linear array index?

本文关键字:线性 阵列 索引 坐标      更新时间:2023-10-16

我一直在(失败)试图将2D坐标网格的负坐标转换为旨在放置在数组中的线性索引。

std::vector<float> heights(20*20);
for ( int x = -10; x < 10; x++ ) {
    for ( int y = -10; y < 10; y++ ) {
        heights[20*x + y] = NoiseGenerator.GetPerlinFractal(x, y);
    }
}

以上是我在尝试使用负坐标之前我所做的的简化版本。

老实说,我不知所措。这似乎应该是非常易于解决的问题,但是在稳定的2个小时的没有结果和大量OUT_OF_RANGE异常之后,我感到很愚蠢:)

我感谢任何人都能给我的任何帮助。预先感谢!

heights[(x - x_min) * rows + (y - y_min)]

怎么样

这里x_miny_min都是-10,rows为20。

请注意,x_maxy_max均为9,因为您在每个维度中允许20分。21本来是更对称的。

从矢量中给定的index恢复xy将需要使用整数部门和%