Я работаю над фракталами времени эвакуации в качестве моего проекта 12-го класса, который должен быть написан на C++, используя простую графическую библиотеку.h, которая устарела, но кажется достаточной. Код для создания набора Мандельброта, похоже, работает, и я предположил, что наборы Джулии будут вариацией одного и того же. Вот код: (. Здесь, FX и FY являются просто функции для преобразования реальных комплексных координат, как (-0.003,0.05) к фактическому значению пикселя на экране)Julia Установить код рендеринга
int p;
x0=0, y0=0;
long double r, i;
cout<<"Enter c"<<endl;
cin>>r>>i;
for(int i= fx(-2); i<=fx(2); i++)
{
for(int j= fy(-2); j>=fy(2); j--)
{
long double x=0.0, y= 0.0,t;
x= gx(i), y= gy(j);
int k= -1;
while((x*x + y*y <4)&& k<it-1)
{
t= x*x - y*y + r;
y= 2*x*y + i ;
x=t;
k++;
}
p= k*pd;
setcolor(COLOR(colour[p][0],colour[p][1],colour[p][2]));
putpixel(i,j,getcolor());
}
}
Но похоже, это не так. Выходное окно отображает весь круг радиуса = 2 с цветом, соответствующим времени выхода из 1 итерации.
Кроме того, на том, чтобы искать решение этой проблемы, я видел, что все алгоритмы другие использовали инициализирует начальные координаты примерно так:
x = (col - width/2)*4.0/width;
y = (row - height/2)*4.0/width;
Может кто-нибудь объяснить, что я «Пропустить?»
У вас есть рабочий генератор Мандельброта? Изменение его к Джулии связано с изменением переменной на константу. И как будет этот цикл (int j = fy (-2); j> = fy (2); j -) ', если вы уменьшите переменную цикла? Это означает, что 'fy (-2)' больше, чем 'fy (2)'. – karatedog
@karatedog no, в окне BGI, (0.0) - верхний левый, а (ширина, высота) - нижний правый. поэтому, чтобы перейти от y = -2 к y = +2, вам придется уменьшить значение j. И да, у меня есть работающий генератор множества Мандельброта. –
Какова ценность 'it'? Я бы предложил обычный, в то время как вы отлаживаете макеты всех входных данных и используете постоянные значения вместо переменных (например, заменяете 'it' на 50) – karatedog