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

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

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

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

как во вложенном цикле for код определяет какой конкретно символ там должен быть относительно всего изображения

.
Листинг программы
  1. namespace Ch04Ex06
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. double realCoord, imagCoord;
  8. double realMax = 1.77;
  9. double realMin = -0.6;
  10. double imagMax = -1.2;
  11. double imagMin = 1.2;
  12. double realStep;
  13. double imagStep;
  14. double realTemp, imagTemp, realTemp2, arg;
  15. double sum=0;
  16. int iterations
  17. ;
  18.  
  19. while (true)
  20. {
  21. realStep = (realMax - realMin) / 79;
  22. imagStep = (imagMax - imagMin) / 48;
  23. Console.WriteLine("rlCst = {0}, imgCnst = {1}", realStep.ToString(), imagStep.ToString());
  24. for (imagCoord = imagMin; imagCoord >= imagMax;
  25. imagCoord += imagStep)
  26. {
  27. for (realCoord = realMin; realCoord <= realMax;
  28. realCoord += realStep)
  29. {
  30. iterations = 0;
  31. realTemp = realCoord;
  32. imagTemp = imagCoord;
  33. arg = (realCoord * realCoord) + (imagCoord * imagCoord);
  34. while ((arg < 4) && (iterations < 40))
  35. {
  36. realTemp2 = (realTemp * realTemp) - (imagTemp * imagTemp) - realCoord;
  37. imagTemp = (2 * realTemp * imagTemp) - imagCoord;
  38. realTemp = realTemp2;
  39. arg = (realTemp * realTemp) + (imagTemp * imagTemp);
  40. iterations += 1;
  41. }
  42. switch (iterations % 4)
  43. {
  44. case 0:
  45. Console.Write(".");
  46. break;
  47. case 1:
  48. Console.Write("o");
  49. break;
  50. case 2:
  51. Console.Write("0");
  52. break;
  53. case 3:
  54. Console.Write("O");
  55. break;
  56. }
  57. }
  58. Console.Write("\n");
  59. }
  60.  
  61. Console.WriteLine("imgmx = {0}", Math.Round(imagMax, 2));
  62. Console.WriteLine("imgmn = {0}", Math.Round(imagMin, 2));
  63. Console.WriteLine("rlmx = {0}", Math.Round(realMax), 2);
  64. Console.WriteLine("rlmn = {0}", Math.Round(realMin, 2));
  65. sum = 0;
  66. Console.WriteLine("Нажми 1 = увеличить промежуток, другие кнопки - уменьшить промежуток");
  67. string d = Console.ReadLine();
  68. if (d == "1")
  69. {
  70. sum = 1.1;
  71. imagMax *= sum;
  72. imagMin *= sum;
  73. realMax *= sum;
  74. realMin *= sum;
  75. }
  76. else
  77. {
  78. sum = 1.1;
  79. imagMax /= sum;
  80. imagMin /= sum;
  81. realMax /= sum;
  82. realMin /= sum;
  83. }
  84. }
  85. }
  86. }
  87. }
Вся программа находится внутри цикла while (true), остальное - мой (особо не нужный) код. В общем я в упор не понимаю как принцип построения множества реализован здесь... Если можно, то мне нужен ответ поподробнее. Может быть, мне стоит что-то почитать, чтобы для меня этот код сразу стал проще простого?

Решение задачи: «.NET 4.x Какой алгоритм у этого кода Множества Мандельброта?»

textual
Листинг программы
  1.                         while ((arg < 4) && (iterations < 40))
  2.                         {
  3.                             realTemp2 = (realTemp * realTemp) - (imagTemp * imagTemp) - realCoord;
  4.                             imagTemp = (2 * realTemp * imagTemp) - imagCoord;
  5.                             realTemp = realTemp2;
  6.                             arg = (realTemp * realTemp) + (imagTemp * imagTemp);
  7.                             iterations += 1;
  8.                         }

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


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

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

12   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы