summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/examples/SierpinskiSponge.asy
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-04-19 23:59:33 +0000
committerKarl Berry <karl@freefriends.org>2010-04-19 23:59:33 +0000
commitdddce3148a2bc785603576b18ffcf72d39adbe47 (patch)
tree14f4c79ef11bcf0820a8d4ff2ab0c5ac009c365c /Build/source/utils/asymptote/examples/SierpinskiSponge.asy
parenta01e51b01f5819b6091af48cdca581e9f2a9282e (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.asy42
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);