Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <graphics.h>
- using namespace std;
- int xc,yc,l;
- void linie(int directie)
- {
- int dx,dy;
- directie=(directie+8)%8;
- switch (directie)
- {
- case 0:
- dx=0;
- dy=-l;
- break;
- case 1:
- dx=l;
- dy=0;
- break;
- case 2:
- dx=0;
- dy=l;
- break;
- case 3:
- dx=-l;
- dy=0;
- break;
- }
- line(xc,yc,xc+dx,yc+dy);
- xc+=dx;
- yc+=dy;
- }
- void Hilbert(int directie, int grad)
- {
- if (grad==1)
- {
- switch(directie)
- {
- case 0:
- linie(3);
- linie(0);
- linie(1);
- break;
- case 1:
- linie(2);
- linie(1);
- linie(0);
- break;
- case 2:
- linie(1);
- linie(2);
- linie(3);
- break;
- case 3:
- linie(0);
- linie(3);
- linie(2);
- break;
- }
- }
- else
- {
- switch(directie)
- {
- case 0:
- Hilbert(3,grad-1);
- linie(3);
- Hilbert(0,grad-1);
- linie(0);
- Hilbert(0,grad-1);
- linie(1);
- Hilbert(1,grad-1);
- break;
- case 1:
- Hilbert(2,grad-1);
- linie(2);
- Hilbert(1,grad-1);
- linie(1);
- Hilbert(1,grad-1);
- linie(0);
- Hilbert(0,grad-1);
- break;
- case 2:
- Hilbert(1,grad-1);
- linie(1);
- Hilbert(2,grad-1);
- linie(2);
- Hilbert(2,grad-1);
- linie(3);
- Hilbert(3,grad-1);
- break;
- case 3:
- Hilbert(0,grad-1);
- linie(0);
- Hilbert(3,grad-1);
- linie(3);
- Hilbert(3,grad-1);
- linie(2);
- Hilbert(2,grad-1);
- break;
- }
- }
- }
- int main()
- {
- initwindow(1900,1000);
- const int L=min(getmaxx(),getmaxy());
- const int grad=5;
- xc=(getmaxx()-L)/2+50;
- yc=(getmaxy()-L)/2+50;
- l=(L-100)/((1<<grad)-1);
- Hilbert(2,grad);
- getch();
- cleardevice();
- closegraph();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement