-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcanvasLife-14.min.html
1 lines (1 loc) · 53.2 KB
/
canvasLife-14.min.html
1
<!doctype html><html lang="de" id="*"><head><link href="data:image/x-icon;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASMeHIEnCi49JwouPQL+PEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////////////w////8P////D///4wh//+OIf//hyH//8Yh//hgBw/4IAYP+AAED/gAAA//wAH//4AD//AAA//wAAAf8cAAH//ABx//gAf//wgB//4eYf/+HmH//hxh//4cP////D////w////8P/////////////////8=" rel="icon" type="image/x-icon" /><link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAClUExURYrDSkuvT0anSzSIOEquTovDSS18MUdwTEaaRix8MS18MYvDSEmtTix8MH2/S3K7S4vDSV+tR1iyTix9MC18MS5/MUqvTkqvT0irTEuvT0yvUIvDSDCGNYvCSW25TIvDSmC0TIvDSYzCSWC2TYvDSTaNO42/TEyvTjqTQC58MovDSHi9SkyvTy58Msnmv7jdnMXhpWq8Zdrtya3YlFKyT4rKhJnRkKqRb9UAAAAsdFJOU/7I/FPuta0ABvTU5Z/nQUnRHi8ovo7W9bNuhJI2Wqbd4Ypp/e65FNnvcoHt6tqe7wAAAUFJREFUOMu100lXg0AQBOAGBmogEJYA2Z/ZjFsN2fP/f5qH6EOTMV60z9+h6nW34JeRvwb5eL6+CzIR/y4QkQc7yOM4B+CLTO2gJh0AXfGBSRDkN6BPKgDoLIDEmPIGDMm+BpCNoY0x0W3IwuFID2ciThya0LO00A5JHo+k62lrzZTcHQ47krUGRvWwBS9JpYFHcrPdHkhykMZk3YLQmLCM3BZQOY6TtqAKyyoISe42mx35Ueg6Q4/tKGtIl9w3PDcnHt+6gP4KPKXi2CWbhvt9w6WI70un2wJFUo36JHnen6h02vnc6wU8karAxL0kcCugWH0DxWBQALl5VkuZDcIAQJpl3auQkyjQmMoUkX0XgTE9AKtXJMYkFhCaBEAqPiLruuEFHrAQ6aBXlpOfjvZBRO5etS+S3QXr+Tj/59+8nXfZxzPMesF2SAAAAABJRU5ErkJggg==" sizes="32x32" /><link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAMAAADVRocKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABvUExURVilSIvDSS18MUuuTi18MYvDSTqSPmCrRTqRPUqvT0uuT0yvTovDSWm5TIvESS18MFCxTmy7UIvDSSx8MTqSPC5+Mi18MUyvUIvDSi58MsXhpd3tyVa0VfH56USkSKjXl37EdZXOiLjdpcblvjeNO4Oq8yQAAAAXdFJOUwLs1aerrksXLelwynk+T4iQ/svtXGr5xNa4qwAAA/1JREFUaN7tWVeyqkAUJM8AkjMiIN79r/ERJgNKkK9nf1lUeZqTA5L0ww8//GcAtzCXQ/cy+Y6cj9DBRe+P5PcM1xDoOcE1VpIpwSUqACo/Dy/RIL9YAymkBLevmARC/sGNyJe/EKdQzXqoYDFMvxBERjbBhAsqOF8wT4ZhglkcMQ6AhnHMWj4hyCwx1WSqplIURaodoTApgc08djkFvGJCBPcTUPmZKSYz9rBRYChf02C0EXaxQgiKeDeBSglUMRUQAaDyC21/FqwQONQH8BSBZC2byKV16JwGkhQTN8xSDcx8kBzKNcsUbAQse0y0QLUGDu1MFE0Ckasnr8Z2VqFSMRguhlFxIg84T5hG7117+DXJD8an9R92ADxf82wb+aMKgoC4vy4iLzHAd6rqIurkfFlly94c5jcGJFo1qvb5bCuOgUuS2Ff9A/7AVaN6liNajsGnMWcLD/YSNGW5xOCItjQ+OFXTNGPJRG1JUC0ZyVqsXTNMPcR7p0BZPjkVxo7nqNkmggTnPlEirpEHqPyyEULJts1sucXOQOuX4sUQwkQrso8EAt1bC6WFiD/8x27NRDzs95mhzAhq/M8nJWhnb+1bhgMdy7I+TUzeOkHVrVpozxyGVFA0T9PGckzFYIam2mX1mQ5Kqngo36GWMgR9pWjKrmnndj8zAUfZBpypdPEG+eapWlozJlqLzFMENhH/ejy6iaNtuob2tUo9RUBqWC//8RgjtLsPwM7up+0D6wIg+ejg9xzkP+5Dxt0nTDoE/OYPtrQ4oPa1y7S4ySXLRoJX/wPJvzcZnTPk2yDYHUbj8ON+6KDSaKq+b1NXdgNBb5cKE3QMwcBBFrjwvRbAXAmW56sb7F7xGgQ5s/9vWqL9T2HfIIKWFCI3FBjcjavHVCgNlX9SvRgFUI+/7VCBl+aDOWf1fN079P61cElC/tiqgTl1TlCvjnaKtMQgb1yeyBKerDDUzObhbr3FOPT/pPODol6Wz642t63nKn9hPOh7c83M1wEZ37WlY8ynW8+02ZjMajruexNFgDYE20oiYbcB4eZbkmFZ3HSnjRcDA1rqtEPlY3CNDTxhp11XD0P9wCVmGMcUyPqSndLSUxvOoPnw/hHgLM2PIJFxpit743Bh8OEIJG7LjA7vIXE031NlfE3Qzi3io/ylRVvH1wRmDIwOEhARUCDQxTnzIAH+eyoeN2WBID1IkC6cCqaKAPhB9qgPsBvpxgN0Wm0gHfaPxik6RygkCl2ZvfzifYhbuXYyDDrQq+JN6Fnx6Ibo1L4PIFg6v+OWYiRe/L3PIWznvfoLSH7JV5zwagJ9Y1s/DPfqLyBUBfmqD2mIQXakq+CGcj+gA+mHH374z/APYlbUFmy8g4MAAAAASUVORK5CYII=" sizes="96x96" /><link rel="apple-touch-icon" sizes="180x180" href="data:image/png;base64,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" /><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><meta property="og:type" content="website" /><meta property="og:title" content="Cellular Automata" /><meta property="og:description" content="Ein persönlicher Kritzelblog über zelluläre Automaten, DLAs, Turingmaschinen und den ganzen Rest" /><meta property="og:url" content="http://cellular-automata.blog/" /><meta property="og:site_name" content="Cellular Automata" /><meta property="og:image" content="data:image/png;base64,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" /><meta property="og:image:width" content="200" /><meta property="og:image:height" content="200" /><meta property="og:locale" content="de_DE" /><meta name="twitter:site" content="@CellAutoBlog" /><style>*{text-align:center;font-family:sans-serif;font-size:small;margin-left:auto;margin-right:auto}canvas{cursor:crosshair;border:2px solid black}img.icon{vertical-align:text-bottom;padding-right:2px}table{border-collapse:collapse}tr,td{text-align:left}fieldset{width:450px}input[type=range]{width:200px}input[type=number]{width:50px}legend:hover{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA1ElEQVQ4T62TzRGCMBCF3+OAFxzpQDpQO5B6PFmJJ+uBDsQOKAEHLnhgnZCJw08SmcE9Zvd9m+y+ECuDPn1yb44qX16iwlXnBGhxl2lhkLogVoARk4yVXEQqF2QGSG4SY1M/CCbDawukRLs9lVdWw/MRoBeHTUaif/s0RFDgHaVDyBfwS2xgU4h3C0s2/D+AHl6TEzj4OgvwRBudzRzmQ/RApmLVyLpGhnUBcj9e47izyTmNRHY5wJ0ulJdIcLa50WtlDVFOtIutTxhee9VnWuIBVfMBzk5jEWJSWt4AAAAASUVORK5CYII=');background-repeat:no-repeat;padding-left:16px;cursor:pointer}</style><title>canvasLife</title></head><body id="body"><fieldset><legend id="canvasLegend" name="canvasLegend" title="Zeigt/Versteckt die Zeichenfläche">Zeichenfläche</legend> <canvas id="canvas" name="canvas" width="300" height="300">Ihr Browser ist veraltet. Bitte installieren Sie eine aktuelle Version des Browsers.</canvas><div id="mouseXY"></div></fieldset><fieldset><legend id="controlsLegend" name="controlsLegend" title="Zeigt/Versteckt die Einstellungen">Einstellungen</legend><div id="controls"><div> <label for="probabilityRange">Gewichtete Wahrscheinlichkeit:</label> <input id="probabilityRange" name="probabilityRange" type="range" min="0" max="100" value="50" step="1" placeholder="Wahrscheinlichkeit für eine Zelle, dass sie in das Feld gelangt (0-100%, Standard: 50%)" title="Wahrscheinlichkeit für eine Zelle, dass sie in das Feld gelangt (0-100%, Standard: 50%)" /> <span id="probabilityRangeTextContent">50%</span></div><div> <label for="size">Seitengröße:</label> <input id="size" name="size" type="number" min="10" max="1000" maxlength="4" value="300" step="1" placeholder="Seitengröße der Zeichenfläche in Pixel (10-1000 px, Standard: 300 px)" title="Seitengröße der Zeichenfläche in Pixel (10-1000 px, Standard: 300 px)" /> in Pixel • <label for="blocksize">Blockgröße:</label> <input id="blocksize" name="blocksize" type="number" min="1" max="10" maxlength="2" value="1" step="1" placeholder="Vergrößerungsfaktor der Zellen in Pixel (1-10 px, Standard: 1 px)" title="Vergrößerungsfaktor der Zellen in Pixel (1-10 px, Standard: 1 px)" /> in Pixel</div><div> <input id="bounds" name="bounds" type="checkbox" checked="checked" placeholder="Toroidale Welt" title="Toroidale Welt" /> <label for="bounds">Toroidale Welt</label> <button id="showcolor" name="showcolor" title="Öffnet das Farben-Auswahlfeld" value="showcolor"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAByklEQVQ4T6WTP0xTURTGf+fZ18KCpA4OxkA1LmBC4+bSFnVi8c9iDAOUAcNglITRQRJHBxoSCA62m5vi4qb9o8a1JMDiUkyUEEJp0qh5r/IOeS195dECid7x3vv9znfP+a7wn0s66TVLP0boNqpRoBehCFrCqb2TYSqHNW0AzZtzYDx2L63/uUq6PEky/JKB7lVQrWDotMRqmSbEB9B8MAMy1jyc+THPm8oD7vW+5sWFR63ConclZi+7Gx5APwUSOGeyz6vXWP0bJtXzhR37Mq/KD5kIL3F+u8raxxEGb7zn3MWNkiSsiB9wUP3+7i1+q0mq5zOXAlWvaiE9xbevCa5czxFLLiJxq1685SAfygHxrb1ufmnAJ3Yv7nzvY+3DCIM3XQelFUnYboN9AK2X++lAl0C444AajsRJNhvZcpALFtnUIRZq0AU8DR2TECcl8dqTtinUJ1BmjAUbIgaMmu0AYVpi1lzHHGjBHEeNtE+luoKwjMo4Qh+Hxtc5B+4zRIY8iGNFZJiSFoJ3UHkLOitx+9mxSdSsGUUkh8jZRrMalr10nvSEJvUAkvE5cQ+VDdSKnvoXPFDdNu6s+xEpsmdljop9OfjXX70P+AipEYwWPusAAAAASUVORK5CYII=" alt="palette-logo" />Farben</button> <button id="showzoom" name="showzoom" title="Öffnet das Zoom-Auswahlfeld" value="showzoom"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHeSURBVDiNpZK9a1NRGMZ/51zzYdtAotIhkVQoLkVbkdAiDrpoBRGpStFMyWDASf+ETA5ugihIFoUgKPgBgYAdIqg4SZIhUWxtFaJSrCapSWNuvPd1SME0psHiMx3e5zw/3udw4D+lugeRSGS/1vq8iIyKSFlrnQ4Gg6l4PG73BcRiMUer1bqhtnsvEpxUyhtAGlWklIXvSznDMM4kEomlTQHRaPSm8k9c0lNRHA4nXjfUW8JaC+zFl0j23rzZbIaSyeRqJ8BYDx9kwHfbOHJZBXxuxnZpmpYQ8Bj4hzTLzt3IWnmn8eOzlcvlMp0ADaCUOqtGDikMJ9WfNq9KFh8qQm7Z4l3ZQgC99yjAue4KGsC27RHlGQagZoJ0XKiZ64ehYYA9PQFa6ypmvdcj/1Hbr/QEiEjGLmX75qXtZ7rnGqBWqz1iZSFrz//lt8OVT1iFlKm1vtrtGQDFYlFCodBT+0vhFPVvPgZ3oFweaFSQxRfYr5Om+tUwLctayefzzzsBG35iOBz2uVyuK8AFYBQoA2kRuWbB4Y9fV28NurbNpR/eP96372aanpm9MzV9Wk7MzD7bUOFf9f5t4fHYvvHJasM8Nj5xwL/wppDSW91i7smDk94B910s+/pWsz31GzM9uzYUjs4GAAAAAElFTkSuQmCC" alt="zoom-logo" />Zoom</button> <button id="showrandomization" name="showrandomization" title="Öffnet das Feld für die Randomisierung der Simulation" value="showrandomization"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAH4SURBVDiNxZNPSNNhGMc/v9/GNt1hLN1Wsq2M1WEQ0WaEBCHsUFCXDtGpJIiCboEglNIQAiG6dAiK6I8EZtJFLE+BkKXVNgUPFbrmWg2b+9P+/Fyz9ns7jK3MjYIOPcfv8zyf93m+7/vCP4bUKOEXftkeiHUCfOxwTPslv/pXgBuBM04N4hyIbpA2V1SxDNK9MtL1sx03P9QFPIve9UYzc5e/fle6AD1AV/tpACYjt6plJYPWOOm0ei8caDsRAtBWM4pSfOxq2W9bKSxmEqtLCKHqp2PDP0+S5JK1uX3VpHMcXFqMegDrOsBUeNSmkTU4N7nNLksnslZa+5R7k5SArS27LclUQf8iNKUPxx8gEJZqXw0AUFbLRJLzxNJvsZvdup02T1s+X2JoYoiskq5rtvy7oJG02M1ujnv6WEgEmQ3PkFXS9B69hrN1x58BJ/cNYjJYuDPTgxACVVRubyUXJ6MkcLS66gPMzVs4tuciz9+PspwLk8hH1xXefjqIQWfkSvdDmnTGml7z4Jtayuq0TaaFxCsEou6+6fxnLg2forhWSG2YQCmlfPdf9000aoaKye/ic09kWeOrahteYv+Yby+S6BdwZFvLLikezzMfCQpgXFXlgUe9s4Ff6xv+hYHxw17P9kM92S9FdezlyNWR88FQw9H+a/wAHAi9+H2TYPIAAAAASUVORK5CYII=" alt="dice-logo" />Randomisierung</button></div><div id="randomization-buttonbar"><div id="panspermie"> <label for="panspermieRange">Panspermie:</label> <input id="panspermieRange" name="panspermieRange" type="range" min="1" max="7" step="1" value="1" placeholder="Wahrscheinlichkeit, dass nach einer bestimmten Anzahl von Generation sich zufällig eine neue Zelle bildet" title="Wahrscheinlichkeit, dass nach einer bestimmten Anzahl von Generation sich zufällig eine neue Zelle bildet" /> <span id="panspermieRangeTextContent">0%</span></div><div id="panzootie"> <label for="panzootieRange">Panzootie:</label> <input id="panzootieRange" name="panzootieRange" type="range" min="0" max="7" step="1" value="0" placeholder="Wahrscheinlichkeit, dass nach einer bestimmten Anzahl von Generation sich zufällig eine existente Zelle verschwindet" title="Wahrscheinlichkeit, dass nach einer bestimmten Anzahl von Generation sich zufällig eine existente Zelle verschwindet" /> <span id="panzootieRangeTextContent">0%</span></div><div id="mutation"> <label for="mutationRange">Mutation:</label> <input id="mutationRange" name="mutationRange" type="range" min="0" max="7" step="1" value="0" placeholder="Wahrscheinlichkeit, dass nach einer bestimmten Anzahl von Generation sich zufällig eine neue Zelle bildet bzw. eine existente Zelle verschwindet. Das vermeintliche Zellenfeld wird invertiert." title="Wahrscheinlichkeit, dass nach einer bestimmten Anzahl von Generation sich zufällig eine neue Zelle bildet bzw. eine existente Zelle verschwindet. Das vermeintliche Zellenfeld wird invertiert." /> <span id="mutationRangeTextContent">0%</span></div></div><div> <button id="erase" name="erase" title="Löscht alle Zellen im Simulationsfeld" value="erase"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAGxSURBVDiNpZPLa1NBGMV/373TW4soYsQ0PleCNS2lcqHZ1E13unYhSFcq+E+I4p8gulM31U33PhYuC10EJNhYtYKgolYbvOZNZiafC02atNEqPbvvzDlnDvOAHUIGkcViMaJRnhKVFICKlhjZ+zybzbb+GlAoFHYPu/o1VbkK7NmkLQN3apibcRzXtwS8LSwetDZ4BjK+TesXJmjNnjh95htA0GGtDW//gxlgwvvoVl+Dl/l8RnAfewO3gXeOwxO53FoAEEhr8j/MAKExTPInU62c0KhWunOzXsc2m30aVRTAAODC14QKQOnLJx7P30UQzs5dxjvHkwf3kDDg3Nwl9h1IA7QRs9xtcHJ6+p3AI4APq69oe4/3jmR9je+lr7TbHm8t71ffACDKwqk4/rzRAAgdF5zhR2r0ENGuEfaPZkgfPY6qkj5yjKS0Tiqd+aX1XOn4+h7SSn5pGch25qcP72OGhpg9f7FXVhyLc93r7jtEG9kZVG8ANKoVquWESpLQqFV/byfXbWRnej0D/8JKfkkBvHeICEEQAjAW57bozWYCQJV5EYbDcGNZhOYg7Y7xE/TZnJhk/EWEAAAAAElFTkSuQmCC" alt="skull-logo" />Auslöschen</button> <button id="invert" name="invert" title="Invertiert das Simulationsfeld" value="invert"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAE1SURBVDiNxZFBTsJQFEXPJxaYEyKIkOiExFiQgimCkTJUEye6Ad2Dm3DuFtyF2GgiNVBNcKAzRdPKJqQOsA3lq3VivKP37v/35t334L8h/OL45PRx6LjFsef9KIgJwfZW4/Jwf7cFMOc/PDtu0YsQA7R0Db2yuun3gcG0OJmI09TKFBYyeHi8OCOu7wbUKyrteg0gJhn4SCgKRwd7ZNKpgFvO5xBC0NBKcqRZYqNaCokBTMvmvNujf/8QbbC0mAv1F5ZNx+oDMHTfJAMpAlO76Fh9TMsO+vexvGRpgifHnYi7vZAYIJ9NR0/QtQcAmDe3IT6TTqGX1WiDZm2NpqaSjMd5dUd4QlDIzrOurqAocuKAEULQ1qsYugYwOdkXZ/vE2C+CHewYjSujXv1OMIuz3378e3wAB49Th6oZCrcAAAAASUVORK5CYII=" alt="invert-logo" />Invertieren</button> <input id="infusion" name="infusion" type="checkbox" checked="checked" placeholder="Zellinfusion" title="Zellinfusion" /> <label for="infusion">Zellinfusion</label></div><div id="color-buttonbar"> <label for="foregroundcolor">Zeichenfarbe:</label> <input id="foregroundcolor" name="foregroundcolor" type="color" title="Wählt die Zeichenfarbe" value="#000000" /> <label for="backgroundcolor">Hintergrundfarbe:</label> <input id="backgroundcolor" name="backgroundcolor" type="color" title="Wählt die Hintergrundfarbe" value="#ffffff" /> <label for="bordercolor">Randfarbe:</label> <input id="bordercolor" name="bordercolor" type="color" title="Wählt die Randfarbe" value="#000000" /></div><div> <button id="initialize" name="initialize" title="Initialisiert die Simulation neu" value="initialize"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABTklEQVQ4T6WTzVECQRCF++1Q5VHNwIP83PhJQEhA2QxAWG/E4BKDN8GCDMYMhAR0ucnPwQzgahW7z5qtGgSBBYs5zKGr++ue128gJx4k1XeudVmJ4v3sdrgvbwvwnNYFAD1ACutFpAQk6w9TN1iPbwBe0rpGBz0KhxKKn1pKnLxMSUGU+BDcIGK9MXX7FrICmM6Ogw+SbW/i+rtG7mS0D+Axili0k6wA3YwOCFl4Y7ecqEtWD4Q49ybVosn7BWRfyZAVb+YODgkLhbfmuBrXxpdR2wTVNy/rX+7CAt6fPo0GLLVycTdzelf6IjzD3DY7BiClVm61kZ0AQ+6e8oQYkNGBAPPmuFo5KKKIWLG31gjCb0zu2v9eoymwRhKRgRM6PpbhyMSZUvlIRcYb5b1Gsh1jQ0H6AuQ3piBHEaWWaOW/Y5v1mliSNxJ/4zE//Qcon7IRiraB0wAAAABJRU5ErkJggg==" alt="initialize-logo" />Initialisieren</button> <button id="restart" name="restart" title="Startet die Simulation neu" value="restart"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAflBMVEUAAACAr0B4t0B6tUB7skF8s0B6skJ8s0B7tEJ8s0J8s0J7skJ7s0F8s0J7skF8s0F8skF8s0F7skF7s0J8skF7s0J8s0KCtkqIulKOvluUwmOgyHSmzHymzH2s0IWy1I2315a42JW+2p2+2p7E3qbK4q/Q5rfT57rW6sDX6sEXqToCAAAAFnRSTlMAECAwT1Bgb3B/gJ+gr7C/wNDf4O/wiNr7bgAAAIJJREFUGBltwdkCgUAAhtG/SWSQLPNNlrJE8v4vaERddY7Gmcl8MYs1sHRWkX4y/vZGX5bBWoGBw/sBeA+ppCkcXzVQVZBJslBVHiga2Epawu1E4FtwklIo7wRlDbmkGHheC39uCrAKMvCXpq0LcJGCyNFL1DEbOi5RL812LreRxnwA4W8NWSJfkiIAAAAASUVORK5CYII=" alt="restart-logo" />Restart</button> <button id="stop" name="stop" title="Stoppt die Simulation" value="stop"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAElBMVEUAAAD/PQD/PAD/PAD/OwD/PQCJVXgIAAAABXRSTlMAFUBVVpDycQwAAAAbSURBVAjXY2AgCggpKSmCGa6hocGkM+DaCQIAYlMIe7OifTkAAAAASUVORK5CYII=" alt="stop-logo" />Stop</button> <button id="start" name="start" title="Führt die Simulation weiter aus" value="start" disabled="disabled"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAGFBMVEUAAAAgj/8gl/MglvQglfQglvIhlfIhlvOwGrMfAAAAB3RSTlMAEEBfYN/gc1Jf9gAAAChJREFUCNdjYCAKCMAYqgZQhnoplKVeDmWpl5c5QBhQmkHNAV07QQAAbuAFHNp8B8kAAAAASUVORK5CYII=" alt="start-logo" />Start</button> <button id="stepone" name="stepone" title="Führt die Simulation einen Schritt weiter aus" value="stepone" disabled="disabled"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAm0lEQVQ4T2NkoBAwYtOvMP27woNMzgfEmI1hAEgzw7/f5xkYGDY8yOZLJGQIdhdM+7SAkYEx/v///wsIGYLVAJCtCkQagtMAYg3BawAxhhA0ANUQhsYH2bwNyAFLmgEM/xc+yOJLIMkAeGBi0QwyiLhAxKEZrwGEbIZ5A39CwmMzTgNASZnx/+8L/0FJGS3AsCVr6mcmQpkHXR4AZ05hEcobL84AAAAASUVORK5CYII=" alt="stepone-logo" />+1</button></div><div id="zoom-buttonbar"> <button id="zoomout" name="zoomout" title="Verkleinert das Zeichenfeld" value="zoomout" disabled="disabled"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAG7SURBVDiNpZI/aFNRGMV/976+PFotNEU6KCRi7aAgggRDcekiySKt1VbNlAwGdXJxTxeHdhWnjAaxix0KNS4dqjjJM0OzVNvliSDRJja1JCH3c0iHJO/5/4zf+cM5lwv/CdV/SKfT57TWN0VkXER2tdZrkUhkNZfLmV8GZLNZu9VqPVKDI7eJXFRq5ARyUEM8F77uvLMsazafz+/8NCCTyTxWx8/f1fEMWHaPyGy/RtynW81GI1YoFL51c/rQfIGh8B0dT/vMAPrUJVR0ciIUCj3wcQBKqWsqOqmwQkEzO8KJKYDr/fcBAGNM1BoeA2DujM3ZY7pHtLDRgKNjACcDA7TWNZr7ALzx2pQrbX+FDl8NDBCRdfHce9bpKbw9g7fn94vnAqz7pgHU6/XnVN67ZsvHd8zVj7Q3V5ta64f9nAVQLpclFou9NJ82r7D/JcyRUZQzDAdVZPsV5m2hSet7wxhTKZVKG90BPT8xlUqFHce5D9wCxoFdYE1EFpVSiQ+fa0uD9kCxuLKcDKz6OySvzj+LJ6bl8sxc8NY/QWJm/kU8MS3J2Rt5OHzEv0FxZTkZHnKeaJvFf27RjR/o4JrIIcb/wgAAAABJRU5ErkJggg==" alt="zoom-out-logo" />Verkleinern</button> <button id="zoomactualsize" name="zoomactualsize" title="Setzt das Zeichenfeld auf Standardgröße" value="zoomactualsize"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHrSURBVDiNpZLPaxNBHMXfd2bRaJOlqZgIhSIU2xQiMaF486IgniQIARFKNubi1f/Buyc1iAm5eShUVEL1VFAR1GIDLTYVgjmoBMWNSW222d3Mt4c0NT/UKj4YGL7z3ofHzAD/KRocpNPpMaXUFSI6vTt6RUT3s9msuS/AMIwEyQP3eDyqIxDqGL6UgE9v69x2rubz+YXfApLJ5DkxMvZUnbku4Q32mzaroOc3XWo1zudyuaXeM9H1SClvq9nUUBgA2HcMPGtozHxrsLXYrR5R3uAUjk4jdIQwF9b2DImQRDQowIEZwBecMQwjPAQQQkzAGwAAlL4x9IPApJ8w6SdU6gyt27PT7vgQQClVg93sq12zOqtP9haYue81ul3fUO3DD1jfvXxoFA/ft/cMGyZ3Nk0TqFU2dV1f7gVIACgWi270VESi8fEsxmNoOBKWC1gu0GoDLdsGvb4LaZk3MpnM0hAAAOLx+Iv65/IUVVdPskcHHfaDuA2qrkEs50BmpaKU8kzEYo83Vlbsbm7wJ1IqlbrMzNd6fyKAO47jlMym83LLcSyvap0oFAq1XwH+qAuXEhcb2+4DTYj6SFtMLy7OfxX7x37qycL8I59Hm7Ndd3Rb42LfHfytyuvvVsPhSFlqslxeX3v2r/kh7QCc7702g4JiowAAAABJRU5ErkJggg==" alt="zoom-actual-size-logo" />Standard</button> <button id="zoomin" name="zoomin" title="Vergrößert das Zeichenfeld" value="zoomin"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHaSURBVDiNpZI9bFJRGIafc24v11aJxTQd1ICxaYJNjIkhksbFxcBiWiutygSDRDcXd7o41NU4MUqMXezQpOLSAY0uBhlgqbbLVRNFC0htADnH4TaUXtFUfaeT877f833nB/5Twr2RSCROSymvaa3HtNabUsoVv9+/nE6n1R8BqVTKbLfb98Xg8A3854QYPoberqHtAnzdeGMYxkwmk9n4LSCZTD4QR8/ckuEkGOaekFp/gS48Wms1m6FsNlvv9eRO8VmGfDdlONEtnj1lctwrndDJ84jA5LjH47njnkACCCGuiMCkwPB0jYkRyeEDPcHxCwAxN2AAQCkVMLyj3c4TI07nWNAkFoT5fBMOjQKc6AuQUtZobQHw0u5QrnSIBU1effiBXddO0vGrfY+gtV5VdgEA+5ui9Nl5Mbuuu2vt+Kt9AY1G4wmVtwW1tuvP55u7xdX3dErLLSnlXTfAACiXyzoUCj1TH0uX2Pri4+ARhOWF7Sp6/TnqdbZF+3tTKVUpFov5XsCenxiPx32WZd0GrgNjwCaworVeEEJE3n2q3Rs0B3K5pcWoe5J9KXp57nE4MqUvTs/+chf7VmR67mk4MqWjM1czsHOJf6Pc0mLUN2Q9lCYL/zxFr34COy6ta0TizcsAAAAASUVORK5CYII=" alt="zoom-in-logo" />Vergrößern</button></div><div> <button id="showCanvas" name="showCanvas" title="Zeigt/Versteckt die Zeichenfläche an" value="showCanvas"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAZlBMVEUAAAD/gAD0egD1ewD1ewD0fAD0fACUKgmkLgmlOQemOQesPgatPQW4SAW6Nwq/NgzDOgvEUwTJRAnMRwnTTwfXVAbcZwLjbAHkZgPnagPucgH1fAD1hA33kyX3nDH7w2/7yXr/+cReT/1xAAAAB3RSTlMAEDCfoL/AM/GMEAAAAGJJREFUGBkFwTEOAjEQBDDvKFDS8v/nUQJSTuguG2wAAAAASioAeveQJwBeHQGoW0SAE6kg4HpP1loI+JiXtTYCs/n+jobgmujTsTEwB5U96rwz8ACAaABoJQmAXhsAAACAP2XWJaKlUMQPAAAAAElFTkSuQmCC" alt="showcanvas-logo" />Zeichenfläche an/aus</button> <button id="showControls" name="showControls" title="Zeigt/Versteckt die Einstellungen" value="showControls"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAclBMVEUAAABggI9AWGBgeopgfIthe4xFWmJgfYpEWWRgfYtgfItgfIpFWWNgfItgfIpgfYtgfItgfYpFWmRFWWNgfYtgfYpgfItgfYtgfIpJX2pIX2lLYWxFWmZKYm5LYWxFWmRQaXVSa3dVb3xWcHtZc4FgfYsrX046AAAAH3RSTlMAECAwQF9gYHBwgJCgoK+wv8DP0NDf4O/w9vf3+/v8F5rcIgAAAI1JREFUGBkFwYlCglAUBcBBXlngbtBmXhfO//9iMwAAAMPhMACAYzIB6F+0zyTNugfHTHnebo9MmWCd5FpV9ZdkwJDcq87nqnsywjo/tWFT33kHLVWvvFWlQbfLb51Wq1Nds+uwT5aqqqol2aIleV6qLs8kPey/xjnLknmbEXQdSWa6DsBHcgQAfWs98A8zVQ4tcmwSSwAAAABJRU5ErkJggg==" alt="showcontrols-logo" />Einstellungen an/aus</button> <button id="showStatistic" name="showStatistic" title="Zeigt/Versteckt die Statistik" value="showStatistic"><img class="icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAOVBMVEUAAACfIK+fKK+aJa+bJK+cJq+bJ6+bJq+bJbGcJ6+cJq+cJrCbJq+cJq+cJ7CcJ6+cJrCbJq+cJ7A7mv+XAAAAEnRSTlMAECAwQFBwgI+QoK+w0N/g7/CkplbAAAAAXklEQVQYGY3BSwLCIBQDwIQXoagUyP0P2wV+WHYGt+QxMjbhUhzgK2GRAQu1E4scYcnCV7Mb+hN/EsokduFHHEfgp705eh/ER5lJJi0saWTIpIUlVYDzPCexiVoDd1yY1AL2JjKu5QAAAABJRU5ErkJggg==" alt="showstatistic-logo" />Statistik an/aus</button></div></div></fieldset><fieldset><legend id="statisticLegend" name="statisticLegend" title="Zeigt/Versteckt die Statistik">Statistik</legend><table id="statistic"><tr><td>Feldgröße:</td><td id="gridSizeTextContent">---</td></tr><tr><td>Zellplätze:</td><td id="maxCellPlacesTextContent">---</td></tr><tr><td>Wahrscheinlichkeit:</td><td id="probabilityCellsTextContent">---</td></tr><tr><td>Lebende Zellen zu Startbeginn:</td><td id="livingCellsStartStateTextContent">---</td></tr><tr><td>Generationen:</td><td id="generationsTextContent">---</td></tr><tr><td>Lebende Zellen:</td><td id="livingCellsTextContent">---</td></tr><tr><td>Zelldichte global:</td><td id="celluarityGlobalTextContent">---</td></tr><tr><td>Zelldichte lebend:</td><td id="celluarityLivingTextContent">---</td></tr><tr><td>Totale lebende Zellen:</td><td id="totalLivingCellsTextContent">---</td></tr><tr><td>Totale sterbende Zellen:</td><td id="totalDyingCellsTextContent">---</td></tr><tr><td>Verhältnis totaler lebender und sterbender Zellen:</td><td id="totalRatioOfLivingAndDyingCellsTextContent">---</td></tr><tr><td>Panspermie:</td><td id="totalPanspermieTextContent">---</td></tr><tr><td>Panzootie:</td><td id="totalPanzootieTextContent">---</td></tr><tr><td>Mutation:</td><td id="totalMutationTextContent">---</td></tr><tr><td>Laufzeit in Millisekunden:</td><td id="runtimeTextContent">---</td></tr><tr><td>Verarbeitete Generationen pro Sekunde:</td><td id="measuredTimeOfGenerationsTextContent">---</td></tr></table></fieldset> <script>"use strict";var canvas=document.getElementById("canvas"),body=document.getElementById("body"),context=canvas.getContext("2d"),controls=document.getElementById("controls"),statistic=document.getElementById("statistic"),elementSize=document.getElementById("size"),elementBlockSize=document.getElementById("blocksize"),elementForegroundColor=document.getElementById("foregroundcolor"),elementBackgroundColor=document.getElementById("backgroundcolor"),elementBorderColor=document.getElementById("bordercolor"),elementCanvasLegend=document.getElementById("canvasLegend"),elementControlsLegend=document.getElementById("controlsLegend"),elementStatisticLegend=document.getElementById("statisticLegend"),elementShowColor=document.getElementById("showcolor"),elementShowZoom=document.getElementById("showzoom"),elementShowRandomization=document.getElementById("showrandomization"),elementErase=document.getElementById("erase"),elementInvert=document.getElementById("invert"),elementInitialize=document.getElementById("initialize"),elementRestart=document.getElementById("restart"),elementStop=document.getElementById("stop"),elementStart=document.getElementById("start"),elementStepOne=document.getElementById("stepone"),elementZoomOut=document.getElementById("zoomout"),elementZoomDefault=document.getElementById("zoomactualsize"),elementZoomIn=document.getElementById("zoomin"),elementShowCanvas=document.getElementById("showCanvas"),elementShowControls=document.getElementById("showControls"),elementShowStatistic=document.getElementById("showStatistic"),elementGenerations=document.getElementById("generationsTextContent"),elementLivingCells=document.getElementById("livingCellsTextContent"),elementCelluarityGlobal=document.getElementById("celluarityGlobalTextContent"),elementCelluarityLiving=document.getElementById("celluarityLivingTextContent"),elementTotalLivingCells=document.getElementById("totalLivingCellsTextContent"),elementTotalDyingCells=document.getElementById("totalDyingCellsTextContent"),elementTotalRatioOfLivingAndDyingCells=document.getElementById("totalRatioOfLivingAndDyingCellsTextContent"),elementTotalPanspermie=document.getElementById("totalPanspermieTextContent"),elementTotalPanzootie=document.getElementById("totalPanzootieTextContent"),elementTotalMutation=document.getElementById("totalMutationTextContent"),elementRuntime=document.getElementById("runtimeTextContent"),elementMeasuredTimeOfGenerations=document.getElementById("measuredTimeOfGenerationsTextContent"),elementProbabilityRange=document.getElementById("probabilityRange"),elementProbabilityRangeText=document.getElementById("probabilityRangeTextContent"),elementProbabilityCellText=document.getElementById("probabilityCellsTextContent"),elementBounds=document.getElementById("bounds"),elementInfusion=document.getElementById("infusion"),elementGridSizeText=document.getElementById("gridSizeTextContent"),elementMaxCellPlacesText=document.getElementById("maxCellPlacesTextContent"),elementColorButtonBar=document.getElementById("color-buttonbar"),elementZoomButtonBar=document.getElementById("zoom-buttonbar"),elementRandomizationButtonBar=document.getElementById("randomization-buttonbar"),elementPanspermieRange=document.getElementById("panspermieRange"),elementPanzootieRange=document.getElementById("panzootieRange"),elementMutationRange=document.getElementById("mutationRange"),elementPanspermieRangeText=document.getElementById("panspermieRangeTextContent"),elementPanzootieRangeText=document.getElementById("panzootieRangeTextContent"),elementMutationRangeText=document.getElementById("mutationRangeTextContent"),elementMouseXY=document.getElementById("mouseXY");var imageArrowUpInHtml="<img class='icon' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAIhAAACIQBDVcC+gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEcSURBVDiNY2CgJbA8Vsipd7GEG58aJlwSBufzVL+yMVxl+P33msH5PFVc6hixCWqfLVRh/s+wn4GBQQYq9PgvI4PTVeP+OwQNMDxXLP/337+jDAwM0mhSTxn+MtteMu+5j9ML2lcb2P7++7cKi2YGBgYGaQbmvxuNz6Rx4TSA+fvHbgYGBjNs3oIC3T8MXFOxG/C/gYmBgSEaj2aIMgbGYMtjhZwwPtZA1DuRK8PAwvIYWewf4z/9K8YTL6GrxRqNQt+FXzAwMPxFUfj73ztsarEacMCx4Q8DA8MbZLG/vH8/EG0AFDyHMf4zMHy6qj3tC2kGMCIMYGRgeIpLGR4X/D8JsZyB4T/j/0N4XIobGJwvENC9VCFIlmZiAQDKrlFzPiczSwAAAABJRU5ErkJggg==' />",imageArrowDownInHtml="<img class='icon' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAIhAAACIQBDVcC+gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEZSURBVDiNtZFfKwRRGMZ/Z0ax+RNSssk9sal1saPZUPKn+CLuXfsCPogP4IbUhuyI9mZrwo0LbeLCXtDS7pw5x43JzNqDKZ6rt+c8z6+398B/6tSdGSotzg5+l7FMD6XC9G4YqrpoBvXjwtROaoAQuhiNWlhuagAw/knTE6kAGgQwGjOyqQBH+fwAYMesvrLjZH4NsLpfv1w+kC8jnbIiGsqOk2nxXAOGTet+6HHB87MCVGKDec97A/Z/KKNhLyonAADNhr0F+Oa2OO9v9WzHrQRgtVptdFlyBbjtUL+SSm7MVSqBEQDgnt3cC6XWgFrMvguF2Fy+uH5qz4t2I9JJcXJMSfsQtNSS9aVL/8GUNeogl+s1/f+f6R1os1Hp7Ce8cgAAAABJRU5ErkJggg==' />",imageArrowNoInHtml="<img class='icon' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAEnQAABJ0BfDRroQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAkSURBVDiNY2AYBcMAMDIwMDAwrD6wmizdoQ6hTNR0zSgYsgAAnZMDBMwLxqsAAAAASUVORK5CYII=' />";var gridWidth=findGetParameter("width"),gridHeight=findGetParameter("height"),drawColor=findGetParameter("color"),bgColor=findGetParameter("backgroundcolor"),probability=findGetParameter("probability"),panspermieRate=0,panspermieNumber=0,panzootieRate=0,panzootieNumber=0,mutationRate=0,mutationNumber=0,randomX=0,randomY=0;if(gridWidth!==null){canvas.setAttribute("width",gridWidth);}else gridWidth=canvas.width;if(gridHeight!==null){canvas.setAttribute("height",gridHeight);}else gridHeight=canvas.height;if(drawColor!==null){canvas.style.borderColor=drawColor;body.style.color=drawColor;} if(bgColor!==null){body.style.backgroundColor=bgColor;} if(probability!==null){elementProbabilityRange.value=probability;elementProbabilityRangeText.textContent=probability+"%";elementProbabilityCellText.textContent=probability+"%";} var theGrid=createArray(gridHeight,gridWidth),mirrorGrid=createArray(gridHeight,gridWidth),defaultHeight=gridHeight,defaultWidth=gridWidth,blockSize=1,repeater,maxCellPlaces=gridWidth*gridHeight,generations=0,livingCells=0,livingCellsOlder=0,livingCellsStartState=0,celluarityGlobal=0,celluarityGlobalOlder=0,celluarityLiving=0,celluarityLivingOlder=0,totalLivingCells=0,totalDyingCells=0,ratioTotalCellsOlder=0,startTime=0,measuredTimeOfGenerations=0,measuredTimeOfGenerationsOlder=0,isStopped=true;elementGridSizeText.textContent=gridWidth+"x"+gridHeight;elementMaxCellPlacesText.textContent=maxCellPlaces;elementColorButtonBar.style.display="none";elementZoomButtonBar.style.display="none";elementRandomizationButtonBar.style.display="none";elementInfusion.checked=false;startTime=performance.now();isStopped=false;fillRandom();tick();elementForegroundColor.addEventListener("change",setForegroundColor);elementBackgroundColor.addEventListener("change",setBackgroundColor);elementBorderColor.addEventListener("change",setBorderColor);elementCanvasLegend.addEventListener("click",showCanvas);elementControlsLegend.addEventListener("click",showControls);elementStatisticLegend.addEventListener("click",showStatistic);elementShowColor.addEventListener("click",showColor);elementShowZoom.addEventListener("click",showZoom);elementShowRandomization.addEventListener("click",showRandomization);elementErase.addEventListener("click",erase);elementInvert.addEventListener("click",invert);elementInitialize.addEventListener("click",initialize);elementRestart.addEventListener("click",restart);elementStop.addEventListener("click",stop);elementStart.addEventListener("click",start);elementStepOne.addEventListener("click",stepOne);elementZoomOut.addEventListener("click",zoomOut);elementZoomDefault.addEventListener("click",zoomDefault);elementZoomIn.addEventListener("click",zoomIn);elementShowCanvas.addEventListener("click",showCanvas);elementShowControls.addEventListener("click",showControls);elementShowStatistic.addEventListener("click",showStatistic);body.addEventListener("load",showCanvasParam);body.addEventListener("load",showControlsParam);body.addEventListener("load",showStatisticParam);canvas.addEventListener("mousemove",writeMousePosition);elementProbabilityRange.addEventListener("mousemove",rangeProbabilityMove);elementPanspermieRange.addEventListener("mousemove",rangePanspermieMove);elementPanzootieRange.addEventListener("mousemove",rangePanzootieMove);elementMutationRange.addEventListener("mousemove",rangeMutationMove);canvas.addEventListener("mouseout",clearMousePosition);canvas.addEventListener("pointermove",writeMousePosition);elementProbabilityRange.addEventListener("pointermove",rangeProbabilityMove);elementPanspermieRange.addEventListener("pointermove",rangePanspermieMove);elementPanzootieRange.addEventListener("pointermove",rangePanzootieMove);elementMutationRange.addEventListener("pointermove",rangeMutationMove);canvas.addEventListener("pointerout",clearMousePosition);canvas.addEventListener("touchmove",writeMousePositionTouched);elementProbabilityRange.addEventListener("touchmove",rangeProbabilityMove);elementPanspermieRange.addEventListener("touchmove",rangePanspermieMove);elementPanzootieRange.addEventListener("touchmove",rangePanzootieMove);elementMutationRange.addEventListener("touchmove",rangeMutationMove);canvas.addEventListener("touchout",clearMousePosition);function getMousePos(event){var rect=canvas.getBoundingClientRect();return{x:Math.round((((event.clientX-rect.left)/(rect.right-rect.left)*canvas.width)+1)/blockSize),y:Math.round((((event.clientY-rect.top)/(rect.bottom-rect.top)*canvas.height)+1)/blockSize)};} function writeMousePosition(event){var mousePos=getMousePos(event);elementMouseXY.textContent="X/Y: "+mousePos.x+","+mousePos.y;if(elementInfusion.checked&&!isStopped){theGrid[mousePos.x][mousePos.y]=1;livingCells++;totalCells++;totalLivingCells++;}} function writeMousePositionTouched(event){clientX=event.touches[0].clientX;clientY=event.touches[0].clientY;elementMouseXY.textContent="X/Y: "+clientX+","+clientY;if(elementInfusion.checked&&!isStopped){theGrid[clientX][clientY]=1;livingCells++;totalCells++;totalLivingCells++;}} function clearMousePosition(event){elementMouseXY.textContent="";} function RoundFloat(x,n){if(n<1||n>14)return false;var e=Math.pow(10,n);var k=(Math.round(x*e)/e).toString();if(k.indexOf(".")===-1)k+=".";k+=e.toString().substring(1);return k.substring(0,k.indexOf(".")+n+1);} function getRandomMinMaxIntInclusive(min,max){min=Math.ceil(min);max=Math.floor(max);return Math.floor(Math.random()*(max-min+1))+min;} function rangeProbabilityMove(){elementProbabilityRangeText.textContent=elementProbabilityRange.value+"%";} function rangeRandomizationMove(elementRange,elementRangeText){switch(elementRange.value){case"1":elementRangeText.textContent="0%";return 0;break;case"2":elementRangeText.textContent="0.00001%";return 100000;break;case"3":elementRangeText.textContent="0.0001%";return 10000;break;case"4":elementRangeText.textContent="0.001%";return 1000;break;case"5":elementRangeText.textContent="0.01%";return 100;break;case"6":elementRangeText.textContent="0.1%";return 10;break;case"7":elementRangeText.textContent="1%";return 1;break;default:elementRangeText.textContent="0%";return 0;}} function rangePanspermieMove(){panspermieRate=rangeRandomizationMove(elementPanspermieRange,elementPanspermieRangeText);} function rangePanzootieMove(){panzootieRate=rangeRandomizationMove(elementPanzootieRange,elementPanzootieRangeText);} function rangeMutationMove(){mutationRate=rangeRandomizationMove(elementMutationRange,elementMutationRangeText);} function init(){generations=0;livingCells=0;livingCellsOlder=0;livingCellsStartState=0;totalLivingCells=0;totalDyingCells=0;panspermieNumber=0;panzootieNumber=0;mutationNumber=0;measuredTimeOfGenerations=0;measuredTimeOfGenerationsOlder=0;celluarityGlobalOlder=0;celluarityLivingOlder=0;ratioTotalCellsOlder=0,gridHeight=elementSize.value;blockSize=elementBlockSize.value;gridWidth=gridHeight;theGrid=createArray(gridHeight,gridWidth);mirrorGrid=createArray(gridHeight,gridWidth);maxCellPlaces=gridWidth*gridHeight;canvas.setAttribute("height",gridHeight*blockSize);canvas.setAttribute("width",gridWidth*blockSize);elementGridSizeText.textContent=gridWidth+"x"+gridHeight;elementMaxCellPlacesText.textContent=maxCellPlaces;} function initialize(){stop();init();fillRandom();drawGrid();} function restart(){cancelAnimationFrame(repeater);elementStart.disabled="disabled";elementStepOne.disabled="disabled";elementStop.disabled="";startTime=performance.now();isStopped=false;init();fillRandom();drawGrid();repeater=requestAnimationFrame(tick);} function stop(){isStopped=true;elementStart.disabled="";elementStepOne.disabled="";elementStop.disabled="disabled";cancelAnimationFrame(repeater);} function start(){isStopped=false;elementStart.disabled="disabled";elementStepOne.disabled="disabled";elementStop.disabled="";tick();} function stepOne(){tick();stop();} function setForegroundColor(){drawColor=elementForegroundColor.value;} function setBackgroundColor(){canvas.style.backgroundColor=elementBackgroundColor.value;} function setBorderColor(){canvas.style.borderColor=elementBorderColor.value;} function zoomOut(){blockSize--;if(blockSize<2){blockSize=1;elementZoomOut.disabled="disabled";canvas.width=defaultWidth;canvas.height=defaultHeight;}else{canvas.width=canvas.width/blockSize;canvas.height=canvas.height/blockSize;} elementBlockSize.value=blockSize;drawGrid();} function zoomDefault(){blockSize=1;elementZoomOut.disabled="disabled";canvas.width=defaultWidth;canvas.height=defaultHeight;elementBlockSize.value=blockSize;drawGrid();} function zoomIn(){elementZoomOut.disabled="";blockSize++;canvas.width=defaultWidth*blockSize;canvas.height=defaultHeight*blockSize;elementBlockSize.value=blockSize;drawGrid();} function showCanvasParam(){var showcanvas=findGetParameter("showcanvas") if(showcanvas===0||showcanvas==="false"||showcanvas==="no"||showcanvas==="disabled")canvas.style.display="none";} function showControlsParam(){var showcontrols=findGetParameter("showcontrols") if(showcontrols===0||showcontrols==="false"||showcontrols==="no"||showcontrols==="disabled")controls.style.visibility="hidden";} function showStatisticParam(){var showstatistic=findGetParameter("showstatistic");if(showstatistic===0||showstatistic==="false"||showstatistic==="no"||showstatistic==="disabled")statistic.style.visibility="hidden";} function toggleDisplay(element){if(element.style.display==="none"){element.style.display="block";}else{element.style.display="none";}} function showCanvas(){toggleDisplay(canvas);} function showControls(){toggleDisplay(controls);} function showStatistic(){toggleDisplay(statistic);} function showColor(){toggleDisplay(elementColorButtonBar);} function showZoom(){toggleDisplay(elementZoomButtonBar);} function showRandomization(){toggleDisplay(elementRandomizationButtonBar);} function findGetParameter(parameterName){var result=null,tmp=[];var items=location.search.substr(1).split("&");for(var index=0;index<items.length;index++){tmp=items[index].split("=");if(tmp[0]===parameterName)result=decodeURIComponent(tmp[1]);} return result;} function tick(){console.time("loop");drawGrid();updateGrid();console.timeEnd("loop");repeater=requestAnimationFrame(tick);} function createArray(height,width){var arr=[];for(var i=0;i<height;i++){arr[i]=[];for(var j=0;j<width;j++){}} return arr;} function fillRandom(){var max=elementProbabilityRange.getAttribute("max");var value=elementProbabilityRange.value;var arr=new Array(max);for(var i=0;i<max;i++){if(i<value)arr[i]=1;} livingCellsStartState=0;for(var j=0;j<gridHeight;j++){for(var k=0;k<gridWidth;k++){var rawRandom=Math.random();var improvedNum=(rawRandom*max);var randomBinary=Math.floor(improvedNum);if(arr[randomBinary]===1){theGrid[j][k]=1;livingCellsStartState++;totalLivingCells++;}else{theGrid[j][k]=0;}}} document.getElementById("livingCellsStartStateTextContent").textContent=livingCellsStartState;elementProbabilityCellText.textContent=value+"%";} function invert(){for(var y=0;y<gridHeight;y++){for(var x=0;x<gridWidth;x++){if(theGrid[x][y]===0){theGrid[x][y]=1;totalLivingCells++;livingCells++;}else{theGrid[x][y]=0;totalDyingCells++;livingCells--;}}}} function erase(){for(var y=0;y<gridHeight;y++){for(var x=0;x<gridWidth;x++){if(theGrid[x][y]!==0){theGrid[x][y]=0;totalDyingCells++;livingCells--;}}}} function drawGrid(){livingCells=0;if(canvas.getContext){context.fillStyle=drawColor;context.clearRect(0,0,canvas.width,canvas.height);for(var j=0;j<gridHeight;j++){for(var k=0;k<gridWidth;k++){if(theGrid[j][k]===1){livingCells++;context.fillRect(j*blockSize,k*blockSize,1*blockSize,1*blockSize);}}} celluarityGlobal=(livingCells/maxCellPlaces)*100;celluarityLiving=(livingCells/livingCellsStartState)*100;measuredTimeOfGenerations=generations/(performance.now()-startTime)*1000;elementGenerations.textContent=generations;elementLivingCells.textContent=livingCells;elementLivingCells.innerHTML=showArrowsUpDown(livingCells,livingCellsOlder,elementLivingCells);elementCelluarityGlobal.textContent=RoundFloat(celluarityGlobal,3)+"%";elementCelluarityGlobal.innerHTML=showArrowsUpDown(celluarityGlobal,celluarityGlobalOlder,elementCelluarityGlobal);elementCelluarityLiving.textContent=RoundFloat(celluarityLiving,3)+"%";elementCelluarityLiving.innerHTML=showArrowsUpDown(celluarityLiving,celluarityLivingOlder,elementCelluarityLiving);elementTotalLivingCells.textContent=totalLivingCells;elementTotalDyingCells.textContent=totalDyingCells;elementTotalRatioOfLivingAndDyingCells.textContent=RoundFloat(totalLivingCells/totalDyingCells,3);elementTotalRatioOfLivingAndDyingCells.innerHTML=showArrowsUpDown(totalLivingCells/totalDyingCells,ratioTotalCellsOlder,elementTotalRatioOfLivingAndDyingCells);elementRuntime.textContent=Math.round(performance.now()-startTime);elementMeasuredTimeOfGenerations.textContent=RoundFloat(measuredTimeOfGenerations,3);elementMeasuredTimeOfGenerations.innerHTML=showArrowsUpDown(measuredTimeOfGenerations,measuredTimeOfGenerationsOlder,elementMeasuredTimeOfGenerations);} livingCellsOlder=livingCells;celluarityGlobalOlder=celluarityGlobal;celluarityLivingOlder=celluarityLiving;ratioTotalCellsOlder=totalLivingCells/totalDyingCells;measuredTimeOfGenerationsOlder=measuredTimeOfGenerations;} function showArrowsUpDown(value,valueOlder,element){if(value>valueOlder)return element.textContent+imageArrowUpInHtml;else if(value<valueOlder)return element.textContent+imageArrowDownInHtml;else return element.textContent+imageArrowNoInHtml;} function updateGrid(){generations++;for(var j=0;j<gridHeight;j++){for(var k=0;k<gridWidth;k++){var totalCells=0;if(j!==0) if(k!==0)totalCells+=theGrid[j-1][k-1];if(j!==0)totalCells+=theGrid[j-1][k];if(j!==0) if(k!==gridWidth-1)totalCells+=theGrid[j-1][k+1];if(k!==0)totalCells+=theGrid[j][k-1];if(k!==gridWidth-1)totalCells+=theGrid[j][k+1];if(j!==gridHeight-1) if(k!==0)totalCells+=theGrid[j+1][k-1];if(j!==gridHeight-1)totalCells+=theGrid[j+1][k];if(j!==gridHeight-1) if(k!==gridWidth-1)totalCells+=theGrid[j+1][k+1];switch(totalCells){case 2:mirrorGrid[j][k]=theGrid[j][k];break;case 3:if(mirrorGrid[j][k]!==1){mirrorGrid[j][k]=1;totalLivingCells++;} break;default:if(mirrorGrid[j][k]!==0){mirrorGrid[j][k]=0;totalDyingCells++;}}}} if(elementBounds.checked){for(var l=0;l<gridHeight;l++){mirrorGrid[l][0]=mirrorGrid[l][gridHeight-3];mirrorGrid[l][gridHeight-2]=mirrorGrid[l][1];mirrorGrid[0][l]=mirrorGrid[gridHeight-3][l];mirrorGrid[gridHeight-2][l]=mirrorGrid[1][l];}} if(panspermieRate!==0){if(generations%panspermieRate===0){randomX=getRandomMinMaxIntInclusive(1,gridWidth-1);randomY=getRandomMinMaxIntInclusive(1,gridHeight-1);mirrorGrid[randomX][randomY]=1;panspermieNumber++;totalLivingCells++;livingCells++;elementTotalPanspermie.textContent=panspermieNumber;}} if(panzootieRate!==0){if(generations%panzootieRate===0){randomX=getRandomMinMaxIntInclusive(1,gridWidth-1);randomY=getRandomMinMaxIntInclusive(1,gridHeight-1);mirrorGrid[randomX][randomY]=0;panzootieNumber++;totalDyingCells++;livingCells--;elementTotalPanzootie.textContent=panzootieNumber;}} if(mutationRate!==0){if(generations%mutationRate===0){randomX=getRandomMinMaxIntInclusive(1,gridWidth-1);randomY=getRandomMinMaxIntInclusive(1,gridHeight-1);mutationNumber++;if(theGrid[randomX][randomY]===0){mirrorGrid[randomX][randomY]=1;totalLivingCells++;livingCells++;}else{mirrorGrid[randomX][randomY]=0;totalDyingCells++;livingCells--;} elementTotalMutation.textContent=mutationNumber;}} var temp=theGrid;theGrid=mirrorGrid;mirrorGrid=temp;}</script> </body></html>