Построить фрактал крест Используются два нелинейных преобразования. Эти преобразования выглядят следующим образом: Здесь L - поворот на 90 градусов относительно точки (0, 0), а R - "растяжение" относительно точки (1, 0) с переменным показателем, который зависит от растояния от центра (1, 0). Приведенный пример получен при a=2,8. program Rnd; Uses CRT, Graph; Var gd,gm : Integer; Procedure draw; //создаём процедуру,которая будет рисовать этот крест const iter = 70000; a = 2.8; Var //объявляем переменные t, x, y, p : Real; k : LongInt; mx, my, rad : Integer; Begin mx := 320; my := 240; rad := 200; Randomize; //подключаем генератор случайных чисел x := 0.0; y := 0.0; For k := 1 To iter Do Begin p := Random; t := x; If p <= 1/2 Then Begin //применяем условие для L x := -y; y := t; End Else Begin //применяем условие для R x := 1+(a*(x-1))/(sqr(x-1)+sqr(y)+1); y := a*y/(sqr(t-1)+sqr(y)+1); End; PutPixel(mx + Round(rad * x), my - Round(rad * y), 2); End; End; Begin gd := Detect; InitGraph(gd,gm,'c:\bp\bgi'); //инициализируем графику draw; //вызываем процедуру,которая будет рисовать крест ReadKey; CloseGraph; End.
Ключевые слова:
фракталы, крест
|
|||||||