carre.cxx
1011 Bytes
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
48
49
50
51
52
53
54
55
56
57
58
59
carres(A,B):={
DispG();
carre(A,B);
if (longueur2(A,B)>0.01) {
carres(A+(B-A)/2,B+(B-A)*i/2);
}
};
carres2(A,B):={
DispG();
if (longueur2(A,B)>0.01) {
carres2(A+(B-A)/2,B+(B-A)*i/2);
}
carre(A,B);
};
carrep(A,B,n):={
DispG();
carre(A,B);
if (n==0) return 0;
carrep(A+(B-A)/2,B+(B-A)*i/2,n-1);
};
carresp(A,B,a):={
DispG();
carre(A,B);
if (longueur2(A,B)>0.01) {
carresp(A+(B-A)*a,B+(B-A)*i*a,a);
}
};
carre8(A,B):={
local h;
DispG();
carre(A,B);
if (longueur2(A,B)<0.01) return 0;
h:=(B-A)/3;
carre8(A,A+h);
carre8(A+h,A+2*h);
carre8(A+2*h,B);
carre8(A+i*h,A+i*h+h);
carre8(A+i*h+2*h,B+i*h);
carre8(A+2*i*h,A+2*i*h+h);
carre8(A+2*i*h+h,A+2*i*h+2*h);
carre8(A+2*i*h+2*h,B+2*i*h);
};
carre8p(A,B,n):={
local h;
h:=(B-A)/3;
DispG();
carre(A,B);
if (n==0) return 0;
h:=(B-A)/3;
carre8p(A,A+h,n-1);
carre8p(A+h,A+2*h,n-1);
carre8p(A+2*h,B,n-1);
carre8p(A+i*h,A+i*h+h,n-1);
carre8p(A+i*h+2*h,B+i*h,n-1);
carre8p(A+2*i*h,A+2*i*h+h,n-1);
carre8p(A+2*i*h+h,A+2*i*h+2*h,n-1);
carre8p(A+2*i*h+2*h,B+2*i*h,n-1);
};