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); } }
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)); } } }
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); }