int hexBgColorNew = 200; void ColorAssignNK(int i, int j, float diff, int k, int ColorIdxNum){ //get the center hexArrayEven[i][j] = hexBgColorNew; hexColorEven[i][j] = ColorIdxNum; if (k % 2 == 0 ){ for (int upbound = i - k / 2; upbound <= i + k/2; upbound ++){ hexArrayEven[upbound][j - k / 2] = hexArrayEven[i][j] * pow(diff, k); if(hexColorEven[upbound][j - k / 2] == 0){ hexColorEven[upbound][j - k / 2] = ColorIdxNum; } else{ hexColorEven[upbound][j - k / 2] = hexColorEven[upbound][j - k / 2] + ColorIdxNum; } } for (int lowbound = i - k / 2; lowbound <= i + k/2 ; lowbound ++){ hexArrayEven[lowbound][j + k / 2 ] = hexArrayEven[i][j] * pow(diff, k); if(hexColorEven[lowbound][j + k / 2 ] == 0){ hexColorEven[lowbound][j + k / 2 ] = ColorIdxNum; } else{ hexColorEven[lowbound][j + k / 2 ] = hexColorEven[lowbound][j + k / 2 ] + ColorIdxNum; } } for (int leftup = 0; leftup < k / 2 ; leftup ++){ hexArrayEven[i - k/2 - 1 - leftup][j - k/2 + leftup + 1] = hexArrayEven[i][j] * pow(diff, k); if(hexColorEven[i - k/2 - 1 - leftup][j - k/2 + leftup + 1] ==0){ hexColorEven[i - k/2 - 1 - leftup][j - k/2 + leftup + 1] = ColorIdxNum; } else{ hexColorEven[i - k/2 - 1 - leftup][j - k/2 + leftup + 1] =hexColorEven[i - k/2 - 1 - leftup][j - k/2 + leftup + 1] + ColorIdxNum; } hexArrayOdd[i - k/2 - 1 - leftup][j - k/2 + leftup] = hexArrayEven[i][j] * pow(diff, k); if(hexColorOdd[i - k/2 - 1 - leftup][j - k/2 + leftup] ==0){ hexColorOdd[i - k/2 - 1 - leftup][j - k/2 + leftup] = ColorIdxNum; } else{ hexColorOdd[i - k/2 - 1 - leftup][j - k/2 + leftup] = hexColorOdd[i - k/2 - 1 - leftup][j - k/2 + leftup] +ColorIdxNum; } } ////////////////////////////////////////////////////////// for (int rightdown = 0; rightdown < k / 2 ; rightdown ++){ hexArrayOdd[i + k - 1 - rightdown][j + rightdown] = hexArrayEven[i][j] * pow(diff, k); if(hexColorOdd[i + k - 1 - rightdown][j + rightdown] ==0){ hexColorOdd[i + k - 1 - rightdown][j + rightdown] = ColorIdxNum; } else{ hexColorOdd[i + k - 1 - rightdown][j + rightdown] =hexColorOdd[i + k - 1 - rightdown][j + rightdown] + ColorIdxNum; } } for (int rightdown = 0; rightdown < k / 2 - 1 ; rightdown ++){ hexArrayEven[i + k - 1 - rightdown][j + rightdown + 1] = hexArrayEven[i][j] * pow(diff, k); if(hexColorEven[i + k - 1 - rightdown][j + rightdown + 1] ==0){ hexColorEven[i + k - 1 - rightdown][j + rightdown + 1] = ColorIdxNum; } else{ hexColorEven[i + k - 1 - rightdown][j + rightdown + 1] = hexColorEven[i + k - 1 - rightdown][j + rightdown + 1] + ColorIdxNum; } } ///////////////////////////////////////////////////////// for (int rightup = 0; rightup < k / 2 ; rightup ++){ hexArrayEven[i + k/2 + 1 + rightup][j - k/2 + 1 + rightup] = hexArrayEven[i][j] * pow(diff, k); if(hexColorEven[i + k/2 + 1 + rightup][j - k/2 + 1 + rightup] ==0){ hexColorEven[i + k/2 + 1 + rightup][j - k/2 + 1 + rightup] = ColorIdxNum; } else{ hexColorEven[i + k/2 + 1 + rightup][j - k/2 + 1 + rightup] = hexColorEven[i + k/2 + 1 + rightup][j - k/2 + 1 + rightup]+ColorIdxNum; } hexArrayOdd[i + k/2 + rightup][j - k/2 + rightup] = hexArrayEven[i][j] * pow(diff, k); if(hexColorOdd[i + k/2 + rightup][j - k/2 + rightup]==0){ hexColorOdd[i + k/2 + rightup][j - k/2 + rightup] = ColorIdxNum; } else{ hexColorOdd[i + k/2 + rightup][j - k/2 + rightup]=hexColorOdd[i + k/2 + rightup][j - k/2 + rightup]+ColorIdxNum; } } ///////////////////////////////////////////////////////// for (int leftdown = 0; leftdown < k / 2; leftdown ++){ hexArrayOdd[i - k + leftdown][j + leftdown] = hexArrayEven[i][j] * pow(diff, k); if(hexColorOdd[i - k + leftdown][j + leftdown]==0){ hexColorOdd[i - k + leftdown][j + leftdown] = ColorIdxNum; } else{ hexColorOdd[i - k + leftdown][j + leftdown] = hexColorOdd[i - k + leftdown][j + leftdown]+ColorIdxNum; } } for (int leftdown = 0; leftdown < k / 2 - 1; leftdown ++){ hexArrayEven[i - k + leftdown + 1][j + leftdown + 1] = hexArrayEven[i][j] * pow(diff, k); if( hexColorEven[i - k + leftdown + 1][j + leftdown + 1]==0){ hexColorEven[i - k + leftdown + 1][j + leftdown + 1] = ColorIdxNum; } else{ hexColorEven[i - k + leftdown + 1][j + leftdown + 1] = hexColorEven[i - k + leftdown + 1][j + leftdown + 1]+ColorIdxNum; } } }//////////////////////////////////////////////////////////////////////////// else{ hexArrayEven[i - k][j] = hexArrayEven[i][j] * pow(diff, k); if(hexColorEven[i - k][j]==0){ hexColorEven[i - k][j] = ColorIdxNum; } else{ hexColorEven[i - k][j] = hexColorEven[i - k][j]+ColorIdxNum; } hexArrayEven[i + k][j] = hexArrayEven[i - k][j]; if(hexColorEven[i + k][j]==0){ hexColorEven[i + k][j] = ColorIdxNum; } else{ hexColorEven[i + k][j] = hexColorEven[i + k][j]+ColorIdxNum; } for (int upbound = i - k / 2 - 1; upbound <= i + k/2; upbound ++){ hexArrayOdd[upbound][j - k / 2 - 1] = hexArrayEven[i][j] * pow(diff, k); if(hexColorOdd[upbound][j - k / 2 - 1] == 0){ hexColorOdd[upbound][j - k / 2 - 1] = ColorIdxNum; } else{ hexColorOdd[upbound][j - k / 2 - 1] = hexColorOdd[upbound][j - k / 2 - 1]+ColorIdxNum; } } for (int lowbound = i - k / 2 - 1; lowbound <= i + k/2 ; lowbound ++){ hexArrayOdd[lowbound][j + k / 2] = hexArrayEven[i][j] * pow(diff, k); if(hexColorOdd[lowbound][j + k / 2] == 0){ hexColorOdd[lowbound][j + k / 2] = ColorIdxNum; } else{ hexColorOdd[lowbound][j + k / 2] = hexColorOdd[lowbound][j + k / 2]+ColorIdxNum; } } for (int leftup = 0; leftup < k / 2 ; leftup ++){ hexArrayEven[i - k/2 - 1 - leftup][j - k/2 + leftup] = hexArrayEven[i][j] * pow(diff, k); if(hexColorEven[i - k/2 - 1 - leftup][j - k/2 + leftup] == 0){ hexColorEven[i - k/2 - 1 - leftup][j - k/2 + leftup] = ColorIdxNum; } else{ hexColorEven[i - k/2 - 1 - leftup][j - k/2 + leftup] = hexColorEven[i - k/2 - 1 - leftup][j - k/2 + leftup]+ColorIdxNum; } hexArrayOdd[i - k/2 - 2 - leftup][j - k/2 + leftup] = hexArrayEven[i][j] * pow(diff, k); if(hexColorOdd[i - k/2 - 2 - leftup][j - k/2 + leftup] ==0){ hexColorOdd[i - k/2 - 2 - leftup][j - k/2 + leftup] = ColorIdxNum; } else{ hexColorOdd[i - k/2 - 2 - leftup][j - k/2 + leftup] = hexColorOdd[i - k/2 - 2 - leftup][j - k/2 + leftup]+ColorIdxNum; } } for (int rightdown = 0; rightdown < k / 2; rightdown ++){ hexArrayOdd[i + k - 1 - rightdown][j + rightdown] = hexArrayEven[i][j] * pow(diff, k); if( hexColorOdd[i + k - 1 - rightdown][j + rightdown]==0){ hexColorOdd[i + k - 1 - rightdown][j + rightdown] = ColorIdxNum; } else{ hexColorOdd[i + k - 1 - rightdown][j + rightdown] = hexColorOdd[i + k - 1 - rightdown][j + rightdown]+ColorIdxNum; } hexArrayEven[i + k - 1 - rightdown][j + rightdown + 1] = hexArrayEven[i][j] * pow(diff, k); if(hexColorEven[i + k - 1 - rightdown][j + rightdown + 1] == 0){ hexColorEven[i + k - 1 - rightdown][j + rightdown + 1] = ColorIdxNum; } else{ hexColorEven[i + k - 1 - rightdown][j + rightdown + 1] = hexColorEven[i + k - 1 - rightdown][j + rightdown + 1]+ColorIdxNum; } } for (int rightup = 0; rightup < k / 2 ; rightup ++){ hexArrayEven[i + k/2 + 1 + rightup][j - k/2 + rightup] = hexArrayEven[i][j] * pow(diff, k); if(hexColorEven[i + k/2 + 1 + rightup][j - k/2 + rightup]==0){ hexColorEven[i + k/2 + 1 + rightup][j - k/2 + rightup] = ColorIdxNum; } hexArrayOdd[i + k/2 + 1 + rightup][j - k/2 + rightup] = hexArrayEven[i][j] * pow(diff, k); if(hexColorOdd[i + k/2 + 1 + rightup][j - k/2 + rightup] == 0){ hexColorOdd[i + k/2 + 1 + rightup][j - k/2 + rightup] = ColorIdxNum; } else{ hexColorOdd[i + k/2 + 1 + rightup][j - k/2 + rightup] = hexColorOdd[i + k/2 + 1 + rightup][j - k/2 + rightup]+ColorIdxNum; } } for (int leftdown = 0; leftdown < k / 2; leftdown ++){ hexArrayOdd[i - k + leftdown][j + leftdown] = hexArrayEven[i][j] * pow(diff, k); if(hexColorOdd[i - k + leftdown][j + leftdown]==0){ hexColorOdd[i - k + leftdown][j + leftdown] = ColorIdxNum; } else{ hexColorOdd[i - k + leftdown][j + leftdown] = hexColorOdd[i - k + leftdown][j + leftdown]+ColorIdxNum; } hexArrayEven[i - k + leftdown + 1][j + leftdown + 1] = hexArrayEven[i][j] * pow(diff, k); if(hexColorEven[i - k + leftdown + 1][j + leftdown + 1] == 0){ hexColorEven[i - k + leftdown + 1][j + leftdown + 1] = ColorIdxNum; } else{ hexColorEven[i - k + leftdown + 1][j + leftdown + 1] = hexColorEven[i - k + leftdown + 1][j + leftdown + 1]+ColorIdxNum; } } } }