diff options
author | Karl Berry <karl@freefriends.org> | 2010-04-19 23:59:33 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-04-19 23:59:33 +0000 |
commit | dddce3148a2bc785603576b18ffcf72d39adbe47 (patch) | |
tree | 14f4c79ef11bcf0820a8d4ff2ab0c5ac009c365c /Build/source/utils/asymptote/examples/SierpinskiSponge.asy | |
parent | a01e51b01f5819b6091af48cdca581e9f2a9282e (diff) |
asy 1.93
git-svn-id: svn://tug.org/texlive/trunk@17934 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/examples/SierpinskiSponge.asy')
-rw-r--r-- | Build/source/utils/asymptote/examples/SierpinskiSponge.asy | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/examples/SierpinskiSponge.asy b/Build/source/utils/asymptote/examples/SierpinskiSponge.asy new file mode 100644 index 00000000000..209c3d182ed --- /dev/null +++ b/Build/source/utils/asymptote/examples/SierpinskiSponge.asy @@ -0,0 +1,42 @@ +size(200); +import palette; +import three; + +triple[] M={ + (-1,-1,-1),(0,-1,-1),(1,-1,-1),(1,0,-1), + (1,1,-1),(0,1,-1),(-1,1,-1),(-1,0,-1), + (-1,-1,0),(1,-1,0),(1,1,0),(-1,1,0), + (-1,-1,1),(0,-1,1),(1,-1,1),(1,0,1), + (1,1,1),(0,1,1),(-1,1,1),(-1,0,1) +}; + +triple[] K={ + (1,-1,-1),(1,0,-1),(1,1,-1),(1,1,0), + (1,1,1),(1,0,1),(1,-1,1),(1,-1,0), + (0,0,-1),(0,0,1),(0,-1,0),(0,1,0) +}; + +surface s; + +void recur(triple p, real u, int level) { + if(level > 1 ) + for(triple V : M) + recur(p+u*V,u/3,level-1); + else + for(triple V : K) { + transform3 T=shift(p)*scale3(u)*shift(V)*scale3(0.5); + surface t=T*surface((1,-1,-1)--(1,1,-1)--(1,1,1)--(1,-1,1)--cycle); + s.append(t); + s.append(scale3(-1)*t); + } +} + +recur((0,0,0),1/3,3); + +surface sf; +sf.append(s); +sf.append(rotate(90,Y)*s); +sf.append(rotate(90,Z)*s); +sf.colors(palette(sf.map(abs),Rainbow())); + +draw(sf); |