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