内容简介
本书详细介绍了Processing编程的基本原理,全书分为十节课共23章,涵盖了创建前沿的图形应用程序例如互动艺术、实时视频处理和数据可视化所需要的基础知识。此外,作为一本实验风格的手册,书中精心挑选了部分高级技术进行详尽解释。可以让图形和网页设计师、艺术家及平面设计师快速熟悉Processing编程环境。
目录
Learning Processing:A Beginner抯 Guide to Programming Images, Animation, and Interaction, Second Edition
出版者的话
译者序
致谢
前言
第一节课 开始
第1章 像素2
1.1 坐标纸2
1.2 绘制基本图形3
1.3 灰度模式7
1.4 RGB颜色9
1.5 颜色透明度10
1.6 自定义颜色取值范围11
第2章 Processing13
2.1 让Processing来拯救你13
2.2 如何下载Processing14
2.3 Processing应用程序14
2.4 速写本15
2.5 Processing中的代码16
2.6 错误提示18
2.7 Processing参考文档20
2.8 “运行”按钮21
2.9 你的第一个草图22
第3章 交互24
3.1 程序的运行流程24
3.2 我们的好朋友:setup()和draw()25
3.3 跟随鼠标移动27
3.4 鼠标点击和键盘操作30
第一节课的项目33
第二节课 你所需要知道的一切
第4章 变量36
4.1 什么是变量36
4.2 变量的声明和初始化37
4.3 使用变量39
4.4 多种变量42
4.5 系统变量43
4.6 随机:多样化为生活增加趣味性44
4.7 使用变量来创建Zoog46
4.8 坐标平移48
第5章 条件语句50
5.1 布尔表达式50
5.2 条件语句:if、else、else if51
5.3 草图中的条件语句54
5.4 逻辑运算符56
5.5 多个鼠标翻转效果的实现58
5.6 布尔变量59
5.7 弹力球62
5.8 物理学基础66
第6章 循环69
6.1 什么是迭代69
6.2 while循环:你唯一真正需要的循环71
6.3 “退出”条件73
6.4 for循环75
6.5 局域变量与全局变量77
6.6 draw()循环内部的循环80
6.7 长出胳膊的Zoog82
第二节课的项目84
第三节课 结构化
第7章 函数86
7.1 将代码分解86
7.2 用户自定义函数87
7.3 定义函数88
7.4 简单的模块化89
7.5 实参91
7.6 传递副本95
7.7 返回类型97
7.8 重新整理Zoog100
第8章 对象103
8.1 掌握面向对象编程103
8.2 使用对象104
8.3 编写饼干模具的程序105
8.4 使用一个对象的具体步骤107
8.5 使用标签进行组合109
8.6 构造函数参数112
8.7 对象也是数据类型115
8.8 面向对象的Zoog116
第三节课的项目119
第四节课 重复性
第9章 数组122
9.1 数组的作用122
9.2 数组是什么124
9.3 声明和创建数组125
9.4 初始化数组126
9.5 数组运算127
9.6 简单的数组示例:蛇129
9.7 对象数组131
9.8 交互式对象133
9.9 Processing的数组函数136
9.10 1001个Zoog137
第四节课的项目139
第五节课 融会贯通
第10章 算法142
10.1 我们现在在哪里?我们将要去哪里142
10.2 算法:跟着你自己的节奏跳舞143
10.3 从概念到部分144
10.4 第1部分:雨水采集器145
10.5 第2部分:相交147
10.6 第3部分:计时器152
10.7 第4部分:雨滴154
10.8 整合157
10.9 为下一步做好准备164
第五节课的项目165
第11章 调试166
11.1 建议1:休息一下166
11.2 建议2:让另外一个人参与进来166
11.3 建议3:简化167
11.4 建议4:println()是你的朋友168
第12章 库171
12.1 库概述171
12.2 内置库172
12.3 第三方库172
12.4 手动安装库173
第六节课 你周围的世界
第13章 数学176
13.1 数学和编程176
13.2 模数177
13.3 随机数178
13.4 概率回顾179
13.5 代码中的事件概率179
13.6 Perlin噪声181
13.7 map()函数184
13.8 角度185
13.9 三角学186
13.10 振荡188
13.11 递归190
13.12 二维数组193
第14章 三维平移和旋转198
14.1 z坐标轴198
14.2 P3D究竟是什么202
14.3 顶点形状203
14.4 自定义三维图形205
14.5 简单的旋转207
14.6 围绕不同的轴旋转209
14.7 scale()函数211
14.8 pushMatrix()和popMatrix()函数212
14.9 用Processing模拟太阳系218
14.10 PShape类220
第六节课的项目222
第七节课 显微镜下的像素
第15章 图像224
15.1 图像入门224
15.2 图像的动画效果226
15.3 我的第一个图像处理滤镜228
15.4 图像数组229
15.5 像素,像素,更多的像素231
15.6 图像处理简介235
15.7 另外一个图像处理滤镜:制作属于你自己的tint()函数236
15.8 写入另外一个PImage对象的像素237
15.9 第二阶段:像素组处理239
15.10 具有创意的可视化242
第16章 视频244
16.1 视频直播244
16.2 已录制的视频249
16.3 软件镜像251
16.4 视频作为传感器和计算机视觉256
16.5 背景消除260
16.6 运动检测263
16.7 计算机视觉库266
第七节课的项目267
第八节课 外面的世界
第17章 文本270
17.1 字符串从哪来270
17.2 什么是字符串271
17.3 显示文字273
17.4 文字的动态效果275
17.5 文字马赛克278
17.6 旋转文字280
17.7 按字符逐一显示文字281
第18章 数据输入286
18.1 字符串的操作286
18.2 拆分和组合288
18.3 处理数据290
18.4 处理文本文件291
18.5 表格数据293
18.6 非标准化格式的数据297
18.7 文本分析302
18.8 XML305
18.9 使用Processing的XML类307
18.10 JSON312
18.11 JSONObject和JSONArray315
18.
前言/序言
Learning Processing:A Beginner抯 Guide to Programming Images, Animation, and Interaction, Second Edition本书讲的是什么本书讲了一个故事。一个关于解放与自由的故事,一个关于逐步了解计算机基础知识的故事。通过编写代码,可以创造属于你自己的多媒体设计,而不必拘泥于已有的软件工具。这个故事不仅仅是为科学家和工程师准备的,同时也是为你准备的。
本书是为谁准备的本书是为初学者准备的。如果你到目前从未编写过一行代码,那么本书对你来说再合适不过了。本书的前9章会由浅入深地讲授编程的基础知识。你并不需要任何编程的背景知识,只需要有操作电脑的基础知识——打开电脑、浏览网页、运行程序之类的知识就足够了。
由于本书使用Processing进行学习,因此对于那些在视觉领域学习或工作的人来说,它就更加适用了,例如图形设计、绘画、雕塑、建筑、电影、视频、插图、网页设计等。如果你从属于上述领域(在上述领域使用电脑),你很可能精通某个特定的设计软件(很可能不止一个软件),例如Photoshop、Illustrator、AutoCAD、Maya、After Effects等。而本书的意义在于使你摆脱(至少是部分摆脱)现有软件工具的束缚。如果可以创造自己的工具,而不是使用他人的软件,那你能创造出什么?如果你已经具有一定的编程经验,并且对Processing非常感兴趣,那么本书同样非常有用。本书的前面几章会为你提供一个速成的编程复习资料(和坚实的基础知识),本书的后面则是关于Processing编程的高级话题。
什么是Processing假设你正在学习CS 101(Computer Science 101)课程,其中可能讲到了Java编程语言的内容。下面是课程中第一个示例程序的输出结果:
一直以来,教授给程序员的基本命令行输出是:
1.文本输入(TEXT IN)→以文本的形式编写代码。
2.文本输出(TEXT OUT)→在命令行显示文本输出。
3.文本交互(TEXT INTERACTION)→用户可以在命令行输入文本,实现和程序的交互。
这个示例程序中的输出“Hello, World!”是一个经典段子,按照惯例,在各种编程语言教学中,“Hello, World”总是作为第一个程序的文本输出。这个示例程序最早出现在1974贝尔实验室的备忘录中,它是由Brian Kernighan撰写的,题名为《Programming in C: A Tutorial》。
学习Processing的优势在于:它自身强调一种更直观并且基于视觉反馈的编程环境,因而它更有助于艺术家和设计师学习编程。
1.文本输入(TEXT IN)→以文本的形式编写代码。
2.视觉输出(VISUALS OUT)→在窗口显示视觉输出。
3.鼠标交互(MOUSE INTERACTION)→用户通过鼠标和程序进行交互(在本书中你会看到更多例子)。
在Processing中,“Hello,World!”很可能如下图所示:
你好,图形!
虽然看上去是相当友好的设计,但是它并没有引人注目的感觉(在这里暂且忽略掉第3步:交互),“Hello, World!”也是这样。然而,这种方式所聚焦的理念(通过即时的视觉反馈来学习)却是截然不同的。
Processing并不是第一个遵循这种范式的语言。1967年,Daniel G. Bobrow、Wally Feurzeig和Seymour Papert 创造了Logo编程语言。一名程序员使用Logo语言编写了一个指令:在屏幕上用龟标生成图形和设计。尔后John Maeda在1999年设计了名为Design By Numbers的语言,该语言使视觉设计师和艺术家以简单、易用的句法来进行编程。
尽管这些语言具有令人惊叹的简洁性和创新性,但它们的功能非常有限。
Processing作为Logo和Design by Numbers的直系后代,于2001年诞生于麻省理工学院媒体实验室的美学与计算研究小组。它是由Casey Reas和Benjamin Fry设计的开源语言,当时他们是著名的计算机艺术家John Maeda的研究生。
Processing是一门开源编程语言,提供了对图片、动画和声音进行编程的环境。学生、艺术家、设计师、建筑师、研究人员和业余爱好者可以使用Processing进行学习、制作原型以及作为生产工具。你可以通过视觉化界面学习计算机编程的基础知识,或者作为软件速写本以及专业化的生产工具。除了该领域的其他相关专有软件之外,Processing为艺术家和设计师提供了一个新的选择。
—www.processing.org总之,Processing是非常令人惊叹的。首先,它是免费的,你不用花一分钱。其次,由于Processing基于Java编程语言(本书后面的章节将会对此做进一步探讨),因此它是一门十分实用的功能性语言,没有Logo或者Design by Numbers语言的限制,使用Processing几乎可以实现各种功能。最后,Processing是开源的。虽然在大多数情况下这并不会是本书内容的关键细节,可是,随着深入学习Processing,你就会意识到这种开源的理念是非常宝贵的。正是源于此,大量的开发者、教师和艺术家才会聚集到一起分享作品,贡献想法,进而大大拓展了Processing。
快速浏览一下processing.org网站,你就会发现这是一个充满勃勃生机、具有创造力的社区。在这里,初学者和专家通过公开交流创意和作品共享代码。尽管网站上有完整的参考文档,以及数量庞大的示例帮助你快速上手,但是并没有给真正的初学者提供一个系统的详尽教程。本书通过详尽地介绍编程基础知识和探索高级编程话题,可以帮助你参与到Processing这个社区网站,并做出你的贡献。
2012年,Processing基金会(Processing Foundation)成立,它旨在规范Processing软件的目标和理念:“在编程知识越来越重要的今天,努力让来自各行各业的人都能轻松学习编程。”为了实现这个目标,基金会大力支持几种不同语言的软件环境,其中包括Processing(Java)、p5.js(JavaScript)和Processing.py(Python)。虽然本书主要讨论Java框架的知识,但是我也极力向你推荐其他几个编程语言框架(如果你对构建网站感兴趣的话,尤其推荐p5.js)。我同样保留了本书所有示例的p5.js版本,你可以在http://learningprocessing.com上找到。
虽然没有Processing就不可能编写本书,但是你要知道,本书实质上并不仅仅是一本关于Processing的书。编写本书的初衷是教会你编程。我只是选择了使用Processing作为编程的学习环境,但本书所关注的是核心计算编程概念,这些概念将会在你以后学习其他编程语言和环境时,继续带领你前行。
难道我不应该学习 在空白处填上你想学习的编程语言。你可能曾经听说某门编程语言“Flibideeflobidee”将会是未来前景最广阔的语言。你肯定听出来这是瞎编的,但是我敢肯定你的某个朋友曾经不断跟你讲某门语言是多么功能强大。它是如何使得编程变得如此容易。使用这门语言,5分钟之内你就能实现以前需要花费一天时间才能完成的程序。而且,它在Mac上、个人电脑上,甚至烤面包机上都能运行!你还可以用它编写一个陪你聊天的宠物!而且是用日语聊天!
事情是这样的。那个可以解决你所有问题的神奇编程语言根本不会存在。没有一门语言是完美的,Processing也有与生俱来的缺陷和不足。可是Processing是一个学习编程的很棒的起点。本书传授计算机编程的基本原理,不论是使用Processing、Java、JavaScript、C、Python还是其他语言,它们都会使你受益终身。
当然,对于某些项目来说,其他语言和环境可能更加适合。但Processing对于大部分的项目来说都是相当不错的选择,尤其是媒体相关和基于屏幕的任务。对Processing一个普遍的误解是它只适合于小打小闹,其实并不是这样的:许多人(包括我在内)都在项目自始至终使用Processing。Processing可以用来制作网络应用、博物馆和美术馆的艺术装置、公共空间的展览互动装置。比如,我曾经使用Processing在纽约市军队总部的大厅里制作一个实时的图像视频墙,它展示在120英尺×12英尺(没有错,是英尺!)大的屏幕上。
Processing不仅适合于项目制作,它还非常容易上手,它真的很棒。它是免费的、完全开源的软件;它的界面简洁;它是基于视觉的工具;它还非常有趣;它是面向对象的语言(后面会讲解)。此外,它能够在Mac端、PC端以及Linux机器上运行。
但是Processing的一个短板是对于网页的兼容性不足。2001年,在Processing刚诞生的时候,Java applet是将实时图形项目发布到网页的主要方法。可是到了2015年,Java applet已经不复存在。由Lauren McCarthy倡导的Processing基金会的p5.js项目(http://p5js.org)现在成为一个新的选择。关于这点,本书第21章将会具体探讨。
说了这么多,我就是想告诉你不要再去纠结应该选择哪门编程语言了,应该把精力集中到学习Processing编程的基本原理上。这方面的知识将有助于你超越本书的有限内容,帮助你学习其他任何编程语言。
把想法直接写在这本书上假如你是一名小说家或者剧本作家,你的写作时间仅仅是坐在计算机前打字的时间吗?大多数情况下并不是这样。或许是晚上躺在床上的时候,脑海中突然出现了一些想法;或许是坐在公园的长椅上惬意地喂着鸽子时,脑海中上演着一幕幕的对话;又或许是有一天晚上在酒吧,你在纸巾上快速勾勒出一个精彩的故事情节。
好吧,其实编写软件、程序、代码并没有什么不同。只是由于编程工作本质上和计算机紧紧捆绑在一起,因此你常常会忘记这一点。但有机会的话,你一定要让你的头脑发散、畅想。在远离办公桌、电脑的时候去头脑风暴一些奇思妙想。就我个人而言,我常常在慢跑的时候完成了编程工作最棒的构思。
当然,使用电脑实际输入代码的部分也是非常重要的。我的意思是,虽然不可能仅仅通过舒舒服服地躺在游泳池里就能完成一个复杂的任务,但如果只是每天伏案工作,面对着刺眼的显示器,这是远远不够的。
所以,随时在书上做笔记就是一个好的方法,这样能锻炼你离开键盘后思考代码的能力。我已在本书中包含了许多填空形式的练习题。(这些练习题的所有答案都可以在本书配套网站http://learningprocessing.com上找到,方便你检查自己的答案。)充分利用本书的空白处吧!每当你有灵感和想法的时候,就迅速把它们写到书上。把本书当成一个练习册或者速写本。(当然,你也可以使用自己的速写本。)最后我建议,你要花一半的时间在不用电脑的时候阅读本书,另一半时间则是坐在计算机旁,实践本书中的示例。
我应该如何阅读本书最好是按照章节顺序阅读。第9章之后,你就可以轻松地随便翻看本书了,但是前面几章,建议你按照顺序来读。
本书按照先后顺序教你编程。更高级的阅读方式则是:根据自己的需要跳读,将本书作为一个参考文档来使用。本书的前一半内容都是首先讲解一个示例,然后一步一步分解这个示例中所涵盖的知识点。除此以外,计算机编程的基本原理是按照一个特定的顺序来逐步呈现的,这个顺序是多年来在纽约大学帝势艺术学院的互动电信项目中许多同学反复摸索之后的结果(http://itp.nyu.edu)。
我将本书所有23章内容分为十节课。前面9章介绍了计算机图形学,涵盖了计算机编程的基本原理。第10~12章则暂停讲授新知识,转向讨论如何用增量方法(incremental approach)构建更加大型的项目。第1
Processing编程学习指南(原书第2版) 下载 mobi epub pdf txt 电子书 格式