three.jsのgpgpu birdsのソースコードを眺めていたら、またちょっと??なコードを見つけた。
for( var v = 0; v < triangles * 3; v++ ) {
var i = ~~(v / 3);
var x = (i % WIDTH) / WIDTH;
var y = ~~(i / WIDTH) / WIDTH;
.
.
.
この2重のビット否定は何を意味するのだろうか?と少し考えた。が、先を急ぎたいのでググった。
正解は「少数部の切り捨て」だった。
最初の~
で整数化後ビット反転され、2つ目の~
でもとに戻す。
元の数字の整数部が32ビット整数であらわされる範囲内でないとおかしくなりそうだけどね。
参考:
http://james.padolsey.com/javascript/double-bitwise-not/
https://www.softel.co.jp/blogs/tech/archives/3049
以上