Sierpinski GasketをAsymptoteでかいたソースコードを見かけないので置いておくことにしました.
settings.outformat="pdf";
unitsize(10cm);
pair[] vertex;
vertex = new pair[3];
vertex[0]=(0,1);
for(int j=1; j<3; ++j) {
vertex[j]= rotate(120, (0,0))* vertex[j-1] ;
}
path a = vertex[0] -- vertex[1] -- vertex[2] --cycle;
draw(a,dashed);
/* dashed*/
pair[] vertex_center;
vertex_center = new pair[3];
for(int j=0; j<3; ++j) {
vertex_center[j]= (1- 0.5) * vertex[j];
}
dot(vertex_center);
path b= scale(0.5)*a;
/* draw(b,dashed); */
path[] ver_path;
ver_path = new path[3];
for(int j=0; j<3; ++j) {
ver_path[j]= shift(vertex_center[j])*b;
draw(ver_path[j],dashed);
}
/* */
path[] pre;
pre = new path[3];
for(int i=0; i<3; ++i){
pre[i]= scale(0.5)*ver_path[i];
}
path[][] contra;
contra = new path[3][3];
for(int j=0; j<3; ++j) {
for(int i=0; i<3; ++i) {
contra[i][j]= shift(vertex_center[i])* pre[j];
draw(contra[i][j],dashed);
}
}
path[][][] contra_contra;
contra_contra = new path[3][3][3];
for(int j=0; j<3; ++j) {
for(int i=0; i<3; ++i) {
for(int k=0; k<3; ++k){
contra_contra[i][j][k]= shift(vertex_center[i])*scale(0.5)* contra[j][k];
draw(contra_contra[i][j][k],dashed);
}
}
}
path[][][][] contra_3;
contra_3 = new path[3][3][3][3];
for(int j=0; j<3; ++j) {
for(int i=0; i<3; ++i) {
for(int k=0; k<3; ++k){
for(int l=0; l<3; ++l){
contra_3[i][j][k][l]= shift(vertex_center[i])*scale(0.5)* contra_contra[j][k][l];
draw(contra_3[i][j][k][l],dashed);
}
}
}
}
path[][][][][] contra_4;
contra_4 = new path[3][3][3][3][3];
for(int j=0; j<3; ++j) {
for(int i=0; i<3; ++i) {
for(int k=0; k<3; ++k){
for(int l=0; l<3; ++l){
for(int m=0; m<3; ++m){
contra_4[i][j][k][l][m]= shift(vertex_center[i])*scale(0.5)* contra_3[j][k][l][m];
draw(contra_4[i][j][k][l][m],dashed);
}
}
}
}
}
path[][][][][][] contra_5;
contra_5 = new path[3][3][3][3][3][3];
for(int j=0; j<3; ++j) {
for(int i=0; i<3; ++i) {
for(int k=0; k<3; ++k){
for(int l=0; l<3; ++l){
for(int m=0; m<3; ++m){
for(int n=0; n<3; ++n){
contra_5[i][j][k][l][m][n]= shift(vertex_center[i])*scale(0.5)* contra_4[j][k][l][m][n];
fill(contra_5[i][j][k][l][m][n],dashed);
}
}
}
}
}
}

