/*******************************************************************************
 * Copyright (c) 2010 Haifeng Li
 *   
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package smile.demo.data.clustering;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

/**
 *
 * @author Haifeng Li
 */
public class NeuralGasData {

    private static final int MAX_COMPLEX = 58;
    private static final float RING_FACTOR = 0.4f;
    private static final int MAX_DISCRETE_SIGNALS = 500;

    private int numRun = 0;
    private int discreteSignalsX[] = new int[MAX_DISCRETE_SIGNALS];
    private int discreteSignalsY[] = new int[MAX_DISCRETE_SIGNALS];
    private int bounceX = -1;
    private int bounceY = -1;
    private int jumpX = 250;
    private int jumpY = 250;
    private double bounceX_old = 1;
    private double bounceY_old = 1;

    int SignalX;
    int SignalY;

    public void initDiscreteSignals() {
        int w = 500;
        int h = 500;
        int kx = 1;
        int ky = 1;
        int l = 0;
        int dSX[] = discreteSignalsX;
        int dSY[] = discreteSignalsY;

        if (w > h) {
            kx = w / 4;
            l = h;
        } else {
            ky = h / 4;
            l = w;
        }
        dSX[0] = (int) (kx + l * 0.13814);
        dSY[0] = (int) (ky + l * (1.0 - 0.29675));
        dSX[1] = (int) (kx + l * 0.19548);
        dSY[1] = (int) (ky + l * (1.0 - 0.09674));
        dSX[2] = (int) (kx + l * 0.73576);
        dSY[2] = (int) (ky + l * (1.0 - 0.86994));
        dSX[3] = (int) (kx + l * 0.73065);
        dSY[3] = (int) (ky + l * (1.0 - 0.19024));
        dSX[4] = (int) (kx + l * 0.83479);
        dSY[4] = (int) (ky + l * (1.0 - 0.34258));
        dSX[5] = (int) (kx + l * 0.13184);
        dSY[5] = (int) (ky + l * (1.0 - 0.56509));
        dSX[6] = (int) (kx + l * 0.15959);
        dSY[6] = (int) (ky + l * (1.0 - 0.59065));
        dSX[7] = (int) (kx + l * 0.21696);
        dSY[7] = (int) (ky + l * (1.0 - 0.1402));
        dSX[8] = (int) (kx + l * 0.61592);
        dSY[8] = (int) (ky + l * (1.0 - 0.16657));
        dSX[9] = (int) (kx + l * 0.10513);
        dSY[9] = (int) (ky + l * (1.0 - 0.21708));
        dSX[10] = (int) (kx + l * 0.1864);
        dSY[10] = (int) (ky + l * (1.0 - 0.1454));
        dSX[11] = (int) (kx + l * 0.36696);
        dSY[11] = (int) (ky + l * (1.0 - 0.74924));
        dSX[12] = (int) (kx + l * 0.18345);
        dSY[12] = (int) (ky + l * (1.0 - 0.80946));
        dSX[13] = (int) (kx + l * 0.8509);
        dSY[13] = (int) (ky + l * (1.0 - 0.38268));
        dSX[14] = (int) (kx + l * 0.19476);
        dSY[14] = (int) (ky + l * (1.0 - 0.74262));
        dSX[15] = (int) (kx + l * 0.49164);
        dSY[15] = (int) (ky + l * (1.0 - 0.65776));
        dSX[16] = (int) (kx + l * 0.86552);
        dSY[16] = (int) (ky + l * (1.0 - 0.38373));
        dSX[17] = (int) (kx + l * 0.73176);
        dSY[17] = (int) (ky + l * (1.0 - 0.84414));
        dSX[18] = (int) (kx + l * 0.71978);
        dSY[18] = (int) (ky + l * (1.0 - 0.86979));
        dSX[19] = (int) (kx + l * 0.83034);
        dSY[19] = (int) (ky + l * (1.0 - 0.36613));
        dSX[20] = (int) (kx + l * 0.39886);
        dSY[20] = (int) (ky + l * (1.0 - 0.71479));
        dSX[21] = (int) (kx + l * 0.09955);
        dSY[21] = (int) (ky + l * (1.0 - 0.20342));
        dSX[22] = (int) (kx + l * 0.07091);
        dSY[22] = (int) (ky + l * (1.0 - 0.17197));
        dSX[23] = (int) (kx + l * 0.21896);
        dSY[23] = (int) (ky + l * (1.0 - 0.10398));
        dSX[24] = (int) (kx + l * 0.72465);
        dSY[24] = (int) (ky + l * (1.0 - 0.13984));
        dSX[25] = (int) (kx + l * 0.71034);
        dSY[25] = (int) (ky + l * (1.0 - 0.87981));
        dSX[26] = (int) (kx + l * 0.83547);
        dSY[26] = (int) (ky + l * (1.0 - 0.36065));
        dSX[27] = (int) (kx + l * 0.13907);
        dSY[27] = (int) (ky + l * (1.0 - 0.56451));
        dSX[28] = (int) (kx + l * 0.62124);
        dSY[28] = (int) (ky + l * (1.0 - 0.20175));
        dSX[29] = (int) (kx + l * 0.65543);
        dSY[29] = (int) (ky + l * (1.0 - 0.17331));
        dSX[30] = (int) (kx + l * 0.72349);
        dSY[30] = (int) (ky + l * (1.0 - 0.14375));
        dSX[31] = (int) (kx + l * 0.82495);
        dSY[31] = (int) (ky + l * (1.0 - 0.40116));
        dSX[32] = (int) (kx + l * 0.76586);
        dSY[32] = (int) (ky + l * (1.0 - 0.82376));
        dSX[33] = (int) (kx + l * 0.24648);
        dSY[33] = (int) (ky + l * (1.0 - 0.11987));
        dSX[34] = (int) (kx + l * 0.14817);
        dSY[34] = (int) (ky + l * (1.0 - 0.59985));
        dSX[35] = (int) (kx + l * 0.82663);
        dSY[35] = (int) (ky + l * (1.0 - 0.38964));
        dSX[36] = (int) (kx + l * 0.37131);
        dSY[36] = (int) (ky + l * (1.0 - 0.72726));
        dSX[37] = (int) (kx + l * 0.12176);
        dSY[37] = (int) (ky + l * (1.0 - 0.60139));
        dSX[38] = (int) (kx + l * 0.73587);
        dSY[38] = (int) (ky + l * (1.0 - 0.86952));
        dSX[39] = (int) (kx + l * 0.59645);
        dSY[39] = (int) (ky + l * (1.0 - 0.21302));
        dSX[40] = (int) (kx + l * 0.39489);
        dSY[40] = (int) (ky + l * (1.0 - 0.63452));
        dSX[41] = (int) (kx + l * 0.234);
        dSY[41] = (int) (ky + l * (1.0 - 0.10385));
        dSX[42] = (int) (kx + l * 0.51314);
        dSY[42] = (int) (ky + l * (1.0 - 0.67151));
        dSX[43] = (int) (kx + l * 0.13499);
        dSY[43] = (int) (ky + l * (1.0 - 0.56896));
        dSX[44] = (int) (kx + l * 0.10815);
        dSY[44] = (int) (ky + l * (1.0 - 0.62515));
        dSX[45] = (int) (kx + l * 0.35487);
        dSY[45] = (int) (ky + l * (1.0 - 0.65635));
        dSX[46] = (int) (kx + l * 0.13939);
        dSY[46] = (int) (ky + l * (1.0 - 0.24579));
        dSX[47] = (int) (kx + l * 0.22087);
        dSY[47] = (int) (ky + l * (1.0 - 0.20651));
        dSX[48] = (int) (kx + l * 0.12274);
        dSY[48] = (int) (ky + l * (1.0 - 0.61131));
        dSX[49] = (int) (kx + l * 0.47888);
        dSY[49] = (int) (ky + l * (1.0 - 0.65166));
        dSX[50] = (int) (kx + l * 0.18836);
        dSY[50] = (int) (ky + l * (1.0 - 0.6895));
        dSX[51] = (int) (kx + l * 0.2511);
        dSY[51] = (int) (ky + l * (1.0 - 0.12476));
        dSX[52] = (int) (kx + l * 0.84242);
        dSY[52] = (int) (ky + l * (1.0 - 0.3685));
        dSX[53] = (int) (kx + l * 0.70824);
        dSY[53] = (int) (ky + l * (1.0 - 0.18571));
        dSX[54] = (int) (kx + l * 0.2548);
        dSY[54] = (int) (ky + l * (1.0 - 0.77552));
        dSX[55] = (int) (kx + l * 0.3659);
        dSY[55] = (int) (ky + l * (1.0 - 0.64852));
        dSX[56] = (int) (kx + l * 0.78094);
        dSY[56] = (int) (ky + l * (1.0 - 0.37826));
        dSX[57] = (int) (kx + l * 0.34205);
        dSY[57] = (int) (ky + l * (1.0 - 0.7295));
        dSX[58] = (int) (kx + l * 0.83349);
        dSY[58] = (int) (ky + l * (1.0 - 0.37511));
        dSX[59] = (int) (kx + l * 0.35477);
        dSY[59] = (int) (ky + l * (1.0 - 0.68483));
        dSX[60] = (int) (kx + l * 0.13761);
        dSY[60] = (int) (ky + l * (1.0 - 0.17267));
        dSX[61] = (int) (kx + l * 0.46041);
        dSY[61] = (int) (ky + l * (1.0 - 0.72594));
        dSX[62] = (int) (kx + l * 0.12945);
        dSY[62] = (int) (ky + l * (1.0 - 0.58863));
        dSX[63] = (int) (kx + l * 0.27379);
        dSY[63] = (int) (ky + l * (1.0 - 0.14071));
        dSX[64] = (int) (kx + l * 0.4097);
        dSY[64] = (int) (ky + l * (1.0 - 0.77705));
        dSX[65] = (int) (kx + l * 0.7175);
        dSY[65] = (int) (ky + l * (1.0 - 0.87696));
        dSX[66] = (int) (kx + l * 0.43969);
        dSY[66] = (int) (ky + l * (1.0 - 0.66972));
        dSX[67] = (int) (kx + l * 0.48588);
        dSY[67] = (int) (ky + l * (1.0 - 0.63899));
        dSX[68] = (int) (kx + l * 0.69263);
        dSY[68] = (int) (ky + l * (1.0 - 0.20386));
        dSX[69] = (int) (kx + l * 0.7374);
        dSY[69] = (int) (ky + l * (1.0 - 0.8667));
        dSX[70] = (int) (kx + l * 0.67306);
        dSY[70] = (int) (ky + l * (1.0 - 0.18347));
        dSX[71] = (int) (kx + l * 0.21203);
        dSY[71] = (int) (ky + l * (1.0 - 0.12508));
        dSX[72] = (int) (kx + l * 0.48821);
        dSY[72] = (int) (ky + l * (1.0 - 0.67574));
        dSX[73] = (int) (kx + l * 0.45742);
        dSY[73] = (int) (ky + l * (1.0 - 0.67679));
        dSX[74] = (int) (kx + l * 0.67982);
        dSY[74] = (int) (ky + l * (1.0 - 0.1421));
        dSX[75] = (int) (kx + l * 0.13429);
        dSY[75] = (int) (ky + l * (1.0 - 0.56728));
        dSX[76] = (int) (kx + l * 0.2402);
        dSY[76] = (int) (ky + l * (1.0 - 0.76521));
        dSX[77] = (int) (kx + l * 0.15482);
        dSY[77] = (int) (ky + l * (1.0 - 0.178));
        dSX[78] = (int) (kx + l * 0.71594);
        dSY[78] = (int) (ky + l * (1.0 - 0.15844));
        dSX[79] = (int) (kx + l * 0.10534);
        dSY[79] = (int) (ky + l * (1.0 - 0.59961));
        dSX[80] = (int) (kx + l * 0.44167);
        dSY[80] = (int) (ky + l * (1.0 - 0.69823));
        dSX[81] = (int) (kx + l * 0.46529);
        dSY[81] = (int) (ky + l * (1.0 - 0.70682));
        dSX[82] = (int) (kx + l * 0.13842);
        dSY[82] = (int) (ky + l * (1.0 - 0.56618));
        dSX[83] = (int) (kx + l * 0.09876);
        dSY[83] = (int) (ky + l * (1.0 - 0.5795));
        dSX[84] = (int) (kx + l * 0.12101);
        dSY[84] = (int) (ky + l * (1.0 - 0.57408));
        dSX[85] = (int) (kx + l * 0.44963);
        dSY[85] = (int) (ky + l * (1.0 - 0.74847));
        dSX[86] = (int) (kx + l * 0.12532);
        dSY[86] = (int) (ky + l * (1.0 - 0.56478));
        dSX[87] = (int) (kx + l * 0.18264);
        dSY[87] = (int) (ky + l * (1.0 - 0.77186));
        dSX[88] = (int) (kx + l * 0.80443);
        dSY[88] = (int) (ky + l * (1.0 - 0.35896));
        dSX[89] = (int) (kx + l * 0.72038);
        dSY[89] = (int) (ky + l * (1.0 - 0.90205));
        dSX[90] = (int) (kx + l * 0.24934);
        dSY[90] = (int) (ky + l * (1.0 - 0.77047));
        dSX[91] = (int) (kx + l * 0.35552);
        dSY[91] = (int) (ky + l * (1.0 - 0.70131));
        dSX[92] = (int) (kx + l * 0.49591);
        dSY[92] = (int) (ky + l * (1.0 - 0.71126));
        dSX[93] = (int) (kx + l * 0.36426);
        dSY[93] = (int) (ky + l * (1.0 - 0.72803));
        dSX[94] = (int) (kx + l * 0.21113);
        dSY[94] = (int) (ky + l * (1.0 - 0.08745));
        dSX[95] = (int) (kx + l * 0.33412);
        dSY[95] = (int) (ky + l * (1.0 - 0.68345));
        dSX[96] = (int) (kx + l * 0.17158);
        dSY[96] = (int) (ky + l * (1.0 - 0.226));
        dSX[97] = (int) (kx + l * 0.69135);
        dSY[97] = (int) (ky + l * (1.0 - 0.26172));
        dSX[98] = (int) (kx + l * 0.80362);
        dSY[98] = (int) (ky + l * (1.0 - 0.34908));
        dSX[99] = (int) (kx + l * 0.49367);
        dSY[99] = (int) (ky + l * (1.0 - 0.61372));
        dSX[100] = (int) (kx + l * 0.67809);
        dSY[100] = (int) (ky + l * (1.0 - 0.16071));
        dSX[101] = (int) (kx + l * 0.42288);
        dSY[101] = (int) (ky + l * (1.0 - 0.7547));
        dSX[102] = (int) (kx + l * 0.21535);
        dSY[102] = (int) (ky + l * (1.0 - 0.71766));
        dSX[103] = (int) (kx + l * 0.26248);
        dSY[103] = (int) (ky + l * (1.0 - 0.0794));
        dSX[104] = (int) (kx + l * 0.65766);
        dSY[104] = (int) (ky + l * (1.0 - 0.11433));
        dSX[105] = (int) (kx + l * 0.81799);
        dSY[105] = (int) (ky + l * (1.0 - 0.36416));
        dSX[106] = (int) (kx + l * 0.80867);
        dSY[106] = (int) (ky + l * (1.0 - 0.39382));
        dSX[107] = (int) (kx + l * 0.2401);
        dSY[107] = (int) (ky + l * (1.0 - 0.83207));
        dSX[108] = (int) (kx + l * 0.83016);
        dSY[108] = (int) (ky + l * (1.0 - 0.37551));
        dSX[109] = (int) (kx + l * 0.30746);
        dSY[109] = (int) (ky + l * (1.0 - 0.78597));
        dSX[110] = (int) (kx + l * 0.22122);
        dSY[110] = (int) (ky + l * (1.0 - 0.19961));
        dSX[111] = (int) (kx + l * 0.81422);
        dSY[111] = (int) (ky + l * (1.0 - 0.39008));
        dSX[112] = (int) (kx + l * 0.28025);
        dSY[112] = (int) (ky + l * (1.0 - 0.16485));
        dSX[113] = (int) (kx + l * 0.42936);
        dSY[113] = (int) (ky + l * (1.0 - 0.70449));
        dSX[114] = (int) (kx + l * 0.20721);
        dSY[114] = (int) (ky + l * (1.0 - 0.79412));
        dSX[115] = (int) (kx + l * 0.1023);
        dSY[115] = (int) (ky + l * (1.0 - 0.59687));
        dSX[116] = (int) (kx + l * 0.49873);
        dSY[116] = (int) (ky + l * (1.0 - 0.68088));
        dSX[117] = (int) (kx + l * 0.44373);
        dSY[117] = (int) (ky + l * (1.0 - 0.60472));
        dSX[118] = (int) (kx + l * 0.12955);
        dSY[118] = (int) (ky + l * (1.0 - 0.58045));
        dSX[119] = (int) (kx + l * 0.40319);
        dSY[119] = (int) (ky + l * (1.0 - 0.64087));
        dSX[120] = (int) (kx + l * 0.39597);
        dSY[120] = (int) (ky + l * (1.0 - 0.74223));
        dSX[121] = (int) (kx + l * 0.37318);
        dSY[121] = (int) (ky + l * (1.0 - 0.74561));
        dSX[122] = (int) (kx + l * 0.48026);
        dSY[122] = (int) (ky + l * (1.0 - 0.65002));
        dSX[123] = (int) (kx + l * 0.09824);
        dSY[123] = (int) (ky + l * (1.0 - 0.15969));
        dSX[124] = (int) (kx + l * 0.68454);
        dSY[124] = (int) (ky + l * (1.0 - 0.17986));
        dSX[125] = (int) (kx + l * 0.11659);
        dSY[125] = (int) (ky + l * (1.0 - 0.30008));
        dSX[126] = (int) (kx + l * 0.73836);
        dSY[126] = (int) (ky + l * (1.0 - 0.87819));
        dSX[127] = (int) (kx + l * 0.37924);
        dSY[127] = (int) (ky + l * (1.0 - 0.72885));
        dSX[128] = (int) (kx + l * 0.07252);
        dSY[128] = (int) (ky + l * (1.0 - 0.21803));
        dSX[129] = (int) (kx + l * 0.22104);
        dSY[129] = (int) (ky + l * (1.0 - 0.81961));
        dSX[130] = (int) (kx + l * 0.23872);
        dSY[130] = (int) (ky + l * (1.0 - 0.06629));
        dSX[131] = (int) (kx + l * 0.27114);
        dSY[131] = (int) (ky + l * (1.0 - 0.77851));
        dSX[132] = (int) (kx + l * 0.84307);
        dSY[132] = (int) (ky + l * (1.0 - 0.35729));
        dSX[133] = (int) (kx + l * 0.83856);
        dSY[133] = (int) (ky + l * (1.0 - 0.38892));
        dSX[134] = (int) (kx + l * 0.84041);
        dSY[134] = (int) (ky + l * (1.0 - 0.33806));
        dSX[135] = (int) (kx + l * 0.72441);
        dSY[135] = (int) (ky + l * (1.0 - 0.84423));
        dSX[136] = (int) (kx + l * 0.45169);
        dSY[136] = (int) (ky + l * (1.0 - 0.66888));
        dSX[137] = (int) (kx + l * 0.7291);
        dSY[137] = (int) (ky + l * (1.0 - 0.85748));
        dSX[138] = (int) (kx + l * 0.38792);
        dSY[138] = (int) (ky + l * (1.0 - 0.74045));
        dSX[139] = (int) (kx + l * 0.69006);
        dSY[139] = (int) (ky + l * (1.0 - 0.88995));
        dSX[140] = (int) (kx + l * 0.09004);
        dSY[140] = (int) (ky + l * (1.0 - 0.57847));
        dSX[141] = (int) (kx + l * 0.20986);
        dSY[141] = (int) (ky + l * (1.0 - 0.21552));
        dSX[142] = (int) (kx + l * 0.22969);
        dSY[142] = (int) (ky + l * (1.0 - 0.79372));
        dSX[143] = (int) (kx + l * 0.2407);
        dSY[143] = (int) (ky + l * (1.0 - 0.78147));
        dSX[144] = (int) (kx + l * 0.83483);
        dSY[144] = (int) (ky + l * (1.0 - 0.35725));
        dSX[145] = (int) (kx + l * 0.74069);
        dSY[145] = (int) (ky + l * (1.0 - 0.87034));
        dSX[146] = (int) (kx + l * 0.53127);
        dSY[146] = (int) (ky + l * (1.0 - 0.69099));
        dSX[147] = (int) (kx + l * 0.73562);
        dSY[147] = (int) (ky + l * (1.0 - 0.89203));
        dSX[148] = (int) (kx + l * 0.22449);
        dSY[148] = (int) (ky + l * (1.0 - 0.14296));
        dSX[149] = (int) (kx + l * 0.74473);
        dSY[149] = (int) (ky + l * (1.0 - 0.85085));
        dSX[150] = (int) (kx + l * 0.80492);
        dSY[150] = (int) (ky + l * (1.0 - 0.40119));
        dSX[151] = (int) (kx + l * 0.66545);
        dSY[151] = (int) (ky + l * (1.0 - 0.14658));
        dSX[152] = (int) (kx + l * 0.74401);
        dSY[152] = (int) (ky + l * (1.0 - 0.88545));
        dSX[153] = (int) (kx + l * 0.16486);
        dSY[153] = (int) (ky + l * (1.0 - 0.81768));
        dSX[154] = (int) (kx + l * 0.10909);
        dSY[154] = (int) (ky + l * (1.0 - 0.58963));
        dSX[155] = (int) (kx + l * 0.36812);
        dSY[155] = (int) (ky + l * (1.0 - 0.71451));
        dSX[156] = (int) (kx + l * 0.77083);
        dSY[156] = (int) (ky + l * (1.0 - 0.86754));
        dSX[157] = (int) (kx + l * 0.19709);
        dSY[157] = (int) (ky + l * (1.0 - 0.16813));
        dSX[158] = (int) (kx + l * 0.08257);
        dSY[158] = (int) (ky + l * (1.0 - 0.57901));
        dSX[159] = (int) (kx + l * 0.81561);
        dSY[159] = (int) (ky + l * (1.0 - 0.38789));
        dSX[160] = (int) (kx + l * 0.11613);
        dSY[160] = (int) (ky + l * (1.0 - 0.61403));
        dSX[161] = (int) (kx + l * 0.16391);
        dSY[161] = (int) (ky + l * (1.0 - 0.10041));
        dSX[162] = (int) (kx + l * 0.36024);
        dSY[162] = (int) (ky + l * (1.0 - 0.75178));
        dSX[163] = (int) (kx + l * 0.73822);
        dSY[163] = (int) (ky + l * (1.0 - 0.84884));
        dSX[164] = (int) (kx + l * 0.22963);
        dSY[164] = (int) (ky + l * (1.0 - 0.11442));
        dSX[165] = (int) (kx + l * 0.01152);
        dSY[165] = (int) (ky + l * (1.0 - 0.27939));
        dSX[166] = (int) (kx + l * 0.74314);
        dSY[166] = (int) (ky + l * (1.0 - 0.87522));
        dSX[167] = (int) (kx + l * 0.22871);
        dSY[167] = (int) (ky + l * (1.0 - 0.134));
        dSX[168] = (int) (kx + l * 0.14996);
        dSY[168] = (int) (ky + l * (1.0 - 0.54459));
        dSX[169] = (int) (kx + l * 0.14354);
        dSY[169] = (int) (ky + l * (1.0 - 0.25589));
        dSX[170] = (int) (kx + l * 0.0779);
        dSY[170] = (int) (ky + l * (1.0 - 0.2636));
        dSX[171] = (int) (kx + l * 0.13208);
        dSY[171] = (int) (ky + l * (1.0 - 0.28005));
        dSX[172] = (int) (kx + l * 0.2498);
        dSY[172] = (int) (ky + l * (1.0 - 0.75765));
        dSX[173] = (int) (kx + l * 0.30859);
        dSY[173] = (int) (ky + l * (1.0 - 0.08592));
        dSX[174] = (int) (kx + l * 0.03277);
        dSY[174] = (int) (ky + l * (1.0 - 0.25141));
        dSX[175] = (int) (kx + l * 0.69026);
        dSY[175] = (int) (ky + l * (1.0 - 0.11579));
        dSX[176] = (int) (kx + l * 0.70569);
        dSY[176] = (int) (ky + l * (1.0 - 0.20655));
        dSX[177] = (int) (kx + l * 0.19796);
        dSY[177] = (int) (ky + l * (1.0 - 0.1327));
        dSX[178] = (int) (kx + l * 0.10402);
        dSY[178] = (int) (ky + l * (1.0 - 0.18623));
        dSX[179] = (int) (kx + l * 0.20623);
        dSY[179] = (int) (ky + l * (1.0 - 0.17315));
        dSX[180] = (int) (kx + l * 0.14383);
        dSY[180] = (int) (ky + l * (1.0 - 0.16819));
        dSX[181] = (int) (kx + l * 0.43416);
        dSY[181] = (int) (ky + l * (1.0 - 0.81161));
        dSX[182] = (int) (kx + l * 0.21801);
        dSY[182] = (int) (ky + l * (1.0 - 0.1926));
        dSX[183] = (int) (kx + l * 0.80582);
        dSY[183] = (int) (ky + l * (1.0 - 0.40684));
        dSX[184] = (int) (kx + l * 0.47273);
        dSY[184] = (int) (ky + l * (1.0 - 0.66746));
        dSX[185] = (int) (kx + l * 0.72923);
        dSY[185] = (int) (ky + l * (1.0 - 0.91807));
        dSX[186] = (int) (kx + l * 0.21609);
        dSY[186] = (int) (ky + l * (1.0 - 0.14719));
        dSX[187] = (int) (kx + l * 0.61592);
        dSY[187] = (int) (ky + l * (1.0 - 0.17603));
        dSX[188] = (int) (kx + l * 0.25956);
        dSY[188] = (int) (ky + l * (1.0 - 0.74824));
        dSX[189] = (int) (kx + l * 0.10157);
        dSY[189] = (int) (ky + l * (1.0 - 0.25437));
        dSX[190] = (int) (kx + l * 0.34822);
        dSY[190] = (int) (ky + l * (1.0 - 0.74119));
        dSX[191] = (int) (kx + l * 0.37535);
        dSY[191] = (int) (ky + l * (1.0 - 0.68263));
        dSX[192] = (int) (kx + l * 0.11609);
        dSY[192] = (int) (ky + l * (1.0 - 0.25491));
        dSX[193] = (int) (kx + l * 0.84751);
        dSY[193] = (int) (ky + l * (1.0 - 0.36326));
        dSX[194] = (int) (kx + l * 0.48434);
        dSY[194] = (int) (ky + l * (1.0 - 0.71852));
        dSX[195] = (int) (kx + l * 0.82894);
        dSY[195] = (int) (ky + l * (1.0 - 0.38072));
        dSX[196] = (int) (kx + l * 0.23618);
        dSY[196] = (int) (ky + l * (1.0 - 0.78797));
        dSX[197] = (int) (kx + l * 0.70894);
        dSY[197] = (int) (ky + l * (1.0 - 0.84481));
        dSX[198] = (int) (kx + l * 0.21377);
        dSY[198] = (int) (ky + l * (1.0 - 0.08697));
        dSX[199] = (int) (kx + l * 0.08777);
        dSY[199] = (int) (ky + l * (1.0 - 0.23077));
        dSX[200] = (int) (kx + l * 0.4627);
        dSY[200] = (int) (ky + l * (1.0 - 0.68689));
        dSX[201] = (int) (kx + l * 0.1064);
        dSY[201] = (int) (ky + l * (1.0 - 0.13423));
        dSX[202] = (int) (kx + l * 0.34044);
        dSY[202] = (int) (ky + l * (1.0 - 0.71728));
        dSX[203] = (int) (kx + l * 0.14377);
        dSY[203] = (int) (ky + l * (1.0 - 0.10488));
        dSX[204] = (int) (kx + l * 0.83586);
        dSY[204] = (int) (ky + l * (1.0 - 0.39654));
        dSX[205] = (int) (kx + l * 0.23719);
        dSY[205] = (int) (ky + l * (1.0 - 0.75877));
        dSX[206] = (int) (kx + l * 0.72909);
        dSY[206] = (int) (ky + l * (1.0 - 0.83794));
        dSX[207] = (int) (kx + l * 0.11163);
        dSY[207] = (int) (ky + l * (1.0 - 0.57717));
        dSX[208] = (int) (kx + l * 0.82082);
        dSY[208] = (int) (ky + l * (1.0 - 0.38887));
        dSX[209] = (int) (kx + l * 0.23973);
        dSY[209] = (int) (ky + l * (1.0 - 0.09762));
        dSX[210] = (int) (kx + l * 0.18049);
        dSY[210] = (int) (ky + l * (1.0 - 0.7213));
        dSX[211] = (int) (kx + l * 0.17251);
        dSY[211] = (int) (ky + l * (1.0 - 0.06261));
        dSX[212] = (int) (kx + l * 0.73943);
        dSY[212] = (int) (ky + l * (1.0 - 0.1515));
        dSX[213] = (int) (kx + l * 0.12257);
        dSY[213] = (int) (ky + l * (1.0 - 0.21737));
        dSX[214] = (int) (kx + l * 0.72598);
        dSY[214] = (int) (ky + l * (1.0 - 0.87021));
        dSX[215] = (int) (kx + l * 0.7244);
        dSY[215] = (int) (ky + l * (1.0 - 0.88142));
        dSX[216] = (int) (kx + l * 0.21058);
        dSY[216] = (int) (ky + l * (1.0 - 0.83842));
        dSX[217] = (int) (kx + l * 0.34401);
        dSY[217] = (int) (ky + l * (1.0 - 0.72108));
        dSX[218] = (int) (kx + l * 0.65233);
        dSY[218] = (int) (ky + l * (1.0 - 0.15241));
        dSX[219] = (int) (kx + l * 0.1184);
        dSY[219] = (int) (ky + l * (1.0 - 0.59815));
        dSX[220] = (int) (kx + l * 0.20673);
        dSY[220] = (int) (ky + l * (1.0 - 0.09814));
        dSX[221] = (int) (kx + l * 0.65673);
        dSY[221] = (int) (ky + l * (1.0 - 0.19377));
        dSX[222] = (int) (kx + l * 0.46674);
        dSY[222] = (int) (ky + l * (1.0 - 0.7408));
        dSX[223] = (int) (kx + l * 0.14444);
        dSY[223] = (int) (ky + l * (1.0 - 0.18892));
        dSX[224] = (int) (kx + l * 0.44631);
        dSY[224] = (int) (ky + l * (1.0 - 0.72023));
        dSX[225] = (int) (kx + l * 0.18501);
        dSY[225] = (int) (ky + l * (1.0 - 0.81523));
        dSX[226] = (int) (kx + l * 0.67013);
        dSY[226] = (int) (ky + l * (1.0 - 0.17383));
        dSX[227] = (int) (kx + l * 0.21007);
        dSY[227] = (int) (ky + l * (1.0 - 0.11003));
        dSX[228] = (int) (kx + l * 0.28895);
        dSY[228] = (int) (ky + l * (1.0 - 0.79667));
        dSX[229] = (int) (kx + l * 0.355);
        dSY[229] = (int) (ky + l * (1.0 - 0.77679));
        dSX[230] = (int) (kx + l * 0.8031);
        dSY[230] = (int) (ky + l * (1.0 - 0.40707));
        dSX[231] = (int) (kx + l * 0.20507);
        dSY[231] = (int) (ky + l * (1.0 - 0.23746));
        dSX[232] = (int) (kx + l * 0.2091);
        dSY[232] = (int) (ky + l * (1.0 - 0.1445));
        dSX[233] = (int) (kx + l * 0.69395);
        dSY[233] = (int) (ky + l * (1.0 - 0.87292));
        dSX[234] = (int) (kx + l * 0.26225);
        dSY[234] = (int) (ky + l * (1.0 - 0.83517));
        dSX[235] = (int) (kx + l * 0.46057);
        dSY[235] = (int) (ky + l * (1.0 - 0.66066));
        dSX[236] = (int) (kx + l * 0.46715);
        dSY[236] = (int) (ky + l * (1.0 - 0.62083));
        dSX[237] = (int) (kx + l * 0.15991);
        dSY[237] = (int) (ky + l * (1.0 - 0.16164));
        dSX[238] = (int) (kx + l * 0.66818);
        dSY[238] = (int) (ky + l * (1.0 - 0.18336));
        dSX[239] = (int) (kx + l * 0.1206);
        dSY[239] = (int) (ky + l * (1.0 - 0.20415));
        dSX[240] = (int) (kx + l * 0.11134);
        dSY[240] = (int) (ky + l * (1.0 - 0.17899));
        dSX[241] = (int) (kx + l * 0.81705);
        dSY[241] = (int) (ky + l * (1.0 - 0.3876));
        dSX[242] = (int) (kx + l * 0.16158);
        dSY[242] = (int) (ky + l * (1.0 - 0.58197));
        dSX[243] = (int) (kx + l * 0.71638);
        dSY[243] = (int) (ky + l * (1.0 - 0.92072));
        dSX[244] = (int) (kx + l * 0.70824);
        dSY[244] = (int) (ky + l * (1.0 - 0.86881));
        dSX[245] = (int) (kx + l * 0.21828);
        dSY[245] = (int) (ky + l * (1.0 - 0.07292));
        dSX[246] = (int) (kx + l * 0.23573);
        dSY[246] = (int) (ky + l * (1.0 - 0.05748));
        dSX[247] = (int) (kx + l * 0.11584);
        dSY[247] = (int) (ky + l * (1.0 - 0.70939));
        dSX[248] = (int) (kx + l * 0.1235);
        dSY[248] = (int) (ky + l * (1.0 - 0.23567));
        dSX[249] = (int) (kx + l * 0.18015);
        dSY[249] = (int) (ky + l * (1.0 - 0.73396));
        dSX[250] = (int) (kx + l * 0.04505);
        dSY[250] = (int) (ky + l * (1.0 - 0.22103));
        dSX[251] = (int) (kx + l * 0.75712);
        dSY[251] = (int) (ky + l * (1.0 - 0.89093));
        dSX[252] = (int) (kx + l * 0.51855);
        dSY[252] = (int) (ky + l * (1.0 - 0.68719));
        dSX[253] = (int) (kx + l * 0.20628);
        dSY[253] = (int) (ky + l * (1.0 - 0.78227));
        dSX[254] = (int) (kx + l * 0.3027);
        dSY[254] = (int) (ky + l * (1.0 - 0.74326));
        dSX[255] = (int) (kx + l * 0.72344);
        dSY[255] = (int) (ky + l * (1.0 - 0.86115));
        dSX[256] = (int) (kx + l * 0.7823);
        dSY[256] = (int) (ky + l * (1.0 - 0.40698));
        dSX[257] = (int) (kx + l * 0.80725);
        dSY[257] = (int) (ky + l * (1.0 - 0.36859));
        dSX[258] = (int) (kx + l * 0.22767);
        dSY[258] = (int) (ky + l * (1.0 - 0.72875));
        dSX[259] = (int) (kx + l * 0.8389);
        dSY[259] = (int) (ky + l * (1.0 - 0.36071));
        dSX[260] = (int) (kx + l * 0.15643);
        dSY[260] = (int) (ky + l * (1.0 - 0.1861));
        dSX[261] = (int) (kx + l * 0.70301);
        dSY[261] = (int) (ky + l * (1.0 - 0.13106));
        dSX[262] = (int) (kx + l * 0.27509);
        dSY[262] = (int) (ky + l * (1.0 - 0.07504));
        dSX[263] = (int) (kx + l * 0.26088);
        dSY[263] = (int) (ky + l * (1.0 - 0.7257));
        dSX[264] = (int) (kx + l * 0.21206);
        dSY[264] = (int) (ky + l * (1.0 - 0.75771));
        dSX[265] = (int) (kx + l * 0.13805);
        dSY[265] = (int) (ky + l * (1.0 - 0.58384));
        dSX[266] = (int) (kx + l * 0.77447);
        dSY[266] = (int) (ky + l * (1.0 - 0.88097));
        dSX[267] = (int) (kx + l * 0.24243);
        dSY[267] = (int) (ky + l * (1.0 - 0.76475));
        dSX[268] = (int) (kx + l * 0.22454);
        dSY[268] =  (ky + l); // -0.01632
        dSX[269] = (int) (kx + l * 0.46329);
        dSY[269] = (int) (ky + l * (1.0 - 0.66386));
        dSX[270] = (int) (kx + l * 0.42856);
        dSY[270] = (int) (ky + l * (1.0 - 0.77059));
        dSX[271] = (int) (kx + l * 0.09912);
        dSY[271] = (int) (ky + l * (1.0 - 0.23061));
        dSX[272] = (int) (kx + l * 0.40031);
        dSY[272] = (int) (ky + l * (1.0 - 0.7123));
        dSX[273] = (int) (kx + l * 0.41085);
        dSY[273] = (int) (ky + l * (1.0 - 0.68234));
        dSX[274] = (int) (kx + l * 0.16843);
        dSY[274] = (int) (ky + l * (1.0 - 0.21484));
        dSX[275] = (int) (kx + l * 0.19902);
        dSY[275] = (int) (ky + l * (1.0 - 0.74001));
        dSX[276] = (int) (kx + l * 0.23913);
        dSY[276] = (int) (ky + l * (1.0 - 0.83891));
        dSX[277] = (int) (kx + l * 0.52281);
        dSY[277] = (int) (ky + l * (1.0 - 0.68538));
        dSX[278] = (int) (kx + l * 0.77193);
        dSY[278] = (int) (ky + l * (1.0 - 0.85292));
        dSX[279] = (int) (kx + l * 0.62099);
        dSY[279] = (int) (ky + l * (1.0 - 0.1954));
        dSX[280] = (int) (kx + l * 0.76508);
        dSY[280] = (int) (ky + l * (1.0 - 0.88685));
        dSX[281] = (int) (kx + l * 0.17655);
        dSY[281] = (int) (ky + l * (1.0 - 0.19809));
        dSX[282] = (int) (kx + l * 0.25752);
        dSY[282] = (int) (ky + l * (1.0 - 0.14649));
        dSX[283] = (int) (kx + l * 0.41938);
        dSY[283] = (int) (ky + l * (1.0 - 0.66025));
        dSX[284] = (int) (kx + l * 0.64649);
        dSY[284] = (int) (ky + l * (1.0 - 0.16984));
        dSX[285] = (int) (kx + l * 0.83039);
        dSY[285] = (int) (ky + l * (1.0 - 0.36848));
        dSX[286] = (int) (kx + l * 0.47482);
        dSY[286] = (int) (ky + l * (1.0 - 0.75725));
        dSX[287] = (int) (kx + l * 0.36224);
        dSY[287] = (int) (ky + l * (1.0 - 0.72407));
        dSX[288] = (int) (kx + l * 0.41691);
        dSY[288] = (int) (ky + l * (1.0 - 0.76211));
        dSX[289] = (int) (kx + l * 0.71197);
        dSY[289] = (int) (ky + l * (1.0 - 0.88301));
        dSX[290] = (int) (kx + l * 0.38875);
        dSY[290] = (int) (ky + l * (1.0 - 0.66923));
        dSX[291] = (int) (kx + l * 0.65122);
        dSY[291] = (int) (ky + l * (1.0 - 0.2006));
        dSX[292] = (int) (kx + l * 0.14963);
        dSY[292] = (int) (ky + l * (1.0 - 0.58176));
        dSX[293] = (int) (kx + l * 0.12702);
        dSY[293] = (int) (ky + l * (1.0 - 0.20527));
        dSX[294] = (int) (kx + l * 0.21471);
        dSY[294] = (int) (ky + l * (1.0 - 0.80336));
        dSX[295] = (int) (kx + l * 0.1117);
        dSY[295] = (int) (ky + l * (1.0 - 0.58565));
        dSX[296] = (int) (kx + l * 0.21964);
        dSY[296] = (int) (ky + l * (1.0 - 0.05787));
        dSX[297] = (int) (kx + l * 0.52603);
        dSY[297] = (int) (ky + l * (1.0 - 0.68563));
        dSX[298] = (int) (kx + l * 0.2513);
        dSY[298] = (int) (ky + l * (1.0 - 0.11038));
        dSX[299] = (int) (kx + l * 0.23048);
        dSY[299] = (int) (ky + l * (1.0 - 0.81628));
        dSX[300] = (int) (kx + l * 0.07918);
        dSY[300] = (int) (ky + l * (1.0 - 0.59745));
        dSX[301] = (int) (kx + l * 0.39107);
        dSY[301] = (int) (ky + l * (1.0 - 0.70391));
        dSX[302] = (int) (kx + l * 0.1921);
        dSY[302] = (int) (ky + l * (1.0 - 0.75531));
        dSX[303] = (int) (kx + l * 0.69606);
        dSY[303] = (int) (ky + l * (1.0 - 0.21785));
        dSX[304] = (int) (kx + l * 0.14619);
        dSY[304] = (int) (ky + l * (1.0 - 0.57905));
        dSX[305] = (int) (kx + l * 0.79628);
        dSY[305] = (int) (ky + l * (1.0 - 0.3461));
        dSX[306] = (int) (kx + l * 0.26276);
        dSY[306] = (int) (ky + l * (1.0 - 0.17608));
        dSX[307] = (int) (kx + l * 0.32383);
        dSY[307] = (int) (ky + l * (1.0 - 0.74517));
        dSX[308] = (int) (kx + l * 0.71259);
        dSY[308] = (int) (ky + l * (1.0 - 0.85462));
        dSX[309] = (int) (kx + l * 0.11917);
        dSY[309] = (int) (ky + l * (1.0 - 0.25115));
        dSX[310] = (int) (kx + l * 0.15771);
        dSY[310] = (int) (ky + l * (1.0 - 0.5723));
        dSX[311] = (int) (kx + l * 0.74207);
        dSY[311] = (int) (ky + l * (1.0 - 0.86498));
        dSX[312] = (int) (kx + l * 0.30246);
        dSY[312] = (int) (ky + l * (1.0 - 0.66994));
        dSX[313] = (int) (kx + l * 0.20864);
        dSY[313] = (int) (ky + l * (1.0 - 0.16323));
        dSX[314] = (int) (kx + l * 0.1412);
        dSY[314] = (int) (ky + l * (1.0 - 0.56028));
        dSX[315] = (int) (kx + l * 0.82053);
        dSY[315] = (int) (ky + l * (1.0 - 0.35693));
        dSX[316] = (int) (kx + l * 0.22989);
        dSY[316] = (int) (ky + l * (1.0 - 0.81021));
        dSX[317] = (int) (kx + l * 0.10676);
        dSY[317] = (int) (ky + l * (1.0 - 0.20945));
        dSX[318] = (int) (kx + l * 0.24867);
        dSY[318] = (int) (ky + l * (1.0 - 0.13241));
        dSX[319] = (int) (kx + l * 0.18081);
        dSY[319] = (int) (ky + l * (1.0 - 0.77961));
        dSX[320] = (int) (kx + l * 0.8051);
        dSY[320] = (int) (ky + l * (1.0 - 0.37642));
        dSX[321] = (int) (kx + l * 0.71303);
        dSY[321] = (int) (ky + l * (1.0 - 0.87868));
        dSX[322] = (int) (kx + l * 0.20502);
        dSY[322] = (int) (ky + l * (1.0 - 0.20587));
        dSX[323] = (int) (kx + l * 0.47605);
        dSY[323] = (int) (ky + l * (1.0 - 0.68292));
        dSX[324] = (int) (kx + l * 0.20975);
        dSY[324] = (int) (ky + l * (1.0 - 0.13444));
        dSX[325] = (int) (kx + l * 0.7098);
        dSY[325] = (int) (ky + l * (1.0 - 0.85967));
        dSX[326] = (int) (kx + l * 0.19912);
        dSY[326] = (int) (ky + l * (1.0 - 0.11887));
        dSX[327] = (int) (kx + l * 0.21338);
        dSY[327] = (int) (ky + l * (1.0 - 0.15242));
        dSX[328] = (int) (kx + l * 0.0816);
        dSY[328] = (int) (ky + l * (1.0 - 0.20505));
        dSX[329] = (int) (kx + l * 0.81617);
        dSY[329] = (int) (ky + l * (1.0 - 0.37632));
        dSX[330] = (int) (kx + l * 0.11072);
        dSY[330] = (int) (ky + l * (1.0 - 0.1742));
        dSX[331] = (int) (kx + l * 0.44663);
        dSY[331] = (int) (ky + l * (1.0 - 0.7283));
        dSX[332] = (int) (kx + l * 0.43758);
        dSY[332] = (int) (ky + l * (1.0 - 0.7116));
        dSX[333] = (int) (kx + l * 0.11169);
        dSY[333] = (int) (ky + l * (1.0 - 0.58286));
        dSX[334] = (int) (kx + l * 0.21739);
        dSY[334] = (int) (ky + l * (1.0 - 0.808));
        dSX[335] = (int) (kx + l * 0.11504);
        dSY[335] = (int) (ky + l * (1.0 - 0.58542));
        dSX[336] = (int) (kx + l * 0.22232);
        dSY[336] = (int) (ky + l * (1.0 - 0.10244));
        dSX[337] = (int) (kx + l * 0.13277);
        dSY[337] = (int) (ky + l * (1.0 - 0.5679));
        dSX[338] = (int) (kx + l * 0.41598);
        dSY[338] = (int) (ky + l * (1.0 - 0.73469));
        dSX[339] = (int) (kx + l * 0.23372);
        dSY[339] = (int) (ky + l * (1.0 - 0.76431));
        dSX[340] = (int) (kx + l * 0.32057);
        dSY[340] = (int) (ky + l * (1.0 - 0.75133));
        dSX[341] = (int) (kx + l * 0.82525);
        dSY[341] = (int) (ky + l * (1.0 - 0.39564));
        dSX[342] = (int) (kx + l * 0.15967);
        dSY[342] = (int) (ky + l * (1.0 - 0.17686));
        dSX[343] = (int) (kx + l * 0.65594);
        dSY[343] = (int) (ky + l * (1.0 - 0.90155));
        dSX[344] = (int) (kx + l * 0.71754);
        dSY[344] = (int) (ky + l * (1.0 - 0.87787));
        dSX[345] = (int) (kx + l * 0.11191);
        dSY[345] = (int) (ky + l * (1.0 - 0.59932));
        dSX[346] = (int) (kx + l * 0.2125);
        dSY[346] = (int) (ky + l * (1.0 - 0.05011));
        dSX[347] = (int) (kx + l * 0.21381);
        dSY[347] = (int) (ky + l * (1.0 - 0.13874));
        dSX[348] = (int) (kx + l * 0.32597);
        dSY[348] = (int) (ky + l * (1.0 - 0.702));
        dSX[349] = (int) (kx + l * 0.84447);
        dSY[349] = (int) (ky + l * (1.0 - 0.377));
        dSX[350] = (int) (kx + l * 0.23257);
        dSY[350] = (int) (ky + l * (1.0 - 0.0836));
        dSX[351] = (int) (kx + l * 0.09849);
        dSY[351] = (int) (ky + l * (1.0 - 0.15117));
        dSX[352] = (int) (kx + l * 0.25526);
        dSY[352] = (int) (ky + l * (1.0 - 0.156));
        dSX[353] = (int) (kx + l * 0.46334);
        dSY[353] = (int) (ky + l * (1.0 - 0.69123));
        dSX[354] = (int) (kx + l * 0.48943);
        dSY[354] = (int) (ky + l * (1.0 - 0.75123));
        dSX[355] = (int) (kx + l * 0.7088);
        dSY[355] = (int) (ky + l * (1.0 - 0.8525));
        dSX[356] = (int) (kx + l * 0.29138);
        dSY[356] = (int) (ky + l * (1.0 - 0.73165));
        dSX[357] = (int) (kx + l * 0.15562);
        dSY[357] = (int) (ky + l * (1.0 - 0.80957));
        dSX[358] = (int) (kx + l * 0.45633);
        dSY[358] = (int) (ky + l * (1.0 - 0.62115));
        dSX[359] = (int) (kx + l * 0.22247);
        dSY[359] = (int) (ky + l * (1.0 - 0.73574));
        dSX[360] = (int) (kx + l * 0.20278);
        dSY[360] = (int) (ky + l * (1.0 - 0.02718));
        dSX[361] = (int) (kx + l * 0.1757);
        dSY[361] = (int) (ky + l * (1.0 - 0.77329));
        dSX[362] = (int) (kx + l * 0.81154);
        dSY[362] = (int) (ky + l * (1.0 - 0.34851));
        dSX[363] = (int) (kx + l * 0.63127);
        dSY[363] = (int) (ky + l * (1.0 - 0.19212));
        dSX[364] = (int) (kx + l * 0.80712);
        dSY[364] = (int) (ky + l * (1.0 - 0.3727));
        dSX[365] = (int) (kx + l * 0.79678);
        dSY[365] = (int) (ky + l * (1.0 - 0.37069));
        dSX[366] = (int) (kx + l * 0.65493);
        dSY[366] = (int) (ky + l * (1.0 - 0.17201));
        dSX[367] = (int) (kx + l * 0.11119);
        dSY[367] = (int) (ky + l * (1.0 - 0.55032));
        dSX[368] = (int) (kx + l * 0.35914);
        dSY[368] = (int) (ky + l * (1.0 - 0.69928));
        dSX[369] = (int) (kx + l * 0.84783);
        dSY[369] = (int) (ky + l * (1.0 - 0.38467));
        dSX[370] = (int) (kx + l * 0.25637);
        dSY[370] = (int) (ky + l * (1.0 - 0.16449));
        dSX[371] = (int) (kx + l * 0.4251);
        dSY[371] = (int) (ky + l * (1.0 - 0.75901));
        dSX[372] = (int) (kx + l * 0.19824);
        dSY[372] = (int) (ky + l * (1.0 - 0.85476));
        dSX[373] = (int) (kx + l * 0.49887);
        dSY[373] = (int) (ky + l * (1.0 - 0.69768));
        dSX[374] = (int) (kx + l * 0.86102);
        dSY[374] = (int) (ky + l * (1.0 - 0.37142));
        dSX[375] = (int) (kx + l * 0.19372);
        dSY[375] = (int) (ky + l * (1.0 - 0.80485));
        dSX[376] = (int) (kx + l * 0.11601);
        dSY[376] = (int) (ky + l * (1.0 - 0.55327));
        dSX[377] = (int) (kx + l * 0.72774);
        dSY[377] = (int) (ky + l * (1.0 - 0.87631));
        dSX[378] = (int) (kx + l * 0.24923);
        dSY[378] = (int) (ky + l * (1.0 - 0.79912));
        dSX[379] = (int) (kx + l * 0.4765);
        dSY[379] = (int) (ky + l * (1.0 - 0.68893));
        dSX[380] = (int) (kx + l * 0.82476);
        dSY[380] = (int) (ky + l * (1.0 - 0.35662));
        dSX[381] = (int) (kx + l * 0.73111);
        dSY[381] = (int) (ky + l * (1.0 - 0.17849));
        dSX[382] = (int) (kx + l * 0.23645);
        dSY[382] = (int) (ky + l * (1.0 - 0.8192));
        dSX[383] = (int) (kx + l * 0.24282);
        dSY[383] = (int) (ky + l * (1.0 - 0.79375));
        dSX[384] = (int) (kx + l * 0.32193);
        dSY[384] = (int) (ky + l * (1.0 - 0.73014));
        dSX[385] = (int) (kx + l * 0.18991);
        dSY[385] = (int) (ky + l * (1.0 - 0.76666));
        dSX[386] = (int) (kx + l * 0.4943);
        dSY[386] = (int) (ky + l * (1.0 - 0.64545));
        dSX[387] = (int) (kx + l * 0.45752);
        dSY[387] = (int) (ky + l * (1.0 - 0.68871));
        dSX[388] = (int) (kx + l * 0.27258);
        dSY[388] = (int) (ky + l * (1.0 - 0.75787));
        dSX[389] = (int) (kx + l * 0.48832);
        dSY[389] = (int) (ky + l * (1.0 - 0.66738));
        dSX[390] = (int) (kx + l * 0.70802);
        dSY[390] = (int) (ky + l * (1.0 - 0.84396));
        dSX[391] = (int) (kx + l * 0.36794);
        dSY[391] = (int) (ky + l * (1.0 - 0.63548));
        dSX[392] = (int) (kx + l * 0.37738);
        dSY[392] = (int) (ky + l * (1.0 - 0.73531));
        dSX[393] = (int) (kx + l * 0.23611);
        dSY[393] = (int) (ky + l * (1.0 - 0.10068));
        dSX[394] = (int) (kx + l * 0.2211);
        dSY[394] = (int) (ky + l * (1.0 - 0.77825));
        dSX[395] = (int) (kx + l * 0.21163);
        dSY[395] = (int) (ky + l * (1.0 - 0.12681));
        dSX[396] = (int) (kx + l * 0.18089);
        dSY[396] = (int) (ky + l * (1.0 - 0.73562));
        dSX[397] = (int) (kx + l * 0.66299);
        dSY[397] = (int) (ky + l * (1.0 - 0.22315));
        dSX[398] = (int) (kx + l * 0.21315);
        dSY[398] = (int) (ky + l * (1.0 - 0.13477));
        dSX[399] = (int) (kx + l * 0.71559);
        dSY[399] = (int) (ky + l * (1.0 - 0.89859));
        dSX[400] = (int) (kx + l * 0.43222);
        dSY[400] = (int) (ky + l * (1.0 - 0.77103));
        dSX[401] = (int) (kx + l * 0.87618);
        dSY[401] = (int) (ky + l * (1.0 - 0.37878));
        dSX[402] = (int) (kx + l * 0.26296);
        dSY[402] = (int) (ky + l * (1.0 - 0.15748));
        dSX[403] = (int) (kx + l * 0.1686);
        dSY[403] = (int) (ky + l * (1.0 - 0.20094));
        dSX[404] = (int) (kx + l * 0.6815);
        dSY[404] = (int) (ky + l * (1.0 - 0.10764));
        dSX[405] = (int) (kx + l * 0.37811);
        dSY[405] = (int) (ky + l * (1.0 - 0.70541));
        dSX[406] = (int) (kx + l * 0.36094);
        dSY[406] = (int) (ky + l * (1.0 - 0.67579));
        dSX[407] = (int) (kx + l * 0.82511);
        dSY[407] = (int) (ky + l * (1.0 - 0.41853));
        dSX[408] = (int) (kx + l * 0.14138);
        dSY[408] = (int) (ky + l * (1.0 - 0.23299));
        dSX[409] = (int) (kx + l * 0.67249);
        dSY[409] = (int) (ky + l * (1.0 - 0.20002));
        dSX[410] = (int) (kx + l * 0.23894);
        dSY[410] = (int) (ky + l * (1.0 - 0.17142));
        dSX[411] = (int) (kx + l * 0.75744);
        dSY[411] = (int) (ky + l * (1.0 - 0.14058));
        dSX[412] = (int) (kx + l * 0.17161);
        dSY[412] = (int) (ky + l * (1.0 - 0.10035));
        dSX[413] = (int) (kx + l * 0.48828);
        dSY[413] = (int) (ky + l * (1.0 - 0.66026));
        dSX[414] = (int) (kx + l * 0.09221);
        dSY[414] = (int) (ky + l * (1.0 - 0.24637));
        dSX[415] = (int) (kx + l * 0.16063);
        dSY[415] = (int) (ky + l * (1.0 - 0.59428));
        dSX[416] = (int) (kx + l * 0.12893);
        dSY[416] = (int) (ky + l * (1.0 - 0.59674));
        dSX[417] = (int) (kx + l * 0.35694);
        dSY[417] = (int) (ky + l * (1.0 - 0.78796));
        dSX[418] = (int) (kx + l * 0.41546);
        dSY[418] = (int) (ky + l * (1.0 - 0.76092));
        dSX[419] = (int) (kx + l * 0.16968);
        dSY[419] = (int) (ky + l * (1.0 - 0.83991));
        dSX[420] = (int) (kx + l * 0.10334);
        dSY[420] = (int) (ky + l * (1.0 - 0.13985));
        dSX[421] = (int) (kx + l * 0.16873);
        dSY[421] = (int) (ky + l * (1.0 - 0.03174));
        dSX[422] = (int) (kx + l * 0.09976);
        dSY[422] = (int) (ky + l * (1.0 - 0.57833));
        dSX[423] = (int) (kx + l * 0.73443);
        dSY[423] = (int) (ky + l * (1.0 - 0.86841));
        dSX[424] = (int) (kx + l * 0.2138);
        dSY[424] = (int) (ky + l * (1.0 - 0.14457));
        dSX[425] = (int) (kx + l * 0.18475);
        dSY[425] = (int) (ky + l * (1.0 - 0.73202));
        dSX[426] = (int) (kx + l * 0.48298);
        dSY[426] = (int) (ky + l * (1.0 - 0.70441));
        dSX[427] = (int) (kx + l * 0.18751);
        dSY[427] = (int) (ky + l * (1.0 - 0.17179));
        dSX[428] = (int) (kx + l * 0.15242);
        dSY[428] = (int) (ky + l * (1.0 - 0.56863));
        dSX[429] = (int) (kx + l * 0.47199);
        dSY[429] = (int) (ky + l * (1.0 - 0.60514));
        dSX[430] = (int) (kx + l * 0.08912);
        dSY[430] = (int) (ky + l * (1.0 - 0.59353));
        dSX[431] = (int) (kx + l * 0.14872);
        dSY[431] = (int) (ky + l * (1.0 - 0.63872));
        dSX[432] = (int) (kx + l * 0.79864);
        dSY[432] = (int) (ky + l * (1.0 - 0.35493));
        dSX[433] = (int) (kx + l * 0.35112);
        dSY[433] = (int) (ky + l * (1.0 - 0.78383));
        dSX[434] = (int) (kx + l * 0.69891);
        dSY[434] = (int) (ky + l * (1.0 - 0.84894));
        dSX[435] = (int) (kx + l * 0.80731);
        dSY[435] = (int) (ky + l * (1.0 - 0.39325));
        dSX[436] = (int) (kx + l * 0.82968);
        dSY[436] = (int) (ky + l * (1.0 - 0.3552));
        dSX[437] = (int) (kx + l * 0.72571);
        dSY[437] = (int) (ky + l * (1.0 - 0.19687));
        dSX[438] = (int) (kx + l * 0.69843);
        dSY[438] = (int) (ky + l * (1.0 - 0.84846));
        dSX[439] = (int) (kx + l * 0.84693);
        dSY[439] = (int) (ky + l * (1.0 - 0.40964));
        dSX[440] = (int) (kx + l * 0.20669);
        dSY[440] = (int) (ky + l * (1.0 - 0.77071));
        dSX[441] = (int) (kx + l * 0.12141);
        dSY[441] = (int) (ky + l * (1.0 - 0.58855));
        dSX[442] = (int) (kx + l * 0.2279);
        dSY[442] = (int) (ky + l * (1.0 - 0.12276));
        dSX[443] = (int) (kx + l * 0.83297);
        dSY[443] = (int) (ky + l * (1.0 - 0.39735));
        dSX[444] = (int) (kx + l * 0.14542);
        dSY[444] = (int) (ky + l * (1.0 - 0.56013));
        dSX[445] = (int) (kx + l * 0.12433);
        dSY[445] = (int) (ky + l * (1.0 - 0.20911));
        dSX[446] = (int) (kx + l * 0.72573);
        dSY[446] = (int) (ky + l * (1.0 - 0.8408));
        dSX[447] = (int) (kx + l * 0.09379);
        dSY[447] = (int) (ky + l * (1.0 - 0.55713));
        dSX[448] = (int) (kx + l * 0.14829);
        dSY[448] = (int) (ky + l * (1.0 - 0.23154));
        dSX[449] = (int) (kx + l * 0.4523);
        dSY[449] = (int) (ky + l * (1.0 - 0.67249));
        dSX[450] = (int) (kx + l * 0.11726);
        dSY[450] = (int) (ky + l * (1.0 - 0.19693));
        dSX[451] = (int) (kx + l * 0.11815);
        dSY[451] = (int) (ky + l * (1.0 - 0.25814));
        dSX[452] = (int) (kx + l * 0.67506);
        dSY[452] = (int) (ky + l * (1.0 - 0.17122));
        dSX[453] = (int) (kx + l * 0.83483);
        dSY[453] = (int) (ky + l * (1.0 - 0.40775));
        dSX[454] = (int) (kx + l * 0.07239);
        dSY[454] = (int) (ky + l * (1.0 - 0.18731));
        dSX[455] = (int) (kx + l * 0.3272);
        dSY[455] = (int) (ky + l * (1.0 - 0.7225));
        dSX[456] = (int) (kx + l * 0.16136);
        dSY[456] = (int) (ky + l * (1.0 - 0.61121));
        dSX[457] = (int) (kx + l * 0.21065);
        dSY[457] = (int) (ky + l * (1.0 - 0.13483));
        dSX[458] = (int) (kx + l * 0.71889);
        dSY[458] = (int) (ky + l * (1.0 - 0.20099));
        dSX[459] = (int) (kx + l * 0.36902);
        dSY[459] = (int) (ky + l * (1.0 - 0.7864));
        dSX[460] = (int) (kx + l * 0.84165);
        dSY[460] = (int) (ky + l * (1.0 - 0.36644));
        dSX[461] = (int) (kx + l * 0.68612);
        dSY[461] = (int) (ky + l * (1.0 - 0.12094));
        dSX[462] = (int) (kx + l * 0.22926);
        dSY[462] = (int) (ky + l * (1.0 - 0.16182));
        dSX[463] = (int) (kx + l * 0.18717);
        dSY[463] = (int) (ky + l * (1.0 - 0.11579));
        dSX[464] = (int) (kx + l * 0.80286);
        dSY[464] = (int) (ky + l * (1.0 - 0.32103));
        dSX[465] = (int) (kx + l * 0.25034);
        dSY[465] = (int) (ky + l * (1.0 - 0.04969));
        dSX[466] = (int) (kx + l * 0.25102);
        dSY[466] = (int) (ky + l * (1.0 - 0.81178));
        dSX[467] = (int) (kx + l * 0.40104);
        dSY[467] = (int) (ky + l * (1.0 - 0.70706));
        dSX[468] = (int) (kx + l * 0.47589);
        dSY[468] = (int) (ky + l * (1.0 - 0.62965));
        dSX[469] = (int) (kx + l * 0.4878);
        dSY[469] = (int) (ky + l * (1.0 - 0.77431));
        dSX[470] = (int) (kx + l * 0.44168);
        dSY[470] = (int) (ky + l * (1.0 - 0.69073));
        dSX[471] = (int) (kx + l * 0.10281);
        dSY[471] = (int) (ky + l * (1.0 - 0.2403));
        dSX[472] = (int) (kx + l * 0.82296);
        dSY[472] = (int) (ky + l * (1.0 - 0.3797));
        dSX[473] = (int) (kx + l * 0.48731);
        dSY[473] = (int) (ky + l * (1.0 - 0.69098));
        dSX[474] = (int) (kx + l * 0.63263);
        dSY[474] = (int) (ky + l * (1.0 - 0.22947));
        dSX[475] = (int) (kx + l * 0.67528);
        dSY[475] = (int) (ky + l * (1.0 - 0.20604));
        dSX[476] = (int) (kx + l * 0.19472);
        dSY[476] = (int) (ky + l * (1.0 - 0.11076));
        dSX[477] = (int) (kx + l * 0.84223);
        dSY[477] = (int) (ky + l * (1.0 - 0.34943));
        dSX[478] = (int) (kx + l * 0.66502);
        dSY[478] = (int) (ky + l * (1.0 - 0.2078));
        dSX[479] = (int) (kx + l * 0.5253);
        dSY[479] = (int) (ky + l * (1.0 - 0.70939));
        dSX[480] = (int) (kx + l * 0.26947);
        dSY[480] = (int) (ky + l * (1.0 - 0.10746));
        dSX[481] = (int) (kx + l * 0.22708);
        dSY[481] = (int) (ky + l * (1.0 - 0.7998));
        dSX[482] = (int) (kx + l * 0.39279);
        dSY[482] = (int) (ky + l * (1.0 - 0.6481));
        dSX[483] = (int) (kx + l * 0.36533);
        dSY[483] = (int) (ky + l * (1.0 - 0.74434));
        dSX[484] = (int) (kx + l * 0.21924);
        dSY[484] = (int) (ky + l * (1.0 - 0.76278));
        dSX[485] = (int) (kx + l * 0.17686);
        dSY[485] = (int) (ky + l * (1.0 - 0.18335));
        dSX[486] = (int) (kx + l * 0.51587);
        dSY[486] = (int) (ky + l * (1.0 - 0.5951));
        dSX[487] = (int) (kx + l * 0.8566);
        dSY[487] = (int) (ky + l * (1.0 - 0.40405));
        dSX[488] = (int) (kx + l * 0.12652);
        dSY[488] = (int) (ky + l * (1.0 - 0.57607));
        dSX[489] = (int) (kx + l * 0.22685);
        dSY[489] = (int) (ky + l * (1.0 - 0.79786));
        dSX[490] = (int) (kx + l * 0.68578);
        dSY[490] = (int) (ky + l * (1.0 - 0.8548));
        dSX[491] = (int) (kx + l * 0.38968);
        dSY[491] = (int) (ky + l * (1.0 - 0.73713));
        dSX[492] = (int) (kx + l * 0.70811);
        dSY[492] = (int) (ky + l * (1.0 - 0.19062));
        dSX[493] = (int) (kx + l * 0.46795);
        dSY[493] = (int) (ky + l * (1.0 - 0.68742));
        dSX[494] = (int) (kx + l * 0.70386);
        dSY[494] = (int) (ky + l * (1.0 - 0.13081));
        dSX[495] = (int) (kx + l * 0.12347);
        dSY[495] = (int) (ky + l * (1.0 - 0.57067));
        dSX[496] = (int) (kx + l * 0.07499);
        dSY[496] = (int) (ky + l * (1.0 - 0.58753));
        dSX[497] = (int) (kx + l * 0.26596);
        dSY[497] = (int) (ky + l * (1.0 - 0.75632));
        dSX[498] = (int) (kx + l * 0.2196);
        dSY[498] = (int) (ky + l * (1.0 - 0.81844));
        dSX[499] = (int) (kx + l * 0.22364);
        dSY[499] = (int) (ky + l * (1.0 - 0.11876));
    }

