GoL speed improvements from jacksonmj (thank you very much)
This commit is contained in:
parent
0958a6e6da
commit
164681f4e6
46
src/powder.c
46
src/powder.c
@ -1236,8 +1236,8 @@ void update_particles_i(pixel *vid, int start, int inc)
|
|||||||
if(ISGOL==1&&CGOL>=GSPEED)//GSPEED is frames per generation
|
if(ISGOL==1&&CGOL>=GSPEED)//GSPEED is frames per generation
|
||||||
{
|
{
|
||||||
int createdsomething = 0;
|
int createdsomething = 0;
|
||||||
for(nx=4;nx<XRES-4;nx++)
|
for(nx=CELL;nx<XRES-CELL;nx++)
|
||||||
for(ny=4;ny<YRES-4;ny++)
|
for(ny=CELL;ny<YRES-CELL;ny++)
|
||||||
{
|
{
|
||||||
CGOL=0;
|
CGOL=0;
|
||||||
ISGOL=0;
|
ISGOL=0;
|
||||||
@ -1255,47 +1255,13 @@ void update_particles_i(pixel *vid, int start, int inc)
|
|||||||
for( nnx=-1;nnx<2;nnx++)
|
for( nnx=-1;nnx<2;nnx++)
|
||||||
for( nny=-1;nny<2;nny++)//it will count itself as its own neighbor, which is needed, but will have 1 extra for delete check
|
for( nny=-1;nny<2;nny++)//it will count itself as its own neighbor, which is needed, but will have 1 extra for delete check
|
||||||
{
|
{
|
||||||
if(ny+nny<4&&nx+nnx<4){//any way to make wrapping code smaller?
|
gol2[((nx+nnx+XRES-3*CELL)%(XRES-2*CELL))+CELL][((ny+nny+YRES-3*CELL)%(YRES-2*CELL))+CELL][golnum] ++;
|
||||||
gol2[XRES-5][YRES-5][golnum] ++;
|
gol2[((nx+nnx+XRES-3*CELL)%(XRES-2*CELL))+CELL][((ny+nny+YRES-3*CELL)%(YRES-2*CELL))+CELL][0] ++;
|
||||||
gol2[XRES-5][YRES-5][0] ++;
|
|
||||||
}
|
|
||||||
else if(ny+nny<4&&nx+nnx>=XRES-4){
|
|
||||||
gol2[4][YRES-5][golnum] ++;
|
|
||||||
gol2[4][YRES-5][0] ++;
|
|
||||||
}
|
|
||||||
else if(ny+nny>=YRES-4&&nx+nnx<4){
|
|
||||||
gol2[XRES-5][4][golnum] ++;
|
|
||||||
gol2[XRES-5][4][0] ++;
|
|
||||||
}
|
|
||||||
else if(nx+nnx<4){
|
|
||||||
gol2[XRES-5][ny+nny][golnum] ++;
|
|
||||||
gol2[XRES-5][ny+nny][0] ++;
|
|
||||||
}
|
|
||||||
else if(ny+nny<4){
|
|
||||||
gol2[nx+nnx][YRES-5][golnum] ++;
|
|
||||||
gol2[nx+nnx][YRES-5][0] ++;
|
|
||||||
}
|
|
||||||
else if(ny+nny>=YRES-4&&nx+nnx>=XRES-4){
|
|
||||||
gol2[4][4][golnum] ++;
|
|
||||||
gol2[4][4][0] ++;
|
|
||||||
}
|
|
||||||
else if(ny+nny>=YRES-4){
|
|
||||||
gol2[nx+nnx][4][golnum] ++;
|
|
||||||
gol2[nx+nnx][4][0] ++;
|
|
||||||
}
|
|
||||||
else if(nx+nnx>=XRES-4){
|
|
||||||
gol2[4][ny+nny][golnum] ++;
|
|
||||||
gol2[4][ny+nny][0] ++;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
gol2[nx+nnx][ny+nny][golnum] ++;
|
|
||||||
gol2[nx+nnx][ny+nny][0] ++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(nx=4;nx<XRES-4;nx++)
|
for(nx=CELL;nx<XRES-CELL;nx++)
|
||||||
for(ny=4;ny<YRES-4;ny++)
|
for(ny=CELL;ny<YRES-CELL;ny++)
|
||||||
{
|
{
|
||||||
int neighbors = gol2[nx][ny][0];
|
int neighbors = gol2[nx][ny][0];
|
||||||
if(neighbors==0)
|
if(neighbors==0)
|
||||||
|
Reference in New Issue
Block a user