我一直(失敗)試圖將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)'訪問複雜性。 –