見出し画像

🎟p5.jsのpixels Uint8ClampedArray

https://p5js.org/reference/#/p5/pixels

ディスプレイウィンドウ内の全てのピクセルの値を含むUint8ClampedArray。これらの値は数値である。この配列は、ディスプレイウィンドウのサイズ(pixelDensityの適切なファクターを含む)x4で、各ピクセルのR、G、B、A値を順番に、各行を左から右に、そして各列を下に移動して表現しています。Retinaなどの高密度ディスプレイでは、pixel[]の数が(pixelDensity^2の倍数)多くなります。例えば、画像が100×100ピクセルであれば、40,000個になります。網膜ディスプレイの場合、16万画素になる。
配列の最初の4つの値(インデックス0-3)は、(0, 0)のピクセルのR、G、B、A値である。2番目の4つの値(インデックス4-7)には、(1、0)のピクセルのR、G、B、A値が含まれます。より一般的には、(x, y)にあるピクセルの値を設定する。

なんかめっちゃたくさんになるのはわかった

上記の方法は複雑ですが、どのような pixelDensity にも対応できる柔軟性を持っています。set() は、任意の pixelDensity で与えられた (x, y) に対して、pixels[] に適切な値をすべて自動的に設定しますが、pixel 配列に多くの変更が加えられた場合、パフォーマンスが低下する可能性があることに注意してください。
この配列にアクセスする前に、loadPixels()関数でデータを読み込む必要があります。配列のデータが変更された後は、updatePixels()関数を実行して変更内容を更新する必要があります。
これは標準的なjavascriptの配列ではないことに注意してください。つまり、slice() や arrayCopy() のような標準的な javascript 関数は動作しません。

https://github.com/processing/p5.js/blob/9cffb21da1a709ee61723f728efdd193a33ef2ca/src/image/loading_displaying.js#L176
毎度のことだがそのものズバリ見つからない。そもそもcanvasにpixel相当の機能があるのかもしれない。 https://github.com/processing/p5.js/blob/e32b45367baad694b1f4eeec0586b910bfcf0724/src/core/rendering.js#L28 
たくさんになるみたいなので、8x8ピクセルにしてそこにちいこい3ピクセルの丸をかいた
8x8=64x4=256x2^2=1024配列 になる、なんか、えらい世界に来てしまった。。。。
https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%83%B3%E7%AE%A1
これで128ピクセル Aだけ取れればいいかな
なぜ16じゃなくて8なのかよくわかんなかったのだが、まあなんか形はとれたのでこれで8階調ぐらいにして粒コードにできんかな
やってみた


お願い致します