From f172764c5dc408dbd5d339c453ce230a36e25808 Mon Sep 17 00:00:00 2001
From: Riley Shaw
Date: Tue, 2 Sep 2014 10:41:46 -0700
Subject: [PATCH] Update 2014-09-02T17:41:46.034Z
---
index.html | 25 ++++++++++++++++++++++++-
main.css | 2 +-
terra.demo.min.js | 4 ++--
3 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/index.html b/index.html
index f7d0c53..b55f949 100644
--- a/index.html
+++ b/index.html
@@ -156,7 +156,30 @@ terra.registerCreature({
bbTerrarium.grid = bbTerrarium.makeGridWithDistribution([['plant', 50], ['brute', 5], ['bully', 5]]);
bbTerrarium.animate();
- If you come up with a cool example, let me know! I'll add it to this list and credit you.
+ Rule 146
+ var elementary = new terra.Terrarium(150, 150);
+
+factory.registerCA({
+ type: 'elementary',
+ alive: false,
+ ruleset: [1, 0, 0, 1, 0, 0, 1, 0].reverse(), // rule 146
+ colorFn: function () { return this.alive ? this.color + ',1' : '0,0,0,0'; },
+ process: function (neighbors, x, y) {
+ if (this.age === y) {
+ var index = neighbors.filter(function (neighbor) { return neighbor.coords.y === y - 1;
+ }).map(function (neighbor) { return neighbor.creature.alive ? 1 : 0; });
+ index = parseInt(index.join(''), 2);
+ this.alive = isNaN(index) ? !x : this.ruleset[index];
+ }
+ return false;
+ }
+});
+
+elementary.grid = elementary.makeGrid('elementary');
+elementary.animate();
+
+
+ If you come up with a cool example, let me know! I'll add it to this list and credit you.
Creatures
Creatures are registered with
terra.registerCreature(options, init)
or terra.registerCA(options, init)
for cellular automata.
diff --git a/main.css b/main.css
index 64ca907..da13d70 100755
--- a/main.css
+++ b/main.css
@@ -1 +1 @@
-@font-face{font-family:icomoon;src:url(icomoon.eot?it882c);src:url(icomoon.eot?#iefixit882c) format('embedded-opentype'),url(icomoon.woff?it882c) format('woff'),url(icomoon.ttf?it882c) format('truetype'),url(icomoon.svg?it882c#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" icon-"],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-play:before{content:"\e600"}.icon-stop:before{content:"\e601"}.icon-github:before{content:"\e602"}code[class*=language-],pre[class*=language-]{color:#f8f8f2;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono',monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.important{font-weight:700}.token.entity{cursor:help}.fullPage,body,html{height:100%;width:100%}body{margin:0;font-family:Open Sans,sans-serif;color:#bbb;background:#222}a{color:#bbb}a:focus{outline:0;color:#ff69b4!important}.main{line-height:1.5em;width:50%;padding-top:1.5em;margin:0 auto;font-size:24px}.main canvas{display:block;margin:1em auto}.canvasWrapper{position:relative}.canvasWrapper button{position:absolute;top:50%;left:50%;height:60px;width:60px;margin:-30px;border:0;border-radius:30px;outline:0;font-size:36px;background:rgba(255,255,255,.3);cursor:pointer}.playing .icon-play,.stopped .icon-stop{display:none}.vcent{height:100%;display:inline-block;vertical-align:middle}.sticky nav{position:fixed;top:0;left:0}.sticky .main{margin-top:60px}.splash{position:relative;overflow:hidden;font-size:0;text-align:center;background:#222}.splash canvas{position:absolute;top:0;left:0}header{z-index:1;position:relative;width:20em;display:inline-block;vertical-align:middle;font-size:1rem;color:#fff;background:rgba(0,0,0,.7)}header h1 span{vertical-align:super;font-size:16px}header p{line-height:normal;font-size:1rem}header .downArrow{display:block;font-size:24px;padding-bottom:1em;text-decoration:none;color:#fff}nav{z-index:1;height:60px;line-height:60px;width:100%;font-size:0;background:#bbb;-webkit-box-shadow:0 1px 2px #444;box-shadow:0 1px 2px #444}nav a{text-decoration:none;color:#222}nav ul{margin:0;padding:0 10%;list-style:none;font-size:1rem;text-align:justify}nav ul:after{content:"";display:inline-block;width:100%}nav li{display:inline-block}h2{margin-top:1.5em}.mono,h4{font-family:monospace;font-weight:400}.defaults,.defaults ul{list-style:none;padding-left:0}.defaults li{margin-top:1em}.defaults>li{margin-bottom:1em;padding:1em;background:#272822}.defaults h4{margin:0}.defaults p{margin:1em 0 .5em}pre{font-size:16px}a.question{font-size:18px;font-weight:700;text-decoration:none;color:#6e6e6e}footer{height:96px;line-height:96px;margin-top:5em;text-align:center;background:#111;-webkit-box-shadow:-6px 0 6px #222 inset;box-shadow:-6px 0 6px #222 inset}
\ No newline at end of file
+@font-face{font-family:icomoon;src:url(icomoon.eot?it882c);src:url(icomoon.eot?#iefixit882c) format('embedded-opentype'),url(icomoon.woff?it882c) format('woff'),url(icomoon.ttf?it882c) format('truetype'),url(icomoon.svg?it882c#icomoon) format('svg');font-weight:400;font-style:normal}[class*=" icon-"],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-play:before{content:"\e600"}.icon-stop:before{content:"\e601"}.icon-github:before{content:"\e602"}code[class*=language-],pre[class*=language-]{color:#f8f8f2;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono',monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.important{font-weight:700}.token.entity{cursor:help}.fullPage,body,html{height:100%;width:100%}body{margin:0;font-family:Open Sans,sans-serif;color:#bbb;background:#222}a{color:#bbb}a:focus{outline:0;color:#ff69b4!important}.main{line-height:1.5em;width:50%;padding-top:1.5em;margin:0 auto;font-size:24px}.main canvas{display:block;margin:1em auto}.canvasWrapper{position:relative}.canvasWrapper button{position:absolute;top:50%;left:50%;height:60px;width:60px;margin:-30px;border:0;border-radius:30px;outline:0;font-size:36px;background:rgba(255,255,255,.3);cursor:pointer}.playing .icon-play,.stopped .icon-stop{display:none}.vcent{height:100%;display:inline-block;vertical-align:middle}.sticky nav{position:fixed;top:0;left:0}.sticky .main{margin-top:60px}.splash{position:relative;overflow:hidden;font-size:0;text-align:center;background:#222}.splash canvas{position:absolute;top:0;left:0}header{z-index:1;position:relative;display:inline-block;vertical-align:middle;width:20em;padding:0 2em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:1rem;color:#fff;background:rgba(0,0,0,.7)}header h1 span{vertical-align:super;font-size:16px}header p{line-height:normal;font-size:1rem}header .downArrow{display:block;font-size:24px;padding-bottom:1em;text-decoration:none;color:#fff}nav{z-index:1;height:60px;line-height:60px;width:100%;font-size:0;background:#bbb;-webkit-box-shadow:0 1px 2px #444;box-shadow:0 1px 2px #444}nav a{text-decoration:none;color:#222}nav ul{margin:0;padding:0 10%;list-style:none;font-size:1rem;text-align:justify}nav ul:after{content:"";display:inline-block;width:100%}nav li{display:inline-block}h2{margin-top:1.5em}.mono,h4{font-family:monospace;font-weight:400}.defaults,.defaults ul{list-style:none;padding-left:0}.defaults li{margin-top:1em}.defaults>li{margin-bottom:1em;padding:1em;background:#272822}.defaults h4{margin:0}.defaults p{margin:1em 0 .5em}pre{font-size:16px}a.question{font-size:18px;font-weight:700;text-decoration:none;color:#6e6e6e}footer{height:96px;line-height:96px;margin-top:5em;text-align:center;background:#111;-webkit-box-shadow:-6px 0 6px #222 inset;box-shadow:-6px 0 6px #222 inset}
\ No newline at end of file
diff --git a/terra.demo.min.js b/terra.demo.min.js
index 2a0fa4a..920af9d 100755
--- a/terra.demo.min.js
+++ b/terra.demo.min.js
@@ -1,2 +1,2 @@
-Function.prototype.bind||(Function.prototype.bind=function(e){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var t=Array.prototype.slice.call(arguments,1),n=this;return fNOP=function(){},fBound=function(){return n.apply(this instanceof fNOP&&e?this:e,t.concat(Array.prototype.slice.call(arguments)))},fNOP.prototype=this.prototype,fBound.prototype=new fNOP,fBound}),!function(e,t){"function"==typeof define&&define.amd?define("smoothScroll",t(e)):"object"==typeof exports?module.exports=t(e):e.smoothScroll=t(e)}(this,function(e){"use strict";var t,n={},r=!!document.querySelector&&!!e.addEventListener,i={speed:500,easing:"easeInOutCubic",offset:0,updateURL:!0,callbackBefore:function(){},callbackAfter:function(){}},o=function(e,t,n){if("[object Object]"===Object.prototype.toString.call(e))for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.call(n,e[r],r,e);else for(var i=0,o=e.length;o>i;i++)t.call(n,e[i],i,e)},a=function(e,t){var n={};return o(e,function(t,r){n[r]=e[r]}),o(t,function(e,r){n[r]=t[r]}),n},u=function(e){for(var t,n=String(e),r=n.length,i=-1,o="",a=n.charCodeAt(0);++i=1&&31>=t||127==t||0===i&&t>=48&&57>=t||1===i&&t>=48&&57>=t&&45===a?"\\"+t.toString(16)+" ":t>=128||45===t||95===t||t>=48&&57>=t||t>=65&&90>=t||t>=97&&122>=t?n.charAt(i):"\\"+n.charAt(i)}return o},c=function(e,t){var n;return"easeInQuad"===e&&(n=t*t),"easeOutQuad"===e&&(n=t*(2-t)),"easeInOutQuad"===e&&(n=.5>t?2*t*t:-1+(4-2*t)*t),"easeInCubic"===e&&(n=t*t*t),"easeOutCubic"===e&&(n=--t*t*t+1),"easeInOutCubic"===e&&(n=.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),"easeInQuart"===e&&(n=t*t*t*t),"easeOutQuart"===e&&(n=1- --t*t*t*t),"easeInOutQuart"===e&&(n=.5>t?8*t*t*t*t:1-8*--t*t*t*t),"easeInQuint"===e&&(n=t*t*t*t*t),"easeOutQuint"===e&&(n=1+--t*t*t*t*t),"easeInOutQuint"===e&&(n=.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t),n||t},s=function(e,t,n){var r=0;if(e.offsetParent)do r+=e.offsetTop,e=e.offsetParent;while(e);return r=r-t-n,r>=0?r:0},l=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},f=function(e){return e&&"object"==typeof JSON&&"function"==typeof JSON.parse?JSON.parse(e):{}},p=function(e,t){history.pushState&&(t||"true"===t)&&history.pushState({pos:e.id},"",window.location.pathname+e)};return n.animateScroll=function(t,n,r,o){var g=a(g||i,r||{}),d=f(t?t.getAttribute("data-options"):null);g=a(g,d),n="#"+u(n.substr(1));var h,y,m,v=document.querySelector("[data-scroll-header]"),b=null===v?0:v.offsetHeight+v.offsetTop,w=e.pageYOffset,x=s(document.querySelector(n),b,parseInt(g.offset,10)),E=x-w,j=l(),k=0;t&&"a"===t.tagName.toLowerCase()&&o&&o.preventDefault(),p(n,g.updateURL);var O=function(r,i,o){var a=e.pageYOffset;(r==i||a==i||e.innerHeight+a>=j)&&(clearInterval(o),g.callbackAfter(t,n))},S=function(){k+=16,y=k/parseInt(g.speed,10),y=y>1?1:y,m=w+E*c(g.easing,y),e.scrollTo(0,Math.floor(m)),O(m,x,h)},C=function(){g.callbackBefore(t,n),h=setInterval(S,16)};0===e.pageYOffset&&e.scrollTo(0,0),C()},n.init=function(e){if(r){t=a(i,e||{});var u=document.querySelectorAll("[data-scroll]");o(u,function(e){e.addEventListener("click",n.animateScroll.bind(null,e,e.hash,t),!1)})}},n}),self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{};var Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content)):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(d instanceof r)){s.lastIndex=0;var h=s.exec(d);if(h){f&&(p=h[1].length);var y=h.index-1+p,h=h[0].slice(p),m=h.length,v=y+m,b=d.slice(0,y+1),w=d.slice(v+1),x=[g,1];b&&x.push(b);var E=new r(a,l?t.tokenize(h,l):h);x.push(E),w&&x.push(w),Array.prototype.splice.apply(i,x)}}}}}return i},hooks:{all:{},add:function(e,n){var r=t.hooks.all;r[e]=r[e]||[],r[e].push(n)},run:function(e,n){var r=t.hooks.all[e];if(r&&r.length)for(var i,o=0;i=r[o++];)i(n)}}},n=t.Token=function(e,t){this.type=e,this.content=t};if(n.stringify=function(e,r,i){if("string"==typeof e)return e;if("[object Array]"==Object.prototype.toString.call(e))return e.map(function(t){return n.stringify(t,r,e)}).join("");var o={type:e.type,content:n.stringify(e.content,r,i),tag:"span",classes:["token",e.type],attributes:{},language:r,parent:i};"comment"==o.type&&(o.attributes.spellcheck="true"),t.hooks.run("wrap",o);var a="";for(var u in o.attributes)a+=u+'="'+(o.attributes[u]||"")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'" '+a+">"+o.content+""+o.tag+">"},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),r=n.language,i=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(i,t.languages[r])))),self.close()},!1),self.Prism):self.Prism;var r=document.getElementsByTagName("script");return r=r[r.length-1],r&&(t.filename=r.src,document.addEventListener&&!r.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),Prism.languages.markup={comment://g,prolog:/<\?.+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/gi,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/gi,inside:{punctuation:/=|>|"/g}},punctuation:/\/?>/g,"attr-name":{pattern:/[\w:-]+/g,inside:{namespace:/^[\w-]+?:/}}}},entity:/\?[\da-z]{1,8};/gi},Prism.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//g,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*?(\r?\n|$)/g,lookbehind:!0}],string:/("|')(\\?.)*?\1/g,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/gi,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/g,"boolean":/\b(true|false)\b/g,"function":{pattern:/[a-z0-9_]+\(/gi,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|\~|\^|\%/g,ignore:/&(lt|gt|amp);/gi,punctuation:/[{}[\];(),.:]/g},Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/g,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?|NaN|-?Infinity)\b/g}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/g,lookbehind:!0}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/