📄 form1.cs
字号:
}
else if(kind>1)
{
double[][] x=new double[kind][];
double[][] y=new double[kind][];
int[] c=new int[kind];
Color[] COLOR = new Color[kind];
Online[] obj = new Online[kind * (kind - 1) / 2];
int i = 0;
int j = 0;
for(;i<5;i++)
{
if (count[i] != 0)
{
x[j] = new double[count[i]];
y[j] = new double[count[i]];
for (int r = 0; r < count[i]; r++)
{
x[j][r] = point[i][r].X / 500.0;
y[j][r] = point[i][r].Y / 500.0;
}
c[j] = count[i];
j++;
}
}
for (i = 0,j = 0; i < 5; i++)
{
if (count[i] != 0)
{
switch (i + 1)
{
case 1: COLOR[j] = Color.Pink; break;
case 2: COLOR[j] = Color.Green; break;
case 3: COLOR[j] = Color.SkyBlue; break;
case 4: COLOR[j] = Color.Peru; break;
case 5: COLOR[j] = Color.Plum; break;
}
j++;
}
}
int s = 0;
for (i = 0; i < kind - 1; i++)
{
for (j = i + 1; j < kind; j++)
{
double[][] instance = new double[c[i] + c[j]][];
for (int r = 0; r < c[i] + c[j]; r++)
{
instance[r] = new double[2];
}
int[] type = new int[c[i] + c[j]];
instance[0][0] = x[i][0]; instance[0][1] = y[i][0]; type[0] = 1;
instance[1][0] = x[j][0]; instance[1][1] = y[j][0]; type[1] = -1;
for (int r = 2; r - 1 < c[i]; r++)
{
instance[r][0] = x[i][r - 1]; instance[r][1] = y[i][r - 1]; type[r] = 1;
}
for (int r = c[i] + 1; r < c[i] + c[j]; r++)
{
instance[r][0] = x[j][r - c[i]]; instance[r][1] = y[j][r - c[i]]; type[r] = -1;
}
obj[s] = new Online(ker, 2, c[i] + c[j], instance, type, 100);
obj[s].run();
s++;
}
}
for (i = 0; i < 500; i+=2)
{
for (j = 0; j < 500; j+=2)
{
int[] vote = new int[kind];
double[] X= new double[2];
X[0] = i / 500.0; X[1] = j / 500.0;
int w = kind - 1;
int t = kind;
for (int r = kind * (kind - 1) / 2 - 1; r >= 0; r--)
{
if (obj[r].getSign(X) > 0)
{
vote[w - 1]++;
}
else
{
vote[t - 1]++;
}
if (t - w == 1)
{
w--;
t = kind;
}
else
{
t--;
}
}
int max = 0;
int k = 0;
int q = 0;
for (q = 0; q < kind; q++)
{
if (max < vote[q])
{
max = vote[q];
k = q;
}
}
g.FillRectangle(new SolidBrush(COLOR[k]), i-1, j-1, 2, 2);
vg.FillRectangle(new SolidBrush(COLOR[k]), i - 1, j - 1, 2, 2);
}
}
}
if (kind != 0)
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < count[i]; j++)
{
switch (i + 1)
{
case 1: pen = new SolidBrush(Color.Red); break;
case 2: pen = new SolidBrush(Color.GreenYellow); break;
case 3: pen = new SolidBrush(Color.Blue); break;
case 4: pen = new SolidBrush(Color.Yellow); break;
case 5: pen = new SolidBrush(Color.Purple); break;
}
g.FillRectangle(pen, point[i][j].X - 1, point[i][j].Y - 1, 2, 2);
}
}
}
kind = 0;
}
private void clear_Click(object sender, EventArgs e)
{
point = new Point[5][];
for (int i = 0; i < 5; i++)
count[i] = 0;
bmp.Dispose();
bmp = new Bitmap(500, 500);
Refresh();
}
private void kernal_SelectedIndexChanged(object sender, EventArgs e)
{
ker = kernal.SelectedIndex;
}
private void save_Click(object sender, EventArgs e)
{
this.savePoint.ShowDialog();
try
{
StreamWriter file = new StreamWriter(savePoint.OpenFile());
for (int i = 0; i < 5; i++)
{
file.Write(count[i]);
for (int j = 0; j < count[i]; j++)
{
file.Write(" " + point[i][j].X + " " + point[i][j].Y);
}
file.WriteLine();
}
file.Close();
file.Dispose();
}
catch (Exception b)
{
b.ToString();
}
savePoint.FileName = "";
}
private void open_Click(object sender, EventArgs e)
{
this.openPoint.ShowDialog();
char c = ' ';
char[] temp = new char[5];
try
{
StreamReader file = new StreamReader(openPoint.OpenFile());
for (int j = 0; j < 5; j++)
{
c = (char)file.Read();
while (!file.EndOfStream && c != '\n')
{
int i = 0;
while (c != ' ' && c != '\n')
{
temp[i] = c;
i++;
c = (char)file.Read();
}
for (int t = i; t < 5; t++)
temp[t] = '\0';
count[j] = Convert.ToInt32(new String(temp));
if (count[j] != 0)
{
point[j] = new Point[count[j]];
c = (char)file.Read();
}
for (int r = 0; r < count[j]; r++)
{
i = 0;
while (c != ' ' && c != '\n')
{
temp[i] = c;
i++;
c = (char)file.Read();
}
for (int t = i; t < 5; t++)
temp[t] = '\0';
c = (char)file.Read();
point[j][r].X = Convert.ToInt32(new String(temp));
i = 0;
while (c != ' ' && c != '\n')
{
temp[i] = c;
i++;
c = (char)file.Read();
}
for (int t = i; t < 5; t++)
temp[t] = '\0';
if (c != '\n')
c = (char)file.Read();
point[j][r].Y = Convert.ToInt32(new String(temp));
}
}
}
file.Close();
file.Dispose();
Refresh();
}
catch (Exception b)
{
b.ToString();
}
openPoint.FileName = "";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -