- \r
- for (int i = 0; i < 4; i++) {\r
- final double w1 = (double) (i_mkvertex[i + 1] - i_mkvertex[i] + 1) * 0.05 + 0.5;\r
- final int st = (int) (i_mkvertex[i] + w1);\r
- final int ed = (int) (i_mkvertex[i + 1] - w1);\r
- final int n = ed - st + 1;\r
+ double w1; \r
+ for (int i = 0; i < 4; i++){\r
+ int n,st,ed;\r
+ //探索区間の決定\r
+ if(i_mkvertex[i + 1]>=i_mkvertex[i]){\r
+ //頂点[i]から頂点[i+1]までの輪郭が、1区間にあるとき\r
+ w1 = (double) (i_mkvertex[i + 1] - i_mkvertex[i] + 1) * 0.05 + 0.5;\r
+ //探索区間の決定\r
+ st = (int) (i_mkvertex[i]+w1);\r
+ ed = (int) (i_mkvertex[i+1] - w1);\r
+ }else{\r
+ //頂点[i]から頂点[i+1]までの輪郭が、2区間に分かれているとき\r
+ w1 = (double) (i_mkvertex[i + 1]+i_cood_num-i_mkvertex[i]+1)%i_cood_num * 0.05 + 0.5;\r
+ //探索区間の決定\r
+ st = (int) (i_mkvertex[i]+w1)%i_cood_num;\r
+ ed = (int) (i_mkvertex[i+1]+i_cood_num-w1)%i_cood_num;\r
+ }\r
+ //探索区間数を確認\r
+ if(st<=ed){\r
+ //探索区間は1区間\r
+ n = ed - st + 1;\r
+ this._dist_factor.observ2IdealBatch(i_xcoord, i_ycoord, st, n,this._xpos,this._ypos,0);\r
+ }else{\r
+ //探索区間は2区間\r
+ n=ed+1+i_cood_num-st;\r
+ this._dist_factor.observ2IdealBatch(i_xcoord, i_ycoord, st,i_cood_num-st,this._xpos,this._ypos,0);\r
+ this._dist_factor.observ2IdealBatch(i_xcoord, i_ycoord, 0,ed+1,this._xpos,this._ypos,i_cood_num-st);\r
+ }\r
+ //要素数の確認\r