.NET 4.x Какой алгоритм у этого кода Множества Мандельброта? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, я тут читаю книжку C# Beginning, В ней описывается алгоритм построения множества, но я не понимаю, где этом алгоритме сама формула . Я хочу понять, где сами куски формулы в этом коде, которые напрямую к ней относятся, в упор не пойму как здесь они реализованы и

как во вложенном цикле 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;
                }
                
            }
            
        }
    }
}
Вся программа находится внутри цикла while (true), остальное - мой (особо не нужный) код. В общем я в упор не понимаю как принцип построения множества реализован здесь... Если можно, то мне нужен ответ поподробнее. Может быть, мне стоит что-то почитать, чтобы для меня этот код сразу стал проще простого?

Решение задачи: «.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;
                        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы