IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Множества Мандельброта и Жюлиа, собственно программа постороения
Гersh
сообщение 28.04.2006 8:52
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Здравия желаю, Товарищи!
Очевидно, эта тема уже обсуждалась, и я прочитал все касательно этих фракталов... НО. Результирующую программу мне так никто не предложил, а сам я еще не дорос, чтобы всю математику фрактала прописать самостоятельно в Паскале.

С множеством Мандельброта все понятно - я, наконец-то, достал информатика, и он дал мне готовую, полностью рабочую программу.
Как я понял, в множестве Мандельброта граница убегания постоянна, а затравочное число изменятся. Тогда в множестве Жюлиа наоборот: затравочное число постоянно, а граница убегания меняется. Верно? (Гсподи! Неужли я такое говорю? wacko.gif )

Тогда достаточно в процедуре рисования множества Мандельброта изменить итерационный процесс и получим множество Жюлиа? Вопрос только в том, как это сделать?
Вот текст процедуры рисования множества Мандельброта:

procedure Mandelbrot_Draw;
{ постpоение множества Мандельбpота }
var
i, j : Integer;
X_New, Y_New,
X_Old, Y_Old : Extended;
r, P, Q : Extended;
Color : Word;
Begin
for i:= 0 to GetMaxX do
for j:= 0 to GetMaxY do
begin
P:= P_min+i*d_p;
Q:= Q_min+j*d_q;
Color:= 0;
X_Old:= 0;
Y_Old:= 0;
repeat
X_New:= X_Old*X_Old - Y_Old*Y_Old + p;
Y_New:= 2*X_Old*Y_Old + q;
Inc (Color);
r:=Sqr(X_New) + Sqr(Y_New);
X_Old:= X_New;
Y_Old:= Y_New;
until (r >= M) or (Color >= GetMaxColor);
if r > M then PutPixel (i,j, Color) else PutPixel (i,j, 0);
if KeyPressed then
case ReadKey of
#27 : Exit;
#32 : PaletteCreate;
end;
end;
{ чистим буфеp клавиатуpы }
while KeyPressed do ReadKey;
End; { Mandelbrot_Draw }


(кстати, у меня работает почему-то быстрее, чем та, которую на нашел на этом форуме в теории)

Как я понял, итерационный процесс, это вот эта штука:

X_New:= X_Old*X_Old - Y_Old*Y_Old + p;
Y_New:= 2*X_Old*Y_Old + q;
Inc (Color);
r:=Sqr(X_New) + Sqr(Y_New);
X_Old:= X_New;
Y_Old:= Y_New;

Которую надо изменить.
Понятно дело придется так же поменять некоторые константы и переменные.
Помогите мне, пожалуйста, преобразовать ЭТУ программу, чтобы она рисовала множества и Мандельброта и Жюлиа. Пропишите за меня процедуру для Жюлиа и объясните, что еще где нужно поменять и как, чтобы все без глюков запускалось.
Мне надо завтра сдать эту задачу, иначе я себе аттестат испорчу.
Помогите, пожалуйста поскорее кто может! Плиз! Я очень надеюсь на вас!
А уж с интерфайсом выбора одного или другого множетсва я сам разберусь.

И еще одна мааленькая просьба.
Если кто-нибудь меня услышит и поможет, киньте пожалуйста мне СМСку <...> (Здесь не доска сообщений. Читай правила!)

Всем заранее спасибо!!

Вот код всей программы (Показать/Скрыть)



Спасибо за внимание! =)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.07.2025 11:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"