int WIDTH=500; //use even number int HEIGHT=500; int arrWIDTH=WIDTH; int arrHEIGHT=HEIGHT; int[] current=new int[arrWIDTH*arrHEIGHT]; int[] collision=new int[arrWIDTH*arrHEIGHT]; int[] collisonTable={ 00,01,02,03,04,05,06,07, 010,022,012,013,014,015,016,017, 020,021,011,023,024,052,026,027, 030,031,032,033,034,035,036,037, 040,041,042,043,022,045,046,047, 050,051,025,053,054,055,056,057, 060,061,062,063,064,065,066,067, 070,071,072,073,074,075,076,077, }; int[] collisonTableAlt={ 00,01,02,03,04,05,06,07, 010,044,012,013,014,015,016,017, 020,021,044,023,024,052,026,027, 030,031,032,033,034,035,036,037, 040,041,042,043,011,045,046,047, 050,051,025,053,054,055,056,057, 060,061,062,063,064,065,066,067, 070,071,072,073,074,075,076,077, }; int[] bitCount={ 0,1,1,2,1,2,2,3, 1,2,2,3,2,3,3,4, 1,2,2,3,2,3,3,4, 2,3,3,4,3,4,4,5, 1,2,2,3,2,3,3,4, 2,3,3,4,3,4,4,5, 2,3,3,4,3,4,4,5, 3,4,4,5,4,5,5,6 }; void setup() { for(int i=0;iarrWIDTH*2/5 & iarrHEIGHT*2/5 & j0.5) colFlag=colFlag*-1; } } //transport for(int i=0;i