比这篇新的文章: 锁定鼠标
比这篇旧的文章: Python调用glibc

使用Canvas的javascript示例,太震撼了

语言: JavaScript, 标签: canvas 2008/08/11发布 3个月前更新 更新记录
作者: 半瓶墨水, 点击555次, 评论(0), 收藏者(0)

开关行号, 全选(Ctrl+C复制) | 一键复制:HTML, BBCode(Discuz!) , 源代码 | 查看:裸代码, 全屏
背景
主题: 字体:
JavaScript语言: 使用Canvas的javascript示例,太震撼了
01 //代码来自: http://developer.mozilla.org/en/docs/Canvas_tutorial:Transformations
02 //查看效果: http://developer.mozilla.org/samples/canvas-tutorial/5_2_canvas_translate.html
03 //在IE下使用canvas: http://excanvas.sourceforge.net/
04 function draw() {
05   var ctx = document.getElementById('canvas').getContext('2d');
06   ctx.fillRect(0,0,300,300);
07   for (var i=0;i<3;i++) {
08     for (var j=0;j<3;j++) {
09       ctx.save();
10       ctx.strokeStyle = "#9CFF00";
11       ctx.translate(50+j*100,50+i*100);
12       drawSpirograph(ctx,20*(j+2)/(j+1),-8*(i+3)/(i+1),10);
13       ctx.restore();
14     }
15   }
16 }
17 function drawSpirograph(ctx,R,r,O){
18   var x1 = R-O;
19   var y1 = 0;
20   var i  = 1;
21   ctx.beginPath();
22   ctx.moveTo(x1,y1);
23   do {
24     if (i>20000) break;
25     var x2 = (R+r)*Math.cos(i*Math.PI/72) - (r+O)*Math.cos(((R+r)/r)*(i*Math.PI/72))
26     var y2 = (R+r)*Math.sin(i*Math.PI/72) - (r+O)*Math.sin(((R+r)/r)*(i*Math.PI/72))
27     ctx.lineTo(x2,y2);
28     x1 = x2;
29     y1 = y2;
30     i++;
31   } while (x2 != R-O && y2 != 0 );
32   ctx.stroke();
33 }
打分:

所有评论,共0条:( 我也来说两句)


发表评论

注册登录后再发表评论