.NET 4.x Какой алгоритм у этого кода Множества Мандельброта? - C#
Формулировка задачи:
Здравствуйте, я тут читаю книжку C# Beginning,
В ней описывается алгоритм построения множества, но я не понимаю, где этом алгоритме сама формула .
Я хочу понять, где сами куски формулы в этом коде, которые напрямую к ней относятся, в упор не пойму как здесь они реализованы и
Вся программа находится внутри цикла while (true), остальное - мой (особо не нужный) код.
В общем я в упор не понимаю как принцип построения множества реализован здесь... Если можно, то мне нужен ответ поподробнее.
Может быть, мне стоит что-то почитать, чтобы для меня этот код сразу стал проще простого?
как во вложенном цикле for код определяет какой конкретно символ там должен быть относительно всего изображения
.namespace Ch04Ex06
{
class Program
{
static void Main(string[] args)
{
double realCoord, imagCoord;
double realMax = 1.77;
double realMin = -0.6;
double imagMax = -1.2;
double imagMin = 1.2;
double realStep;
double imagStep;
double realTemp, imagTemp, realTemp2, arg;
double sum=0;
int iterations
;
while (true)
{
realStep = (realMax - realMin) / 79;
imagStep = (imagMax - imagMin) / 48;
Console.WriteLine("rlCst = {0}, imgCnst = {1}", realStep.ToString(), imagStep.ToString());
for (imagCoord = imagMin; imagCoord >= imagMax;
imagCoord += imagStep)
{
for (realCoord = realMin; realCoord <= realMax;
realCoord += realStep)
{
iterations = 0;
realTemp = realCoord;
imagTemp = imagCoord;
arg = (realCoord * realCoord) + (imagCoord * imagCoord);
while ((arg < 4) && (iterations < 40))
{
realTemp2 = (realTemp * realTemp) - (imagTemp * imagTemp) - realCoord;
imagTemp = (2 * realTemp * imagTemp) - imagCoord;
realTemp = realTemp2;
arg = (realTemp * realTemp) + (imagTemp * imagTemp);
iterations += 1;
}
switch (iterations % 4)
{
case 0:
Console.Write(".");
break;
case 1:
Console.Write("o");
break;
case 2:
Console.Write("0");
break;
case 3:
Console.Write("O");
break;
}
}
Console.Write("\n");
}
Console.WriteLine("imgmx = {0}", Math.Round(imagMax, 2));
Console.WriteLine("imgmn = {0}", Math.Round(imagMin, 2));
Console.WriteLine("rlmx = {0}", Math.Round(realMax), 2);
Console.WriteLine("rlmn = {0}", Math.Round(realMin, 2));
sum = 0;
Console.WriteLine("Нажми 1 = увеличить промежуток, другие кнопки - уменьшить промежуток");
string d = Console.ReadLine();
if (d == "1")
{
sum = 1.1;
imagMax *= sum;
imagMin *= sum;
realMax *= sum;
realMin *= sum;
}
else
{
sum = 1.1;
imagMax /= sum;
imagMin /= sum;
realMax /= sum;
realMin /= sum;
}
}
}
}
}Решение задачи: «.NET 4.x Какой алгоритм у этого кода Множества Мандельброта?»
textual
Листинг программы
while ((arg < 4) && (iterations < 40))
{
realTemp2 = (realTemp * realTemp) - (imagTemp * imagTemp) - realCoord;
imagTemp = (2 * realTemp * imagTemp) - imagCoord;
realTemp = realTemp2;
arg = (realTemp * realTemp) + (imagTemp * imagTemp);
iterations += 1;
}