//--------------------------------------------------------------------------- #include #pragma hdrstop #include "topology.h" #include "globals.h" //--------------------------------------------------------------------------- #pragma package(smart_init) int Toroid4::nextNeigh(int i, int j) { int ix=MeshX(i,size),iy=MeshY(i,size); if(j==i) return MeshXY((ix-1)<0?size-1:ix-1,iy,size); else if (j==MeshXY((ix-1)<0?size-1:ix-1,iy,size)) return (MeshXY((ix+1)%size,iy,size)); else if (j==MeshXY((ix+1)%size,iy,size)) return MeshXY(ix,iy-1<0?size-1:iy-1,size); else if (j==MeshXY(ix,iy-1<0?size-1:iy-1,size)) return MeshXY(ix,(iy+1)%size,size); else return i; }; int Toroid8::nextNeigh(int i, int j) { int ix=MeshX(i,size),iy=MeshY(i,size); if(j==i) return MeshXY((ix-1)<0?size-1:ix-1,iy,size); else if (j==MeshXY((ix-1)<0?size-1:ix-1,iy,size)) return (MeshXY((ix+1)%size,iy,size)); else if (j==MeshXY((ix+1)%size,iy,size)) return MeshXY(ix,iy-1<0?size-1:iy-1,size); else if (j==MeshXY(ix,iy-1<0?size-1:iy-1,size)) return MeshXY(ix,(iy+1)%size,size); else if (j==MeshXY(ix,(iy+1)%size,size)) return MeshXY((ix-1)<0?size-1:ix-1,iy-1<0?size-1:iy-1,size); else if (j==MeshXY((ix-1)<0?size-1:ix-1,iy-1<0?size-1:iy-1,size)) return MeshXY((ix+1)%size,iy-1<0?size-1:iy-1,size); else if (j==MeshXY((ix+1)%size,iy-1<0?size-1:iy-1,size)) return MeshXY((ix+1)%size,(iy+1)%size,size); else if (j==MeshXY((ix+1)%size,(iy+1)%size,size)) return MeshXY((ix-1)<0?size-1:ix-1,(iy+1)%size,size); else return i; }; int RandomTopology::nextNeigh(int i, int j) { int count=sqr(size); if (frand()>NProbablity) return i; int f; do { f = (frand())*(float)count; }while ((f == i) || (f >= count) || (f<0)); return f; }; /* int Mesh4::nextNeigh(int i, int j) { int ix=MeshX(i,size),iy=MeshY(i,size),jx=MeshX(j,size),jy=MeshY(j,size); if (ix==0) { if(iy==0) { } else if(iy==size-1) { } else { }; } else if (ix==size-1) { } else if (iy==0) { } else if (iy==size-1) { } else { if(j==i) return MeshXY(ix-1,iy,size) else if (j==MeshXY(ix-1,iy,size)) return MeshXY(ix+1,iy,size); else if (j==MeshXY(ix+1,iy,size)) return MeshXY(ix,iy-1,size); else if (j==MeshXY(ix,iy-1,size)) return MeshXY(ix,iy+1,size); else return i; }; }; */