Лабораторная работа 1 - Разработка нового распределенного приложения для инструментария Alchemi
Заготовка кода для класса грид-потока ComplexThread
using System;
using System.Drawing;
using Alchemi.Core.Owner;
using MathTools;
/// <summary>
/// Грид-поток для вычисления отдельной части графика комплексной функции.
/// </summary>
[Serializable]
public class ComplexThread : GThread
{
/// <summary>Ширина обрабатываемой части изображения в пикселях.</summary>
private int width;
/// <summary>Высота обрабатываемой части изображения в пикселях.</summary>
private int height;
/// <summary>Горизонтальный номер обрабатываемой части изображения.</summary>
private int hornumber;
/// <summary>Вертикальный номер обрабатываемой части изображения.</summary>
private int vernumber;
/// <summary>Минимальное значение аргумента x в обрабатываемой части области.</summary>
private double xmin;
/// <summary>Максимальное значение аргумента x в обрабатываемой части области.</summary>
private double xmax;
/// <summary>Минимальное значение аргумента y в обрабатываемой части области.</summary>
private double ymin;
/// <summary>Максимальное значение аргумента y в обрабатываемой части области.</summary>
private double ymax;
/// <summary>Комплексная функция для визуализации.</summary>
private BaseFunction function;
/// <summary>Насыщенность черного цвета в генерирумом изображении.</summary>
private double white;
/// <summary>Насыщенность белого цвета в генерирумом изображении.</summary>
private double black;
/// <summary>Точечный рисунок для хранения сгенерированной части изображения.</summary>
private Bitmap image;
/// <summary>
/// Создает новый грид-поток для вычисления части графика.
/// </summary>
/// <param name="width">ширина части изображения</param>
/// <param name="height">высота части изображения</param>
/// <param name="hornumber">горизонтальный номер части изображения</param>
/// <param name="vernumber">вертикальный номер части изображения</param>
/// <param name="xmin">минимальное значение аргумента x в обрабатываемой области</param>
/// <param name="xmax">максимальное значение аргумента x в обрабатываемой области</param>
/// <param name="ymin">минимальное значение аргумента y в обрабатываемой области</param>
/// <param name="ymax">максимальное значение аргумента y в обрабатываемой области</param>
/// <param name="function">комплексная функция для визуализации</param>
/// <param name="white">насыщенность белого цвета</param>
/// <param name="black">насыщенность черного цвета</param>
public ComplexThread(int width, int height, int hornumber, int vernumber,
double xmin, double xmax, double ymin, double ymax,
BaseFunction function, double white, double black)
{
...
}
/// <summary>
/// Основной метод. Обрабатывает часть графика комплексной функции.
/// </summary>
public override void Start()
{
...
}
/// <summary>
/// Вспомогательная функция. Определяет цвет, соответствующий
/// заданному комплексному числу.
/// </summary>
/// <param name="value">комплексное число</param>
/// <returns>цвет, соответствующий комплексному числу</returns>
private Color CalcColor(Complex value)
{
...
}
/// <summary>
/// Вертикальный номер обрабатываемой части изображения.
/// </summary>
public int VerNumber
{
get
{
return vernumber;
}
}
/// <summary>
/// Горизонтальный номер обрабатываемой части изображения.
/// </summary>
public int HorNumber
{
get
{
return hornumber;
}
}
/// <summary>
/// Ширина обрабатываемой части изображения.
/// </summary>
public int Width
{
get
{
return width;
}
}
/// <summary>
/// Высота обрабатываемой части изображения.
/// </summary>
public int Height
{
get
{
return height;
}
}
/// <summary>
/// Изображение для хранения части графика.
/// </summary>
public Bitmap Image
{
get
{
return image;
}
}
}