开源软件推荐:Processing -- 可视化编程语言和开...
官方网站
http://processing.org/豆瓣小组
http://www.douban.com/group/processing/下午讨论的时候有不少人表示对processing这个软件有兴趣,这里简单介绍一下,详情请访问官方网站和豆瓣小组。
Processing (
http://processing.org/)是"一个开源的程序语言及开发环境,提供给那些想要对影像、动画、声音进行程序编辑的工作者。此外,学生、艺术家、设计师、建筑师、研究员以及有兴趣的人,也可以用来学习,开发原型及制作"。
Processing由MIT媒体实验室美学与计算小组(Aesthetics & Computation Group)的Ben Fry(
http://benfry.com/)和Casey Reas发明 [八卦一下,这个小组的头头是John Maeda(约翰·前田,
http://plw.media.mit.edu/people/maeda/),传奇的平面设计师、视觉艺术家与计算机科学家]。Processing现在已有一个活跃的开源社区在支持,发展前景很好。
Processing是基于java写的,运行时需要java虚拟机,从网站下载时可选择带java的或不带java的版本(
http://processing.org/download/)。如果你的机器用windows,且已经安装了java,那么下载windows(without java)版本(
http://processing.org/download/processing-0135-expert.zip),如果没有安装java,请下载windows版(
http://processing.org/download/processing-0135.zip),另外还可选择linux和mac版。
下载后解压缩,直接双击processing.exe即可运行。File-->Examples下有一些简单的例子,选择一个,打开,点击工具栏里最左边的按钮(run),就可以看到运行结果了。建议把例子挨个运行一遍,这样就可以大概了解processing能用来干什么了。另外,
http://processing.org/exhibition/ 里也有很多演示。
前一阵,jQuery的创造者John Resig在自己的生日那天向开发者们赠送了一个礼物,公开了自己刚完成的一个项目: Processing.js,也就是将Processing可视化语言移植至Javascript。这是Javascript成为Flash竞争对手的第一步。作者的blog(
http://ejohn.org/blog/processingjs/)提供了许多非常棒的演示。[P.S.今天下午讨论的时候我把Javascript说成是Flash了,整个搞颠倒了,sorry :)] 总之,喜欢Javascript的现在也可以享用processing的强大功能了。
http://processing.org/learning/index.html 提供了学习资源,电子书下载可参见豆瓣processing小组的几个帖子,如
http://www.douban.com/group/topic/2096995/和
http://www.douban.com/group/topic/2076516/最后,给一个简单但强大的例子:在processing里,模拟一个细胞自动机,只需要敲入下面的代码(代码来自File-->Examples-->Topics-->Cellular Automata --> Conway )
int sx, sy;
float density = 0.5;
int [][][] world;
void setup()
{
size(200, 200);
frameRate(12);
sx = width;
sy = height;
world = new int[sx][sy][2];
stroke(255);
// Set random cells to 'on'
for (int i = 0; i < sx * sy * density; i++) {
world[(int)random(sx)][(int)random(sy)][1] = 1;
}
}
void draw()
{
background(0);
// Drawing and update cycle
for (int x = 0; x < sx; x=x+1) {
for (int y = 0; y < sy; y=y+1) {
if ((world[x][y][1] == 1) || (world[x][y][1] == 0 && world[x][y][0] == 1))
{
world[x][y][0] = 1;
point(x, y);
}
if (world[x][y][1] == -1)
{ world[x][y][0] = 0; }
world[x][y][1] = 0;
}
}
// Birth and death cycle
for (int x = 0; x < sx; x=x+1) {
for (int y = 0; y < sy; y=y+1) {
int count = neighbors(x, y);
if (count == 3 && world[x][y][0] == 0)
{ world[x][y][1] = 1; }
if ((count < 2 || count > 3) && world[x][y][0] == 1)
{ world[x][y][1] = -1; }
} } }
// Count the number of adjacent cells 'on'
int neighbors(int x, int y)
{
return world[(x + 1) % sx][y][0] +
world[x][(y + 1) % sy][0] +
world[(x + sx - 1) % sx][y][0] +
world[x][(y + sy - 1) % sy][0] +
world[(x + 1) % sx][(y + 1) % sy][0] +
world[(x + sx - 1) % sx][(y + 1) % sy][0] +
world[(x + sx - 1) % sx][(y + sy - 1) % sy][0] +
world[(x + 1) % sx][(y + sy - 1) % sy][0];
}
强大吗?试试吧!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。