当我看到这件作品的时候,我表示非常喜欢。这个作品的产生不仅仅需要编程和算法,作者肯定是个充满了艺术细胞的人。倘若有什么canvas艺术作品比赛的话,我想它就是获奖的那个。
先观赏下演示吧。注意,要看到效果,请确保你的浏览器支持 HTML 5。如果你还在使用旧版 IE,请更换新版浏览器。
代码如下:
001 |
function fillCircle(ctx, r) |
005 |
ctx.fillStyle = 'rgb(245,50,50)'; |
006 |
ctx.arc(0,0,r,0,Math.PI*2,true); |
010 |
function branch(ctx, r, d, t, a) |
014 |
ctx.translate(0, -r*(1+d)); |
019 |
function feather(ctx, r) |
023 |
ctx.rotate(-0.03*Math.PI); |
024 |
ctx.translate(0, -r*(1+d)); |
029 |
function wing(ctx, r, a) |
031 |
if ( r < 2.9 ) return; |
033 |
branch(ctx, r, 0.9561, 0.03*Math.PI, a); |
035 |
ctx.rotate(0.55*Math.PI); |
040 |
function tail(ctx, s, a) |
042 |
if ( s < 0.5 ) return; |
043 |
var d = 0.98; // decay |
046 |
ctx.translate(0, s*(1+d)); |
056 |
ctx.translate(-15, -3); |
058 |
ctx.fillStyle = "white"; |
059 |
ctx.arc(0,0,10,0,Math.PI*2,true); |
064 |
ctx.translate(9, -4); |
066 |
ctx.fillStyle = "black"; |
067 |
ctx.arc(0,0,5,0,Math.PI*2,true); |
071 |
ctx.translate(6, -8); |
072 |
ctx.rotate(0.6*Math.PI); |
076 |
function neck(ctx, s) |
078 |
if ( s < 10 ) { head(ctx); return; } |
084 |
ctx.rotate(-Math.PI/2); |
086 |
fillCircle(ctx, s/2); |
090 |
ctx.translate(0, -s*(1+d)); |
094 |
function loop(ctx, i) { |
095 |
var inner = function() { |
098 |
ctx.fillStyle = "white"; |
099 |
ctx.fillRect(-1500,-1500,3000,3000); |
102 |
ctx.translate(0, Math.cos(i*0.1)*40); |
104 |
var a = Math.sin(i*0.1); |
108 |
ctx.rotate(Math.PI*0.4); |
115 |
ctx.rotate(Math.PI*0.4); |
121 |
tail(ctx, 20, Math.sin(i*0.05)); |
128 |
setTimeout(inner, 35); // change speed here |
135 |
var canvas = document.getElementById("canvas"); |
136 |
var ctx = canvas.getContext("2d"); |
138 |
ctx.translate(490, 410); |
140 |
setTimeout(loop(ctx, 1), 1); |
HTML
2 |
< canvas id = "canvas" width = "1000" height = "1000" ></ canvas > |
最新文章
- viso
- JavaScript错误之:Uncaught ReferenceError: $ is not defined
- Linux虚拟机添加新硬盘的全程图解
- jsp页面常用控件
- scrollbar_test
- GWT资料收集
- [CF 474E] Pillars (线段树+dp)
- java性能
- JavaScript---Cookie
- 细说Java多线程之内存可见性
- BZOJ 1856: [Scoi2010]字符串( 组合数 )
- 设计模式值六大原则——设计模式之六大原则——单一职责原则(SRP)
- Mysql表结构定义及相关语法
- C#PreviewKeyDown 与KeyDown 区别
- Recurrent Neural Network[SRU]
- SaltStack 入门到精通第二篇:Salt-master配置文件详解
- latin-1 codec cant encode characters in position 42-48: ordinal not in range256 下载文件时候报错
- HDU-4849 Wow! Such City! (单源最短路)
- java-IO-基本输出输入流
- ssh-keygen的使用方法及配置authorized_keys两台linux机器相互认证
热门文章
- webservice调用天气
- EditorGUI控件输入监听
- 编写你自己的Python模块
- 用Python实现一个端口扫描,只需简单几步就好
- laravel 的DB::raw() 语法使用
- js设计模式:工厂模式、构造函数模式、原型模式、混合模式
- 深入理解java虚拟机学习笔记(二)
- 代码对齐 (Alignment of Code,ACM/ICPC NEERC 2010,UVa1593)
- 《Spark 官方文档》在Mesos上运行Spark
- Linux查看物理CPU个数,核数,逻辑CPU个数;内存信息