Построить фрактал Кривая Гильберта Возьмем квадрат со стороной 1\2, уберем одну из его сторон, и поместим его точно в середину единичного квадрата.Получилась Гильбертова кривая порядка 1. void main() { #include <graphics.h> #include <conio.h> #include <math.h> #include <stdio.h> #include <stdlib.h> const int u=10; // длина штриха const int p=5; // порядок кривой int i; void a(int i) ; void b(int i) ; void c(int i) ; void d(int i) ; //элементы кривой void a(int i) { if (i > 0) { d(i-1); linerel(+u,0); a(i-1); linerel(0, u); a(i - 1); linerel(-u, 0); c(i - 1); } } void b(int i) { if (i > 0) { c(i - 1); linerel(-u, 0); b(i - 1); linerel(0, -u); b(i - 1); linerel(u, 0); d(i - 1); } } void c(int i) { if (i > 0) { b(i - 1); linerel(0, -u); c(i - 1); linerel(-u, 0); c(i - 1); linerel(0, u); a(i - 1); } } void d(int i) { if (i > 0) { a(i - 1); linerel(0, u); d(i - 1); linerel(u, 0); d(i - 1); linerel(0, -u); b(i - 1); } } int main () { int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, " bgi"); errorcode = graphresult(); if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:\n"); getch(); exit(1); } moveto(100, 100); a(p); //вычертить кривую Гильберта getch(); closegraph(); return 0; } }
Ключевые слова:
фрактал кривая Гильберта
|
|||||||