Last active
March 1, 2021 09:07
-
-
Save bpesquet/71551c12a8665e0df6d00d82a52e3c47 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Bitmap bmp; | |
Random rd = new Random(); | |
double xc1 = 200; | |
double yc1 = 200; | |
double rayon1 = 150; | |
double sigma1 = 5.0; | |
double xc2 = 350; | |
double yc2 = 220; | |
double rayon2 = 150; | |
double sigma2 = 5.0; | |
List<Point> E = new List<Point>(); | |
double [,,] carte; | |
int nbl = 10; | |
int nbc = 10; | |
double coef = 0.1; | |
int[,] classes; | |
public MainForm() | |
{ | |
InitializeComponent(); | |
} | |
void affichage() | |
{ | |
// on efface | |
for (int x = 0; x < pictureBox1.Width; x++) | |
for (int y = 0; y < pictureBox1.Height; y++) | |
bmp.SetPixel(x, y, Color.White); | |
for (int i=0; i<1000; i++) | |
{ | |
int x = (int)E[i].x; | |
int y = (int)E[i].y; | |
bmp.SetPixel(x, pictureBox1.Height-1 - y, Color.Black); | |
} | |
// affichage des neurones en bleu | |
for (int x = 0; x < nbl; x++) | |
for (int y = 0; y < nbc; y++) | |
bmp.SetPixel((int)carte[x,y,0], pictureBox1.Height-1 - (int)carte[x,y,1], Color.Blue); | |
pictureBox1.Invalidate(); | |
} | |
private void button1_Click(object sender, EventArgs e) | |
{ | |
bmp = (Bitmap)pictureBox1.Image; | |
for (int i=0; i<500; i++) | |
{ | |
double alpha, U1, U2, x, y, T1, r; | |
// Un point de C1 | |
alpha = Math.PI * rd.NextDouble(); // entre 0 et PI | |
U1 = rd.NextDouble(); | |
U2 = rd.NextDouble(); | |
T1 = Math.Sqrt(-2 * Math.Log(U1)) * Math.Cos(2 * Math.PI * U2); | |
r = rayon1 + T1 * sigma1; | |
x = r * Math.Cos(alpha) + xc1; | |
y = r * Math.Sin(alpha) + yc1; | |
E.Add(new Point((float)x, (float)y)); | |
// un point de C2 | |
alpha = -Math.PI * rd.NextDouble(); // entre -PI et 0 | |
U1 = rd.NextDouble(); | |
U2 = rd.NextDouble(); | |
T1 = Math.Sqrt(-2 * Math.Log(U1)) * Math.Cos(2 * Math.PI * U2); | |
r = rayon2 + T1 * sigma2; | |
x = r * Math.Cos(alpha) + xc2; | |
y = r * Math.Sin(alpha) + yc2; | |
E.Add(new Point((float)x, (float)y)); | |
} | |
// Création de la carte SOm | |
carte = new double[nbl, nbc,2]; | |
for (int x = 0; x < nbl; x++) | |
for (int y = 0; y < nbc; y++) | |
{ | |
carte[x, y, 0] = rd.NextDouble() * 600; | |
carte[x, y, 1] = rd.NextDouble() * 600; | |
} | |
affichage(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment