您好,欢迎访问一九零五行业门户网

javascript+HTML5的canvas实现玫瑰花的3D效果代码分享

本文实例讲述了javascript+html5的canvas实现七夕情人节3d玫瑰花效果。分享给大家供大家参考。具体如下:
下面的玫瑰绘制用到了html 5的canvas,所以你的浏览器需要支持html 5。个人还是比较推荐chrome,这个效果在firefox下也会稍卡。
效果图:
具体代码如下:
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <title>3d玫瑰花</title> <meta name="generator" content="editplus"> <meta name="author" content=""> <meta name="keywords" content=""> <meta name="description" content=""> </head> <body> 情人节快到了,这里送大家一枝玫瑰,无论是有对象还是没对象的朋友们,情人节快乐~ 下面的玫瑰绘制用到了html 5的canvas,所以你的浏览器需要支持html 5。个人还是比较推荐chrome,这个效果在firefox下也会稍卡。 <p id="demo" style="width:520; height:500px;"><canvas id="c" height="500" width="500"></canvas></p> <script> var b = document.body; var c = document.getelementsbytagname("canvas")[0]; var a = c.getcontext("2d"); var canvas = document.getelementsbytagname("canvas")[0]; var ctx = canvas.getcontext("2d"); document.body.clientwidth; 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] } } var draw = 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); var demo = document.getelementbyid("demo"); function redraw(){ /* var d_c = document.createelement("canvas"); d_c.setattribute("id","c"); d_c.setattribute("width","520"); d_c.setattribute("height","500"); demo.appendchild(d_c); */ draw = 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); //alert(d_c); } function clear_canvas() { ctx.clearrect(0,0,520,500); //canvas.parentnode.removechild(canvas); //删除 } function stop_draw(obj){ clearinterval(obj); } </script> </body> </html>
以上就是javascript+html5的canvas实现玫瑰花的3d效果代码分享的详细内容。
其它类似信息

推荐信息