Simple holiday trees.
Simple tree. Invoke with:
$ ./hollidaytree.sh 24
code:
#!/bin/bash
declare -a a=('.' '~' "'" 'O' "'" '~' '.' '*')
[[ $# = 0 ]] && s=9 || s=$1
[[ $s -gt 5 ]] || s=5
for (( w=1, r=7, n=1; n<=$s; n++ )) ; do
for (( i=$s-n; i>0; i-- )) ; do
echo -n " "
done
for (( i=1; i<=w; i++ )) ; do
echo -n "${a[r]}"
[[ $r -gt 5 ]] && r=0 || r=$r+1
done
w=$w+2
echo " "
done;
echo " "
Code:
<HTML>
<BODY>
<!--
var a=40,b=8,c=13,o="<div style='font-family:monospace;text-align:center;color:#094'>",
w=1,x=0,y="|#|<br>";for(i=1;i<a;i++){for(j=0;j<w;j++){x%c==0?o+="<span style='color:#D00'>O
</span>":o+="+";x++;}i%b==0?w-=4:w+=2;o+="<br>";}document.write(o+"<span style='color:#640'>"
+y+y+y+"</span></div>");
-->
<SCRIPT LANGUAGE="JavaScript">
var a=40,b=8,c=13,o="<div style='font-family:monospace;text-align:center;color:#094'>",w=1,x=0,y="|#|<br>";for(i=1;i<a;i++){for(j=0;j<w;j++){x%c==0?o+="<span style='color:#D00'>O</span>":o+="+";x++;}i%b==0?w-=4:w+=2;o+="<br>";}document.write(o+"<span style='color:#640'>"+y+y+y+"</span></div>");
</SCRIPT>
</BODY>
</HTML>
Awesome rotating tree when shown from a web page
Code:
<script type="text/javascript"> var size = 400; var canvas = document.createElement('canvas'); canvas.width = size; canvas.height = size; document.body.appendChild(canvas); var ctx = canvas.getContext('2d'); var p3d = []; var p = [Math.random(), Math.random(), Math.random(), 0]; for (var i = 0; i < 100000; i++) { p3d.push([p[0],p[1],p[2],p[3]]); var t = Math.random(); if (t<0.4) { _y = 0.4 * p[1]; _x = 0.1 * p[0]; _z = 0.6 * p[2]; var r = Math.floor(3*t/0.4)/3.0; var rc = Math.cos(Math.PI*2.0*r); var rs = Math.sin(Math.PI*2.0*r); p[1] = _x+0.1*r+0.5*_y*_y; p[0] = _y*rc+_z*rs; p[2] = _z*rc-_y*rs; p[3] = 0.2*t + 0.8*p[3]; } else { p[1] = 0.2 + 0.8*p[1]; p[0] = 0.8 * p[0]; p[2] = 0.8 * p[2]; p[3] = 0.2 + 0.8*p[3]; } } var rot = 0.0; function render() { rot = rot + 0.1; var rc = Math.cos(rot); var rs = Math.sin(rot); ctx.strokeStyle='#FF7F00'; ctx.lineWidth=2; ctx.beginPath(); ctx.moveTo(size/2,size/8); ctx.lineTo(size/2,size*15/16); ctx.stroke(); var img = ctx.getImageData(0, 0, size, size); for (var j = 0; j < size*size; j++) { img.data[4*j+0] = 0.5*img.data[4*j+0]; img.data[4*j+1] = 0.5*img.data[4*j+1]; img.data[4*j+2] = 0.5*img.data[4*j+2]; img.data[4*j+3] = 255; } for (var i = 0; i < p3d.length; i++) { var px = p3d[i][0]; var py = 0.5 - p3d[i][1]; var pz = p3d[i][2]; var col = Math.floor(128.0*p3d[i][3]); var _x = rc*px + rs*pz; var _z = rc*pz - rs*px; var z = 3.0 * size / (_z + 4.0); var x = size / 2 + Math.round(_x * z); var y = size / 2 + Math.round(py * z); if(x>=0&&y>=0&&x<size&&y<size) { img.data[4 * (y * size + x) + 0] = col; img.data[4 * (y * size + x) + 1] = 128+col; img.data[4 * (y * size + x) + 2] = col; img.data[4 * (y * size + x) + 3] = 255; } } ctx.putImageData(img, 0, 0); } setInterval(render, 1000 / 30); </script>
Comments
Post a Comment