我一直(尝试将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异常:))
我很感激任何人都可以给我的帮助。提前谢谢!
答案 0 :(得分:1)
heights[(x - x_min) * rows + (y - y_min)]
怎么样?
此处x_min
和y_min
均为-10,rows
为20。
请注意x_max
和y_max
都是9,因为每个维度允许20个点。 21会更加对称。
从向量中的给定x
恢复y
和index
将需要使用整数除法和%
。