我一直(失败)试图将2d坐标网格的负坐标转换为打算放置在数组中的线性索引。负X,Y坐标为线性数组索引?
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例外:)
我想感谢所有帮助任何人都可以给我后觉得自己很笨。提前致谢!
在访问数组之前打印'20 * x + y'是个好主意,我猜。 –
标准::地图可以接受方括号中的负值。 (或其他散列类型之一) –
titapo
@titapo如果您不首先询问性能要求,那么这是一个可怕的建议。 'std :: map'具有'log(n)'访问复杂性。 –