using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace spectr_Furie
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
{
// открытие изображения
Bitmap image;
OpenFileDialog open_dialog = new OpenFileDialog();
open_dialog.Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*"; //формат загружаемого файла
if (open_dialog.ShowDialog() == DialogResult.OK) //если в окне была нажата кнопка "ОК"
{
try
{
image = new Bitmap(open_dialog.FileName);
pictureBox1.Size = image.Size;
pictureBox1.Image = image;
pictureBox1.Invalidate();
}
catch
{
DialogResult rezult = MessageBox.Show("Невозможно открыть выбранный файл",
"Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void выполнитьАнализToolStripMenuItem_Click(object sender, EventArgs e)
{
int n = pictureBox1.Height; // n строк изображения, m столбцов
int m = n;
double N_1 = Math.Pow(n,-1); // множитель перед суммой
double pi_2_N = 2 * Math.PI/n;
int j, k, u, v;
float[] furie = new float[2];
float sum_real, sum_imaging; // суммы действительной и мнимой частей
float arg; // аргумент sin, cos
Bitmap image = new Bitmap(pictureBox1.Image);
for (u = 0; u < 20; u++)
for (v = 0; v < 20; v++)
{
sum_real = sum_imaging = 0;
for (j = 0; j < n; j++)
for (k = 0; k < n; k++)
{
if (image.GetPixel(j,k) != Color.White)
{
arg = (float)pi_2_N * (u * j + v * k);
sum_real += (float)Math.Cos(arg);
sum_imaging += (-1) * (float)Math.Sin(arg);
}
}
furie[u][v].Re = N_1 * sum_real;
furie[u][v].Im = N_1 * sum_imaging;
}
}
struct complex //комплексное число
{
public float Re;
public float Im;
}
}
}
int n = pictureBox1.Height; // n строк изображения, m столбцов
int m = n;
да ну ладно... ?!!!!!!!!!... почему неint n = pictureBox1.Height; // n строк изображения, m столбцов
int m = pictureBox1.Width;
откуда вы знаете, что там точный квадрат?.. но это мелочи на фоне остальногоstruct complex //комплексное число
{
public float Re;
public float Im;
}
и furie[u][v].Re = ...
furie[u][v].Im = ...
ну тогда и пишитеvar furie = new complex[...
furie[u][v].Re = ...
furie[u][v].Im = ...
for (u = 0; u < 20; u++)
for (v = 0; v < 20; v++)
var furie = new complex[20,20];