-
Notifications
You must be signed in to change notification settings - Fork 0
/
CG_Practical05.cpp
47 lines (47 loc) · 1016 Bytes
/
CG_Practical05.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <graphics.h>
#include <math.h>
#include <cstdlib>
using namespace std;
void move(int j, int h, int &x, int &y)
{
if (j == 1)
y -= h;
else if (j == 2)
x += h;
else if (j == 3)
y += h;
else if (j == 4)
x -= h;
lineto(x, y);
}
void hilbert(int r, int d, int l, int u, int i, int h, int &x, int &y)
{
if (i > 0)
{
i--;
hilbert(d, r, u, l, i, h, x, y);
move(r, h, x, y);
hilbert(r, d, l, u, i, h, x, y);
move(d, h, x, y);
hilbert(r, d, l, u, i, h, x, y);
move(l, h, x, y);
hilbert(u, l, d, r, i, h, x, y);
}
}
int main()
{
int n, x1, y1;
int x0 = 50, y0 = 150, x, y, h = 10, r = 2, d = 3, l = 4, u = 1;
cout << "Give the value of n=";
cin >> n;
x = x0;
y = y0;
int driver = DETECT, mode = 0;
initgraph(&driver, &mode, NULL);
moveto(x, y);
hilbert(r, d, l, u, n, h, x, y);
delay(10000);
closegraph();
return 0;
}