Processing Introduction
Processing 是基于java的一门作图语言,主要初衷是为艺术家设计的,但是之后在可视化领域得到了很大的发展,许多项目都基于Processing.
当初知道processing很偶然,大四保完研究生后,一直无事,到下学期的时候毕业论文导师帮我选好题后,让我去找高维数据降维处理的资料,然后就去图书馆闲逛,在计算机书籍附近发现了一本《可视化数据》,拿起来看了看,初看之后就爱不释手,遂借出回去研究,感觉very powerful。之前一直用SAS作图,那叫一个丑(SAS 9.2 有所改善),而且可控制区域很少。
Processing 给我最大感触有三点,第一是完全的对图像控制,精确到每一个像素;第二是人机交互,之前用SAS或其他软件作图,作出来的都是死图,用Processing之后,可以通过鼠标和键盘的输入控制图片。第三是Processing语法的简单也出人意料,对于不是计算机专业的人来说,繁琐的内存管理,类继承派生,多态性,虚函数等都不用搭理,只是按照简单的类的语法建立类,然后使用这些类的对象。
Processing的运行机制很简单,Processing的主体是一个void srtup() 函数和一个void draw() 函数。void setup()设置包括界面大小,背景,颜色模式之类的全局环境变量,只运行一遍。void draw() 函数则一遍一遍的重复运行,作出一帧一帧的图,有一个参数frameRate()控制每秒程序运行多少遍,每运行一遍程序,就会把程序要求的图像在规定的屏幕区间(size())上显示一遍,然后下一次运行的时候刷新一遍。这样的机制跟电影很像,最终使得动态图像看起来是连贯一致的,当然也可以控制frameRate()使得图像一帧一帧的慢慢动来观察细节。
另外Processing是面向对象的,所以当想控制图像的时候并不像PS那样麻烦,只要写一个主体的类,然后建立一堆对象,这些对象可以是一个array的元素,这样对这群对象的控制就成了对array的控制,非常方便。另外,还可以生产这个主体类的派生类,然后生成派生类的对象。这一切使得程序代码可以很简单,面向对象的编程确实强大。
另外值得一提的是,Processing提供RGB和HSB两种colorMode()以及透明度的设置,所以作出来的图非常优雅美观。无图无真相。
该图比较慢,勿在图片上点击。慢慢看,艺术品。
在图片上点击,将会生成。。。。
按空格键更换背景。
感兴趣的可以去 openprocessing.org查看全世界各地的童鞋的杰作.
初学之后,用Processing模拟了贪吃蛇的游戏,作了些简单的图自娱自乐,尔后本科毕业论文就全依仗可爱地Processing了。
在creativeapplications.net上还有不好基于Processing的创新应用。
初学者推荐MIT.Press.Processing.A.Programming.Handbook.for.Visual.Designers.and.Artists.Sep.2007
至于另一本书OReilly.Visualizing.Data.Jan.2008可以作培养兴趣用。
Learning Processing有点扯淡。
挺绚烂的~~
呵呵,对统计工作者没什么实际意义。
对Java这种所谓的面向对象过敏 效率也太低 做出来的动画有一种怪怪的感觉 想画图的话就Asymptote 生成的东西在PDF用Reader 9.3.x里就可以交互了
呃~第一次听人说java效率低,也第一次听说java的面向对象是所谓的。
作出来的动画怪怪的,呃,只是这里选的三个动画怪怪的。有时间该多看看其他基于java的项目~。
画图软件太多了,听说R画的蛮好看的。
R画的没processing炫,效率也不高,做可视化的很多用OPenGL和C++,代码王子啊。
PS:动画不能打印,实为憾事之一,如果能想办法打印在纸张一样的媒介上,就太nice了
唉,我选的那门c++,是个70多岁的老头,讲课一板一眼的没啥意思,也没讲到核心。中关村教学楼星期二和星期五晚上8点到10点有个杨力祥老师讲的c++,非常牛逼,讲到精髓了。你要有时间可以过去旁观下。哪天想办法给你弄个卡。
是啊,我晚上都没课的。就等你的卡了啊。
此外,你弄个留言回复插件吧,我的是Comment Reply Notification。这样你在这里回复了我的话我就能通过邮件知道了。
原来开始就准备弄这个插件的,后来试了试没弄好,就搁置了。现在弄好了。
人参嘛 总有第一次 ..