负X,Y坐标到线性数组索引?

时间:2017-09-05 11:12:21

标签: c++ arrays coordinates

我一直(尝试将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异常:))

我很感激任何人都可以给我的帮助。提前谢谢!

1 个答案:

答案 0 :(得分:1)

heights[(x - x_min) * rows + (y - y_min)]怎么样?

此处x_miny_min均为-10,rows为20。

请注意x_maxy_max都是9,因为每个维度允许20个点。 21会更加对称。

从向量中的给定x恢复yindex将需要使用整数除法和%