    public void getSignal(int distrib) {
        numRun++;

        int wi = 500;
        int hi = 500;

        int r1 =  wi / 4;
        int l1 =  hi / 4;
        int r2 =  wi / 2;
        int l2 =  hi / 2;
        int cx =  (wi / 2);
        int cy =  (hi / 2);
        int xA[] = new int[MAX_COMPLEX];
        int yA[] = new int[MAX_COMPLEX];
        int ringRadius;
        int w;
        int h;
        int z;
        double remainderX = 0.0;
        double remainderY = 0.0;
        float rdist;

        switch (distrib) {
            case 0: // Rectangle
                r1 = wi / 4;
                l1 = hi / 4;
                r2 = wi / 2;
                l2 = hi / 2;
                SignalX = (int) (r1 + (r2 * Math.random()));
                SignalY = (int) (l1 + (l2 * Math.random()));
                break;
            case 1: // Circle

                l2 = ((cx < cy) ? cx : cy); // Diameter

                r1 = wi / 2 - l2 / 2;
                l1 = hi / 2 - l2 / 2;

                do {
                    SignalX = (int) (r1 + (l2 * Math.random()));
                    SignalY = (int) (l1 + (l2 * Math.random()));
                    rdist = (float) Math.sqrt(((cx - SignalX) *
                            (cx - SignalX) +
                            (cy - SignalY) *
                            (cy - SignalY)));
                } while (rdist > l2 / 2);

                break;
            case 2: // Ring

                l2 = ((cx < cy) ? cx : cy); // Diameter

                r1 = cx - l2;
                l1 = cy - l2;
                ringRadius = (int) (l2 * RING_FACTOR);

                do {
                    SignalX = (int) (r1 + (2 * l2 * Math.random()));
                    SignalY = (int) (l1 + (2 * l2 * Math.random()));
                    rdist = (float) Math.sqrt(((cx - SignalX) *
                            (cx - SignalX) +
                            (cy - SignalY) *
                            (cy - SignalY)));
                } while ((rdist > l2) || (rdist < (l2 - ringRadius)));
                break;
            case 3: // Complex (1)
                w = wi / 9;
                h = hi / 5;
                xA[0] = w;
                yA[0] = h;
                xA[1] = w;
                yA[1] = 2 * h;
                xA[2] = w;
                yA[2] = 3 * h;
                xA[3] = 2 * w;
                yA[3] = 3 * h;
                xA[4] = 3 * w;
                yA[4] = 3 * h;
                xA[5] = 3 * w;
                yA[5] = 2 * h;
                xA[6] = 3 * w;
                yA[6] = h;
                xA[7] = 4 * w;
                yA[7] = h;
                xA[8] = 5 * w;
                yA[8] = h;
                xA[9] = 5 * w;
                yA[9] = 2 * h;
                xA[10] = 5 * w;
                yA[10] = 3 * h;
                xA[11] = 7 * w;
                yA[11] = h;
                xA[12] = 7 * w;
                yA[12] = 2 * h;
                xA[13] = 7 * w;
                yA[13] = 3 * h;

                z = (int) (14 * Math.random());
                SignalX = (int) (xA[z] + (w * Math.random()));
                SignalY = (int) (yA[z] + (h * Math.random()));

                break;
            case 4: // Complex (2)
                w = wi / 9;
                h = hi / 7;
                xA[0] = w;
                yA[0] = 5 * h;
                xA[1] = w;
                yA[1] = 4 * h;
                xA[2] = w;
                yA[2] = 3 * h;
                xA[3] = w;
                yA[3] = 2 * h;
                xA[4] = 1 * w;
                yA[4] = h;
                xA[5] = 2 * w;
                yA[5] = h;
                xA[6] = 3 * w;
                yA[6] = h;
                xA[7] = 4 * w;
                yA[7] = h;
                xA[8] = 5 * w;
                yA[8] = 1 * h;
                xA[9] = 5 * w;
                yA[9] = 2 * h;
                xA[10] = 5 * w;
                yA[10] = 3 * h;
                xA[11] = 3 * w;
                yA[11] = 3 * h;
                xA[12] = 3 * w;
                yA[12] = 4 * h;
                xA[13] = 3 * w;
                yA[13] = 5 * h;
                xA[14] = 4 * w;
                yA[14] = 5 * h;
                xA[15] = 5 * w;
                yA[15] = 5 * h;
                xA[16] = 6 * w;
                yA[16] = 5 * h;
                xA[17] = 7 * w;
                yA[17] = 5 * h;
                xA[18] = 7 * w;
                yA[18] = 4 * h;
                xA[19] = 7 * w;
                yA[19] = 3 * h;
                xA[20] = 7 * w;
                yA[20] = 2 * h;
                xA[21] = 7 * w;
                yA[21] = 1 * h;

                z = (int) (22 * Math.random());
                SignalX = (int) (xA[z] + (w * Math.random()));
                SignalY = (int) (yA[z] + (h * Math.random()));

                break;
            case 5: // Complex (3)
                w = wi / 13;
                h = hi / 11;
                xA[0] = w;
                yA[0] = h;
                xA[1] = w;
                yA[1] = 2 * h;
                xA[2] = w;
                yA[2] = 3 * h;
                xA[3] = w;
                yA[3] = 4 * h;
                xA[4] = 1 * w;
                yA[4] = 5 * h;
                xA[5] = 1 * w;
                yA[5] = 6 * h;
                xA[6] = 1 * w;
                yA[6] = 7 * h;
                xA[7] = 1 * w;
                yA[7] = 8 * h;
                xA[8] = 1 * w;
                yA[8] = 9 * h;
                xA[9] = 2 * w;
                yA[9] = 1 * h;
                xA[10] = 3 * w;
                yA[10] = 1 * h;
                xA[11] = 4 * w;
                yA[11] = 1 * h;
                xA[12] = 5 * w;
                yA[12] = 1 * h;
                xA[13] = 6 * w;
                yA[13] = 1 * h;
                xA[14] = 7 * w;
                yA[14] = 1 * h;
                xA[15] = 8 * w;
                yA[15] = 1 * h;
                xA[16] = 9 * w;
                yA[16] = 1 * h;
                xA[17] = 9 * w;
                yA[17] = 2 * h;
                xA[18] = 9 * w;
                yA[18] = 3 * h;
                xA[19] = 9 * w;
                yA[19] = 4 * h;
                xA[20] = 9 * w;
                yA[20] = 5 * h;
                xA[21] = 9 * w;
                yA[21] = 6 * h;
                xA[22] = 9 * w;
                yA[22] = 7 * h;
                xA[23] = 8 * w;
                yA[23] = 7 * h;
                xA[24] = 7 * w;
                yA[24] = 7 * h;
                xA[25] = 6 * w;
                yA[25] = 7 * h;
                xA[26] = 5 * w;
                yA[26] = 7 * h;
                xA[27] = 5 * w;
                yA[27] = 6 * h;
                xA[28] = 5 * w;
                yA[28] = 5 * h;
                xA[29] = 3 * w;
                yA[29] = 3 * h;
                xA[30] = 3 * w;
                yA[30] = 4 * h;
                xA[31] = 3 * w;
                yA[31] = 5 * h;
                xA[32] = 3 * w;
                yA[32] = 6 * h;
                xA[33] = 3 * w;
                yA[33] = 7 * h;
                xA[34] = 3 * w;
                yA[34] = 8 * h;
                xA[35] = 3 * w;
                yA[35] = 9 * h;
                xA[36] = 4 * w;
                yA[36] = 3 * h;
                xA[37] = 5 * w;
                yA[37] = 3 * h;
                xA[38] = 6 * w;
                yA[38] = 3 * h;
                xA[39] = 7 * w;
                yA[39] = 3 * h;
                xA[40] = 7 * w;
                yA[40] = 4 * h;
                xA[41] = 7 * w;
                yA[41] = 5 * h;
                xA[42] = 4 * w;
                yA[42] = 9 * h;
                xA[43] = 5 * w;
                yA[43] = 9 * h;
                xA[44] = 6 * w;
                yA[44] = 9 * h;
                xA[45] = 7 * w;
                yA[45] = 9 * h;
                xA[46] = 8 * w;
                yA[46] = 9 * h;
                xA[47] = 9 * w;
                yA[47] = 9 * h;
                xA[48] = 10 * w;
                yA[48] = 9 * h;
                xA[49] = 11 * w;
                yA[49] = 9 * h;
                xA[50] = 11 * w;
                yA[50] = 8 * h;
                xA[51] = 11 * w;
                yA[51] = 7 * h;
                xA[52] = 11 * w;
                yA[52] = 6 * h;
                xA[53] = 11 * w;
                yA[53] = 5 * h;
                xA[54] = 11 * w;
                yA[54] = 4 * h;
                xA[55] = 11 * w;
                yA[55] = 3 * h;
                xA[56] = 11 * w;
                yA[56] = 2 * h;
                xA[57] = 11 * w;
                yA[57] = 1 * h;

                z = (int) (58 * Math.random());
                SignalX = (int) (xA[z] + (w * Math.random()));
                SignalY = (int) (yA[z] + (h * Math.random()));

                break;

            case 6: // HiLo-Density
                w = wi / 10;
                h = hi / 10;
                xA[0] = 2 * w;
                yA[0] = 4 * h;
                xA[1] = 5 * w;
                yA[1] = 1 * h;

                z = (int) (2 * Math.random());
                if (z == 0) {
                    SignalX = (int) (xA[z] + (w * Math.random()));
                    SignalY = (int) (yA[z] + (h * Math.random()));
                } else {
                    SignalX = (int) (xA[z] + (4 * w * Math.random()));
                    SignalY = (int) (yA[z] + (8 * h * Math.random()));
                }

                break;

            case 7: // Discrete
                z = (int) (MAX_DISCRETE_SIGNALS * Math.random());
                SignalX = discreteSignalsX[z];
                SignalY = discreteSignalsY[z];

                break;

            case 8: // Complex (4)
                w = wi / 17;
                h = hi / 8;
                xA[0] = w;
                yA[0] = 2 * h;
                xA[1] = w;
                yA[1] = 3 * h;
                xA[2] = w;
                yA[2] = 4 * h;
                xA[3] = w;
                yA[3] = 5 * h;
                xA[4] = 2 * w;
                yA[4] = 5 * h;
                xA[5] = 3 * w;
                yA[5] = 5 * h;
                xA[6] = 3 * w;
                yA[6] = 4 * h;
                xA[7] = 3 * w;
                yA[7] = 3 * h;
                xA[8] = 3 * w;
                yA[8] = 2 * h;
                xA[9] = 4 * w;
                yA[9] = 2 * h;
                xA[10] = 5 * w;
                yA[10] = 2 * h;
                xA[11] = 6 * w;
                yA[11] = 2 * h;
                xA[12] = 7 * w;
                yA[12] = 2 * h;
                xA[13] = 7 * w;
                yA[13] = 3 * h;
                xA[14] = 7 * w;
                yA[14] = 4 * h;
                xA[15] = 7 * w;
                yA[15] = 5 * h;
                xA[16] = 8 * w;
                yA[16] = 5 * h;
                xA[17] = 9 * w;
                yA[17] = 5 * h;
                xA[18] = 10 * w;
                yA[18] = 5 * h;
                xA[19] = 11 * w;
                yA[19] = 5 * h;
                xA[20] = 11 * w;
                yA[20] = 4 * h;
                xA[21] = 11 * w;
                yA[21] = 3 * h;
                xA[22] = 11 * w;
                yA[22] = 2 * h;
                xA[23] = 14 * w;
                yA[23] = 2 * h;
                xA[24] = 15 * w;
                yA[24] = 2 * h;
                xA[25] = 15 * w;
                yA[25] = 3 * h;
                xA[26] = 15 * w;
                yA[26] = 4 * h;
                xA[27] = 15 * w;
                yA[27] = 5 * h;

                z = (int) (28 * Math.random());
                SignalX = (int) (xA[z] + (w * Math.random()));
                SignalY = (int) (yA[z] + (h * Math.random()));

                break;
            case 9: // Moving and Jumping Rectangle
                r2 = wi / 4;
                l2 = hi / 4;
                r1 = (int) (0.75 * (wi / 2 +
                        Math.IEEEremainder(0.2 * numRun, wi)));
                l1 = (int) (0.75 * (hi / 2 +
                        Math.IEEEremainder(0.2 * numRun, hi)));

                SignalX = (int) (r1 + (r2 * Math.random()));
                SignalY = (int) (l1 + (l2 * Math.random()));
                break;
            case 10: // Moving Rectangle
                r2 = wi / 4;
                l2 = hi / 4;

                remainderX = Math.IEEEremainder(0.2 * numRun, wi);
                remainderY = Math.IEEEremainder(0.2 * numRun, hi);

                if ((bounceX_old > 0) && (remainderX < 0)) {
                    bounceX = bounceX * (-1);
                }
                if ((bounceY_old > 0) && (remainderY < 0)) {
                    bounceY = bounceY * (-1);
                }

                r1 = (int) (0.75 * (wi / 2 + bounceX * remainderX));
                l1 = (int) (0.75 * (hi / 2 + bounceY * remainderY));

                bounceX_old = remainderX;
                bounceY_old = remainderY;

                SignalX = (int) (r1 + (r2 * Math.random()));
                SignalY = (int) (l1 + (l2 * Math.random()));
                break;

            case 11: // Jumping Rectangle
                r2 = wi / 4;
                l2 = hi / 4;

                if (Math.ceil(Math.IEEEremainder((double) numRun, 1000.0)) == 0) {
                    jumpX = (int) ((wi - r2) * Math.random());
                    jumpY = (int) ((hi - l2) * Math.random());
                }

                SignalX = (int) (jumpX + (r2 * Math.random()));
                SignalY = (int) (jumpY + (l2 * Math.random()));
                break;

            case 12: // R.Mouse Rectangle
                r2 = wi / 4;
                l2 = hi / 4;

                SignalX = (int) (jumpX + (r2 * Math.random()));
                SignalY = (int) (jumpY + (l2 * Math.random()));
                break;
        }
    }

    public static void main(String[] argv) {
        String[] files = {
            "Rectangle.txt", "Circle.txt", "Ring.txt", "Complex1.txt",
            "Complex2.txt", "Complex3.txt", "HiLoDensity.txt", "Discrete.txt",
            "Complex4.txt", "MovingJumpingRectangle.txt", "MovingRectangle.txt",
            "JumpingRectangle.txt", "RMouseRectangle.txt"};

        for (int k = 0; k < files.length; k++) {
            NeuralGasData sample = new NeuralGasData();
            if (k == 7)
                sample.initDiscreteSignals();
            
            try (BufferedWriter out = new BufferedWriter(new FileWriter(files[k]))) {
                for (int i = 0; i < 5000; i++) {
                    sample.getSignal(k);
                    out.write(sample.SignalX + "\t" + sample.SignalY+"\n");
                }
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 

Ads help maintain this website.