質問: x + y * rasterWidth」 と書かれているのですが理解できません。 rasterWidthは、おそらくラスタの幅だとは思うのですが具体的にわかりません。 ラスタの全体の幅なのか、それともラスタ単体の?幅なのか、、 仮にラスタの幅を全体の幅と仮定して定数とすると、(0,1)と(1,0)のピクセルのアドレスが同じということになってしまいます。 どういうことなのでしょうか・・
回答: 「**rasterWidth = 画像の幅**」です。 また、「メモリアドレス」という言い方がちょっと違うように感じられたので、ピクセルを格納する配列の「添え字」とします。 例えば、16x16の画像があったとしましょう。 (0, 0)のピクセルを表す添え字は次のようになります。 ``` 0 + 0 * 16 = 0 ``` (2, 6)であればこのようになります。 ``` 2 + 6 * 16 = 98 ``` 一般的にNxNの画像を一次元の配列で扱うときは、 | | | | | | | --- | --- | --- | --- | --- | | 0 | 1 | 2 | ... | N-1 | | N | N+1 | N+2 | ... | 2N-1 | 表のような順でピクセルが格納されていくので、「教科書」に書かれている計算式になるのです。 また、添え字から座標を計算する場合は以下のようになります。 ``` ※小数点以下は切り捨て x = (添え字) % (画像の幅) y = (添え字) / (画像の幅) ```