.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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д