Вот на хабре наткнулся на C# код, но ни как не пойму что это за библиотека (если это вообще библиотека).
В общем, подскажите пожалуйста как мне скомпилировать и запустить сследующий код?
static XBitmap PlotJuliaSet(ComplexNumber c, int w, int h, int maxIter,
double xMin = Double.NaN, double yMin = Double.NaN, double xMax = Double.NaN, double yMax = Double.NaN)
{
double r = CalculateR(c);
if (Double.IsNaN(xMin) || Double.IsNaN(xMax) || Double.IsNaN(yMin) || Double.IsNaN(yMax))
{
xMin = -r;
yMin = -r;
xMax = r;
yMax = r;
}
Logger.Instance.Log("R = " + r);
double xStep = Math.Abs(xMax - xMin) / w;
double yStep = Math.Abs(yMax - yMin) / h;
XBitmap bmp = new XBitmap(w, h);
IDictionary<int, IDictionary<int, int>> xyIdx = new Dictionary<int, IDictionary<int, int>>();
int maxIdx = 0;
for (int i = 0; i < w; i++)
{
xyIdx.Add(i, new Dictionary<int, int>());
for (int j = 0; j < h; j++)
{
double x = xMin + i * xStep;
double y = yMin + j * yStep;
ComplexNumber z = new ComplexNumber(x, y);
IList<ComplexNumber> zIter = SqPolyIteration(z, c, maxIter, r);
int idx = zIter.Count - 1;
if (maxIdx < idx)
{
maxIdx = idx;
}
xyIdx[i].Add(j, idx);
}
}
for (int i = 0; i < w; i++)
{
for (int j = 0; j < h; j++)
{
int idx = xyIdx[i][j];
double x = xMin + i * xStep;
double y = yMin + j * yStep;
ComplexNumber z = new ComplexNumber(x, y);
bmp.SetPixel(w - i - 1, j, ComplexHeatMap(idx, 0, maxIdx, z, r));
}
}
return bmp;
}
private static IList<ComplexNumber> SqPolyIteration(ComplexNumber z0, ComplexNumber c, int n, double r = 0)
{
IList<ComplexNumber> res = new List<ComplexNumber>();
res.Add(z0);
for (int i = 0; i < n; i++)
{
if (r > 0)
{
if (res.Last().Mod > r)
{
break;
}
}
res.Add(res.Last() * res.Last() + c);
}
return res;
}
private static double CalculateR(ComplexNumber c)
{
return (1 + Math.Sqrt(1 + 4*c.Mod))/2;
}
public static Color ComplexHeatMap(decimal value, decimal min, decimal max, ComplexNumber z, double r)
{
decimal val = (value - min) / (max - min);
return Color.FromArgb(
255,
Convert.ToByte(255 * val),
Convert.ToByte(255 * (1 - val)),
Convert.ToByte(255 * (z.Mod / r > 1 ? 1 : z.Mod / r))
);
}
Заранее спасибо!
Это никакая не библиотека.
У вас у функции PlotJuliaSet
тип результата - картинка bmp.
Вы ее можете сохранить и посмотреть любым просмотровщиком.
Собственно в примере приведен не весь код, а смысловая часть. Запустите вашу любимую IDE для C#, создайте пустой проект. Добавьте данный код.
Пример сохранения bmp
XBitmap JuliaImage=PlotJuliaSet(<параметры>)
SaveFileDialog dialog = new SaveFileDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{
int width = Convert.ToInt32(JuliaImage.Width);
int height = Convert.ToInt32(JuliaImage.Height);
Bitmap bmp = new Bitmap(width,height);
drawImage.DrawToBitmap(bmp, new Rectangle(0, 0, width, height);
bmp.Save(dialog.FileName, ImageFormat.Jpeg);
}
Автор использует собственные классы, которые не привел в коде. Для того чтобы все заработало нужно создать класс ComplexNumber)
Xbitmap и Color это стандартные классы, нужно подключить пространства имен
using System.Drawing;
using System.Collections;
Если вы используете MS Visual Studio, то она сама подскажет, что подставить)
Также вы можете использовать одно из готовых решений с github
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
есть два разные массива по значениям и количеству содержания
Вообщем перестал грабить с обновлением php до последней версии старый код работал
Есть dom-дерево файла htmlВ файле прописаны относительные пути к файлам стилей, картинкам, скриптам, например: