私は最後の数日間処理3でプログラムを構築しています(2009年にコンピュータサイエンス入門以降の処理に初めて戻る) :***、私は常に配列範囲のインデックスアウトがスローになるだろうとの行で組み込み変数が特定のケースで使用できない(処理3)
public class PolarMap {
...
PVector[][] mapping = new PVector[width][height];
PVector[][] cartesian = new PVector[width][height];
PVector cart = new PVector();
PVector polar = new PVector();
/**
Maps every pixel on the cartesian plane to a polar coordinate
relative to some origin point.
*/
public void Map(float originX, float originY){
for (int x=0; x < width; x++){
for (int y=0; y < height; y++){
...
cart.add(x, y);
polar.add(r, theta);
mapping[x][y] = polar; ***
cartesian[x][y] = cart;
}
}
}
...
}
。私はSO、Reddit、Processingの文書を検索して理由を調べました。 Processingに慣れていない場合、幅と高さは組み込みの変数で、高さのピクセル数とキャンバス全体の大きさはsetup()メソッド(私の場合は800x800)で宣言したとおりです。何らかの理由で、両方の配列がこの値に初期化されていませんでした。代わりに、それらの変数のデフォルト値に初期化されていました:100.
したがって、意味がなく、
int high = height;
int wide = width;
を宣言し、これらの変数を使用して配列を初期化しました。あなたはそれを知っていないでしょう、それは問題を解決しました。今私は2つの800×800の配列を持っています。
これは私の質問です:組み込み変数は、配列を初期化するために使用すると期待どおりに機能しませんでしたが、定義された変数に代入されたときに、
問題のある配列初期化子と作業変数宣言は、どちらも同じスコープにあり、メインクラスのsetup()メソッドから離れています。しかし....私は、メインクラスのsetup()メソッドの上に宣言された値をMap(originX、originY)に渡していただけです。あなたが書いたものに基づいて、私は*これが私の問題の原因だと思う。そして、テストしただけで、あなたは絶対に正しいです!素晴らしいありがとう! – pyansharp
@pyansharpええ、それは直接スコープとは関係ありません、それはすべてイベントの順です。最初に起こっていることを確認するために 'print()'ステートメントを追加するのが簡単ですが、 'width'と' height'が '100'で' size() 'がまだ呼び出されていないのが基本です。 –