private void generatePoints()
        {
            for (int i = 0; i < pts.Length; ++i)
            {
                int zone_index = rand.Next(zones.Length);

                int x = genCoord(zones[zone_index].m_x, zones[zone_index].sigma_x);
                int y = genCoord(zones[zone_index].m_y, zones[zone_index].sigma_y);

                pts[i] = new PaulPoint(x, y, zone_index);
            }
        }
Exemple #2
0
        private void modifyNeighbours(PaulPoint x, int pos_x, int pos_y)
        {
            double a = alfa(t);
            int    v = (int)vecinatate(t);

            int stanga_y = pos_y - v;

            if (stanga_y < 0)
            {
                stanga_y = 0;
            }

            int stanga_x = pos_x - v;

            if (stanga_x < 0)
            {
                stanga_x = 0;
            }

            int dreapta_y = pos_y + v;

            if (dreapta_y > NUM_Y_NEURONS - 1)
            {
                dreapta_y = NUM_Y_NEURONS - 1;
            }

            int dreapta_x = pos_x + v;

            if (dreapta_x > NUM_X_NEURONS - 1)
            {
                dreapta_x = NUM_X_NEURONS - 1;
            }

            for (int i = stanga_y; i <= dreapta_y; i++)
            {
                for (int j = stanga_x; j <= dreapta_x; j++)
                {
                    neurons1[i][j].p.X = (float)(neurons1[i][j].p.X + a * (x.p.X - neurons1[i][j].p.X));
                    neurons1[i][j].p.Y = (float)(neurons1[i][j].p.Y + a * (x.p.Y - neurons1[i][j].p.Y));
                }
            }
        }
Exemple #3
0
        private Neuron closestNeuron(PaulPoint p, ref int pos_x, ref int pos_y)
        {
            Neuron closest = null;
            double minDist = Double.MaxValue;

            for (int i = 0; i < NUM_Y_NEURONS; i++)
            {
                for (int j = 0; j < NUM_X_NEURONS; j++)
                {
                    double d = euclidianDistDouble(neurons1[i][j].p, p.p);
                    if (d < minDist)
                    {
                        minDist = d;
                        closest = neurons1[i][j];
                        pos_x   = j;
                        pos_y   = i;
                    }
                }
            }

            return(closest);
        }