情人节程序员送给女友的礼物–玫瑰花
2月14日情人节今天终于到了~,程序员们还是应该好好的哄下自己的媳妇儿,毕竟代码不能代表一切~那么程序员应该送什么给女友呢?买一束玫瑰?太老土了吧~不如自己实现一个玫瑰花程序,嵌在网页里面,给女友一个惊喜~
今天Xushine研究院给大家带来的是一个NB程序员写的一段JS程序,这个是群里面发的 我也不知道是谁写的,先向那位NB的程序员致敬~
这段JS实现的玫瑰花还有展示的3D效果~但是注意的是必须在HTML5浏览器下浏览~
查看网页请点击=》查看
如果超链接不可用 还可以把地址复制进去观看效果:https://www.xushine.net/demo/rose/rose.html
Xushine研究院用的是opera~先看看截图
下面我们就贴出这段NB的JS代码吧~
<html lang=\’zh-CN\’ xml:lang=\’zh-CN\’ xmlns=\’http://www.w3.org/1999/xhtml\’>
<head>
<meta http-equiv="Content-Language" content="zh-CN"/>
<!–meta http-equiv="X-UA-Compatible" content="IE=8" /–>
<title>玫瑰Demo</title>
</head>
<body>
<canvas id="c"></canvas>
<script type="text/javascript">
var b = document.body;
var c = document.getElementsByTagName(\’canvas\’)[0];
var a = c.getContext(\’2d\’);
document.body.clientWidth;
</script>
<script type="text/javascript">
// 呈现 start //
with (m = Math) C = cos, S = sin, P = pow, R = random; c.width = c.height = f = 500;
h = -250; function p(a, b, c)
{
if (c > 60)
return [S(a * 7) * (13 + 5 / (.2 + P(b * 4, 4))) – S(b) * 50, b * f + 50, 625 + C(a * 7) * (13 + 5 / (.2 + P(b * 4, 4))) + b * 400, a * 1 – b / 2, a]; A = a * 2 – 1; B = b * 2 – 1; if (A * A + B * B < 1)
{
if (c > 37) { n = (j = c & 1) ? 6 : 4; o = .5 / (a + .01) + C(b * 125) * 3 – a * 300; w = b * h; return [o * C(n) + w * S(n) + j * 610 – 390, o * S(n) – w * C(n) + 550 – j * 350, 1180 + C(B + A) * 99 – j * 300, .4 – a * .1 + P(1 – B * B, -h * 6) * .15 – a * b * .4 + C(a + b) / 5 + P(C((o * (a + 1) + (B > 0 ? w : -w)) / 25), 30) * .1 * (1 – B * B), o / 1e3 + .7 – o * w * 3e-6]
}
if (c > 32)
{
c = c * 1.16 – .15; o = a * 45 – 20; w = b * b * h; z = o * S(c) + w * C(c) + 620;
return [o * C(c) – w * S(c), 28 + C(B * .5) * 99 – b * b * b * 60 – z / 2 – h, z, (b * b * .3 + P((1 – (A * A)), 7) * .15 + .3) * b, b * .7]
}
o = A * (2 – b) * (80 – c * 2); w = 99 – C(A) * 120 – C(b) * (-h – c * 4.9) + C(P(1 – b, 7)) * 50 + c * 2; z = o * S(c) + w * C(c) + 700;
return [o * C(c) – w * S(c), B * 99 – C(P(b, 7)) * 50 – c / 3 – z / 1.35 + 450, z, (1 – b / 1.2) * .9 + a * .1, P((1 – b), 20) / 4 + .05]
}
}
setInterval(\’for(i=0;i<1e4;i++)if(s=p(R(),R(),i%46/.74)){z=s[2];x=~~(s[0]*f/z-h);y=~~(s[1]*f/z-h);if(!m[q=y*f+x]|m[q]>z)m[q]=z,a.fillStyle="rgb("+~(s[3]*h)+","+~(s[4]*h)+","+~(s[3]*s[3]*-80)+")",a.fillRect(x,y,1,1)}\’, 0)
</script>
</body>
</html>