Хочу разобраться как строится фрактал Джулия, что понял сделал коментарии в программе, что не правильно исправьте пожалуйста, некоторые моменты непонятны, если не сложно обьясните.
program Zadanie_1;
uses Graph, Crt; {Команда подключения модулей}
type {Секция определения типов}
TComplex=record {Тип запись}
X:Real; {Переменная вещественного типа}
Y:Real; {Переменная вещественного типа}
end;
const {Секция объявления констант}
iter=50;{Максимальное количество итераций}
max=16;{Что это за переменная ? и почему именно так рассчитывается? Константа. Берем из расчета 640*0,005^2+480*0,005^2}
x0=-1;{Минимальная граница расчета по оси x}
xn=1;{Максимальная граница расчета по оси x}
y0=-1.2;{Минимальная граница расчета по оси y}
yn=1.2;{Максимальная граница расчета по оси y}
var {Секция объявления переменных}
z, t, c : TComplex; {Переменные типа TComplex, плоскость с осями х и у}
n : Integer; {Переменная целого типа, где n – текущее количество итераций}
Cancel : Boolean; {Логическая переменная, отвечает за выход из программы}
gd, gm : Integer; {Переменные целого типа, где переменная gd определяет тип драйвера адаптера, переменная gm определяет режим работы адаптера, по умолчанию выбирается старший режим (с самым высоким разрешением)}
msx,msy : Real; {Переменные вещественного типа}
x, y :Real; {Переменные вещественного типа, где x, y – координаты плоскости z}
xc, yc : Integer; {Переменные целого типа определяющие максимальное значение координаты x и y точек на экране для графического режима}
begin {Начало программы}
Cancel := false;{Присваиваем cancel значение false}
Randomize;{ Позволяет инициализировать встроенный генератор случайных чисел с произвольным значением}
gd := Detect; {Тип драйвера адаптера определяется автоматически, значение gm после команды gd:=detect; определяется автоматически}
InitGraph(gd,gm,'c:\bp\bgi');{Инициализация графики. В кавычках указывается путь к программе драйверу с расширением bgi}
// При использовании модуля Graph, обслуживающего графический режим, Pascal умеет работать с разрешениями экрана до 640x480 пикселов, поскольку для современных компьютеров это разрешение считается устаревшим, уменьшим максимальное значение координаты Х и Y с помощью оператора деления нацело (div) в двое.
xc:=GetMaxX div 2;{Функция GetMaxX возвращает максимальное значение координаты x для точки на экране для графического режима }
yc:=GetMaxY div 2; {Функция GetMaxY возвращает максимальное значение координаты y для точки на экране для графического режима}
msx:= xc/xn;{Вот это непонятно зачем мы это делаем и что такое msx? msy?}
msy:= yc/yn;
y:=y0;{Присваиваем координате y минимальную границу расчета по оси y, т.е. -1,2}
while y<=yn do {Пока условие y<=yn истинно выполняется оператор после do}
begin
x:=x0;{Присваиваем координате х минимальную границу расчета по оси x, т.е. -1}
while x<=xn do {Пока условие x<=xn истинно выполняется оператор после do}
begin
n := 0;{Начальное количество итераций}
z.x := x*msx * 0.005;{Вот это непонятно зачем мы это делаем и что такое ? И что за число 0.005? Откуда взялось ?}
z.y := y*msy * 0.005;
c.x := 0.11;{как правильно обозвать это число ?}
c.y := -0.66;{как правильно обозвать это число ?}
//c.x, c.y – константы, изменяя которые мы можем получить множество форм фрактала Джулии, методом подбора примем значения 0.11 и -0.66 для того чтобы получить красивую картинку.
while (sqr(z.x) + sqr(z.y) < max) and (n < iter) do {Пока выражние sqr(z.x) + sqr(z.y) меньше max и текущее количество итераций меньше максимального выполняется оператор после do, sqr – функция возведения в квадрат}
begin
t := z;{Присваиваем плоскости t значение плоскости z}
z.x := sqr(t.x) - sqr(t.y) + c.x;{Это я вообще представить не могу чему равно, поясните плиз}
z.y := 2*t.x*t.y + c.y;
Inc(n);{Увеличиваем начальное количество итераций на единицу}
if keypressed {Если нажата клавиша то переходим к оператору после then}
then
cancel := true;{Переменной cancel присваиваем значение true}
end;
if n < iter {Если условие n < iter (текущее значение итераций меньше максимального значения) истинно, то выполняется оператор после then}
then
begin
PutPixel(xc+round(x*msx),yc+round(y*msy), (n mod 16));{Процедура PutPixel перекрашивает пиксел с координатами (xc+round(x*msx),yc+round(y*msy) в цвет (n mod 16),функция round округляет значение до целого числа. Модуль Graph позволяет удобно использовать только 16 цветов, которые имеют значения от 0 до 15. Цвет будет определяться как остаток от деления количества итераций на 16, чтобы были задействованы все возможные цвета которые удобно использовать}
end;
if cancel {Если значение cancel равено true переходим к оператору после then}
then
exit;{Выход из программы}
x:=x+0.00156;{Увеличиваем х на 0,00156 из расчета 1/640 т.е. передвигаемся по оси х, с шагом 0,00156}
end;
y:=y+0.00208; {Увеличиваем y на 0,00208 из расчета 1/480 т.е. передвигаемся по оси y, с шагом 0,00208}
end;
Readkey;{Функция Readkey служит для считывания нажатых клавиш}
end.

и еще константу c можно рассчитать из c.x := 0.11, c.y := -0.66, как с=(c.x^2- c.y^2)+2 c.y*i=0,42-1,32i Верно ?