Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2009, 01:22   #1
stscolt
Пользователь
 
Регистрация: 21.04.2008
Сообщений: 50
По умолчанию Фракталы. Перенос.

У меня есть решенная задача построения фрактала ньютона, но она выполнена на паскале. Нужно чтобы рисовал в Делфи, при нажатии кнопки. Если кто сделает, напишет комментарии к коду буду очень благодарен и признателен.
Вот код:
program N3;
uses Graph, Crt;
type
Complex = Record
x : Real;
y : Real;
end;
const
iter = 50;
max = 1e+6;
min = 1e-6;

var
z, t, d : Complex;
p : Real;
x, y, n : Integer;
Cancel : Boolean;
gd, gm : Integer;
mx, my : Integer;

begin
Cancel := False;
Randomize;
gd := Detect;
InitGraph(gd,gm,'c:\bp\bgi');
Mx := GetMaxX div 2;
My := GetMaxY div 2;
for y := -my to my do
for x := -mx to mx do
begin
n := 0;
z.x := X * 0.005;
z.y := Y * 0.005;
d := z;
while (sqr(z.x)+sqr(z.y) < max) and (sqr(d.x)+sqr(d.y) > min)
and (n < iter) do
begin
t := z;
{z^3 - 1}
p := sqr(sqr(t.x)+sqr(t.y));
z.x := 2/3*t.x + (sqr(t.x)-sqr(t.y))/(3*p);
z.y := 2/3*t.y*(1-t.x/p);{}
d.x := abs(t.x - z.x);
d.y := abs(t.y - z.y);
Inc(n);
if keypressed then
Cancel := true;
end;
PutPixel(mx + x,my + y,16 - (n mod 16));
if cancel then exit;
end;
Readkey;
CloseGraph;
end.
stscolt вне форума Ответить с цитированием
Старый 12.12.2009, 08:43   #2
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

Код:
procedure Tform1.PUTPIXEL(x,y,c:Integer);
  var cc: TColor;
  begin
           case c mod 8 of
            0:cc:=clBlack;
            1:cc:=clRed;
            2:cc:=clLime;
            3:cc:=clYellow;
            4:cc:=clBlue;
            5:cc:=clFuchsia;
            6:cc:=clAqua;
           7:cc:=clWhite;
         end;
      form1.Canvas.Pixels[x,y] := cc;
  end;


procedure TForm1.Button1Click(Sender: TObject);


const
iter = 50;
max = 1e+6;
min = 1e-6;

var
z, t, d : Complex;
p : Real;
x, y, n : Integer;
mx,my:integer;
begin
button1.visible:=false;
Randomize;
Mx := form1.ClientWidth div 2;
My := form1.ClientHeight div 2;
for y := -my to my do
for x := -mx to mx do 
begin
n := 0;
z.x := X * 0.005;
z.y := Y * 0.005;
d := z;
while (sqr(z.x)+sqr(z.y) < max) and (sqr(d.x)+sqr(d.y) > min)
and (n < iter) do
begin
t := z;
{z^3 - 1}
p := sqr(sqr(t.x)+sqr(t.y));
z.x := 2/3*t.x + (sqr(t.x)-sqr(t.y))/(3*p);
z.y := 2/3*t.y*(1-t.x/p);{}
d.x := abs(t.x - z.x);
d.y := abs(t.y - z.y);
Inc(n);
PUTPIXEL(mx + x,my + y,8 - (n mod 8));
end;
end;
end;
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
фракталы - геометрия природы Hallo Обсуждение статей 2 29.10.2009 15:46
C++ Builder, Фракталы sqwo Помощь студентам 1 09.03.2009 19:27
Java фракталы tatano4ka Общие вопросы по Java, Java SE, Kotlin 3 29.04.2008 20:16