产品特色
        编辑推荐
    适读人群 :专业编程人员和学习互动艺术的读者                                 入门书籍,内容丰富,实用                 
内容简介
     《Processing互动编程》共分3部分:第1部分主要介绍Processing编程语言,为避免枯燥,使用了大量的与现实生活类比的方法,让你一层一层地深入,培养抽象和从整体到部分再到整体的思维方式;第2部分主要介绍图形绘制和图形动画,让你学会用程序描述的方法来绘制各种各样的图形,并且在图形的基础上,利用数学知识来实现程序动画,该部分会涉及坐标、颜色、文本、位图、3D等概念;第3部分主要介绍在程序动画的基础上添加交互因素,构成完整的交互结构,这些交互因素包括鼠标、键盘、时间等。《Processing互动编程》可以让读者学会互动编程的思维模式,同时激发个人的互动艺术理念。     
目录
   第1部分语言基础 
第1章Processing 
1.1HelloProcessing 
1.2Helloworld 
1.3第一个图形 
1.4第一个动画 
1.5第一个交互 
第2章变量 
2.1声明变量 
2.2数据类型 
2.3变量名 
2.4变量赋值 
2.5常?量 
第3章?运算符 
3.1基本算数运算符 
3.2赋值算数运算符 
3.3自增、自减运算符 
3.4关系运算符 
3.5逻辑运算符 
3.6条件运算符 
第4章条件语句 
4.1if条件语句 
4.2ifelse语句 
4.3elseif语句 
4.4swicth分支语句 
第5章循环语句 
5.1while循环语句 
5.2for循环语句 
5.3循环嵌套 
5.4跳出循环 
第6章函数 
6.1?定义函数 
6.2函数的参数 
6.3函数返回结果 
6.4函数重载 
6.5函数递 
第7章类 
7.1定义类 
7.2类的继承 
7.3覆盖父类方法 
7.4重写toString()方法 
7.5标签类 
第8章字符串 
8.1数组基本概念 
8.2字符串的初始化 
8.3字符串的方法 
8.4字符串处理函数 
8.5实现字符串大小写转换 
第9章数组 
9.1二维数组 
9.2数组处理函数 
9.3实现连接两个数组 
9.4值数据类型与引用数据类型 
第10章列表 
10.1添加和删除列表元素 
10.2设置和返回列表元素 
10.3列表的排序 
10.4列表的运算 
第11章字典 
11.1字典的键和值 
11.2遍历键和值 
11.3排序键和值 
11.4字典的运算 
第2部分图形、动画 
第12章运行环境 
12.1坐标系统 
12.2程序主结构 
12.3帧速率 
12.4窗口大小 
第13章数学基础 
13.1数学计算 
13.2约束、映射 
13.3角度制和弧度制 
13.4三角函数 
13.5反正切函数 
第14章2D基础图形 
14.1基础几何图形 
14.2描边属性 
14.3扇形、弓形、环形、扇环 
14.4虚线、网格 
第15章颜色 
15.1色彩模式 
15.2创建和设置颜色 
15.3颜色分量 
15.4颜色渐变 
第16章变换 
16.1基本变换 
16.2变换堆栈 
16.3使用变换绘制图形 
16.4变换动画 
第17章曲线 
17.1Bezier曲线 
17.2Bezier曲线路径动画 
17.3Curve曲线 
17.4Curve多条连续路径动画 
第18章复杂图形 
18.1vertex绘制 
18.2?正多边形和星形 
18.3vertex环形、扇环 
18.4PShape图形对象 
第19章3D图形 
19.13D坐标系统 
19.2三维灯光 
19.3三维材质 
19.4三维透视 
第20章随机、噪波、向量 
20.1随机函数 
20.2噪波函数 
20.3PVector向量对象 
20.4粒子动画 
第21章位图 
21.1加载位图 
21.2显示位图 
21.3PImage位图对象 
21.4位图遮罩动画 
21.5滤镜 
21.6混合 
21.7贴图 
21.8位图随机动画 
第22章文本 
22.1文本术语 
22.2文本显示 
22.3字体属性 
22.4创建和设置字体 
22.5环形文本 
22.6文本随机动画 
第3部分交?互 
第23章鼠标交互 
23.1鼠标事件 
23.2鼠标事件函数 
23.3鼠标状态变量 
23.4draw()函数里实现所有鼠标事件 
23.5鼠标拖拽 
23.6鼠标光标 
23.7鼠标绘制 
第24章键盘交互 
24.1键盘事件 
24.2键盘控制 
24.3键盘交互 
24.4窗口焦点 
第25章日期、时间 
25.1日期、时间函数 
25.2设置程序使用期限 
25.3制作简单计时器 
25.4模拟时钟        
精彩书摘
     第1部分 语言基础  
  第1章 Processing 
  1.1 Hello Processing 
  Processing开发环境(Processing Development Environment),简称PDE,可以从它的官方网站(https://www.processing.org/download/)下载安装。PDE主要有运行窗口和编辑窗口两个窗口。运行窗口用来运行你的程序效果,编辑窗口主要用来编辑代码和发布程序。编辑窗口包括工具栏、标签栏、代码编辑区、消息区、控制台。 
  工具栏 :包括运行、停止运行、新建、打开、保存、发布等按钮。 
  运行:点击“运行”按钮可以运行你的程序。运行时会弹出“运行窗口”,你可以通过“运行窗口”来观察程序的视觉效果和交互效果。 
  停止运行:点击“停止运行”按钮可以关闭“运行窗口”。 
  新建:新建一个Processing工程文件,会弹出一个新的未保存的代码编辑窗口。在开发过程中,可以利用它来新建代码编辑窗口,测试某一段程序代码单独运行的效果。 
  打开:打开一个指定路径的Processing工程文件,还可以打开最近的工程或者是Processing事例代码。 
  保存:保存目前的工程文件。 
  开发模式:点击右上角“Java”按钮可以切换开发模式。Processing支持很多种开发模式,可以通过点击“Add Mode”来添加新的开发模式(JavaScript、Android等),添加后需要重新运行Processing才能显示。 
  标签栏:打开标签栏向下箭头的弹出菜单,可以点击“New Tab”新建标签。如果代码有很多行的话可以用它来扩展程序。不过一般我们会用它来定义一个单独的类,在后面的第7章我们会详细讲到。 
  代码编辑区:所有的程序代码都在这里编辑。会用不同颜色来区分数据类型、系统变量、系统常量、系统函数、语句等。 
  消息区:显示程序编译时的错误(语法错误),还有一些提示消息。 
  控制台:显示程序运行时的错误,还可以用print()或println()函数在这里输出信息。 
  1.2 Hello world 
  我们开始写第一行代码,让你的Processing向世界问声好。打开Processing,在代码编辑区输入下面的代码: 
  println("Hello, world!"); 
  点击“运行”后,在控制台会输出“Hello,world!”(不包含双引号)。 
  我们在程序开发的过程中,可能会追踪某个变量在某个时刻的值,或者输出一些有用的信息来分析程序。这时可以使用print()和println()函数,在程序运行的时候通过控制台输出信息。print()和println()函数的区别是,println()函数输出完信息后会换行,而print()函数不会,例如: 
  println("Hello,"); 
  println("world!"); 
  /* 输出: 
  Hello, 
  world! 
  */  
  print("Hello,"); 
  print("world!"); 
  //输出:Hello,world! 
  有时候我们在写代码时为了便于阅读和理解会给代码添加一些标注,但是我们知道在代码编辑器里写的任何非程序语法的文字,程序都会报错。在Processing里可以使用注释,注释是不会被当作执行代码的。用“//”来添加单行注释,用“/* ”开始符号和“*/”结束符号来添加多行注释: 
  //单行注释  
  /* 
  多行注释 
  多行注释 
  */ 
  1.3 第一个图形 
  以画面中心为原点画一个直径为100像素的圆,如图1.2所示。 
  ellipse(50,50,100,100); //画一个椭圆,x、y坐标都为50,宽和高都为100 
  Processing提供了大量有关绘图的函数,这些函数就好比是各种各样的绘图工具。而且还可以添加图片,支持叠加和滤镜功能,如果你之前学习过图形编辑软件的话,比如Adobe Photoshop,那么在学习Processing的时候,会发现有很多概念都似曾相识。没错!图形编辑软件其实就是把绘图操作可视化。而程序绘图是使用程序语言来描述绘图。所谓描述绘图就是,概括出图形的所有特征属性,用相应的属性值来描述它。比如画一个圆,圆的特征属性是半径和位置,那么我们只要告诉Processing这个圆的半径和位置,Processing就会在屏幕帮我们画出这个圆。是不是很简单,就好像你在告诉一个使用绘图软件的人,让他帮你画出你想要的东西一样。只不过你和他沟通的时候,需要和他说他能听得懂的语言——Processing程序语言。本书将教你如何使用Processing程序语言,让你学会和他沟通,绘制出各种各样的图形。 
  1.4 第一个动画 
  以画面中心为原点画一个圆,让圆的直径从0开始逐渐变大,如图1.3所示。 
  int diameter = 0; //声明一个直径变量,初始值为0  
  //draw()函数会不断地循环执行 
  void draw() { 
  //画一个圆,直径为diameter变量 
  ellipse(50, 50, diameter, diameter); 
  diameter++; //每次循环,让直径变量增加1 
  } 
  上面的圆形可以随着时间逐渐变大,是因为把它的特征属性“直径”设置成了随着时间变化的量,这样就形成了动画。这种把特征属性设置为随着时间而变化的方法,是程序动画的基本实现机制。和我们传统的逐帧动画不同,传统逐帧动画需要在每一帧都重画,而程序动画只需要改变它的特征属性,计算机就会帮我们重绘,这也是为什么我们在绘图的时候用描述图形特征属性的方法来绘制。 
  1.5?第一个交互 
  不断以鼠标x、y坐标为原点画直径为100像素的圆,你可以移动鼠标来进行交互,如图1.4所示。 
  //draw()函数会不断循环执行 
  void draw() { 
  //画一个圆,位置为鼠标的x、y坐标 
  ellipse(mouseX, mouseY, 100, 100); 
  } 
  上面的圆形可以随着鼠标的移动而改变位置,是因为把它的特征属性“位置”设置成了随着时间变化的量,并且变化的量由鼠标位置来决定,这就是在程序动画的基础上添加交互因素的设计方法。 
  我们已经学习了第一个图形、第一个动画、第一个交互。在这里我想告诉读者,本章不要求你理解上面所有例子中每一行代码的原理,主要目的是让你对交互动画有个初步的理解,并且能够带着交互动画的概念来完成本书的学习。下面是构成交互动画的三个过程: 
  (1)图形:用特征描述绘图。 
  (2)动画:把特征属性定义为随时间变化的量。 
  (3)交互:设置变化量的决定因素。 
  ……      
前言/序言
       
				 
				
				
					《数字艺术新浪潮:从像素到动态表达》  简介  在信息爆炸的数字时代,我们已不再满足于静态的视觉呈现。从触屏的交互式海报,到沉浸式的虚拟现实体验,再到响应用户行为的动态网页,数字艺术的边界正在被不断拓展。然而,要驾驭这股涌动的创意洪流,需要的不仅仅是天马行空的想象力,更需要一套能够将零散想法转化为鲜活数字生命的技术语言。《数字艺术新浪潮:从像素到动态表达》便是这样一本旨在为你开启数字艺术创作新篇章的指南。  本书并非枯燥的技术手册,而是一次充满探索与实践的旅程。它将引导你深入理解数字艺术创作的核心原理,从最基础的像素构成、色彩理论,到复杂的算法生成、实时互动设计。我们相信,真正的创造力源于对工具的深刻理解与自由运用。因此,本书将聚焦于那些能够赋予你直接控制数字元素、让它们按照你的意愿呼吸、移动、回应的编程技术。  第一部分:数字世界的基础构建  在踏上创作之旅前,我们首先需要为你的想象力打下坚实的根基。这一部分将带你认识数字世界的基本构成元素。     像素的语言: 任何数字图像,无论多么复杂,都离不开构成它的基本单元——像素。我们将从像素的本质出发,理解它们如何组合成色彩、形状和纹理。你将学会如何以编程的方式“绘制”像素,理解它们的颜色模型(RGB、CMYK等)及其在不同媒介下的表现差异。这不仅仅是关于画面的美感,更是关于理解数字信息如何被“看见”。    色彩的魔力: 色彩是数字艺术中最直接、最富有情感的表达方式。本书将深入探讨色彩理论,从色轮、互补色、对比色到色彩心理学。你将学习如何通过编程精确地控制颜色,如何创建和谐、对比强烈或具有特定情绪的色彩方案。我们还将触及颜色空间的概念,理解不同颜色空间在数字创作中的应用场景,例如在屏幕显示与印刷输出之间的转换。    几何学的韵律: 从简单的直线、圆形到复杂的曲线和多边形,几何形状构成了数字视觉元素的基础骨架。你将学习如何使用代码绘制各种几何图形,理解向量图形与栅格图形的区别,并探索如何通过数学函数来生成更加有机、复杂的形状。这部分内容将为你铺设通往更高级图形生成的道路。    坐标系的探索: 在二维或三维的数字空间中,理解坐标系是定位和操控图形的关键。我们将深入讲解笛卡尔坐标系、极坐标系等,并演示如何通过编程将图形放置在精确的位置,如何进行缩放、旋转和形变。熟练掌握坐标系,你就能如同在画布上挥洒自如一般,在数字空间中自由地安排你的创作元素。  第二部分:让画面“活”起来——动态与运动的艺术  静态的图像终究难以完全承载我们涌动的创意。让画面动起来,是数字艺术表达情感、叙事和互动性的重要途径。     时间的魔术师: 时间是动态艺术的灵魂。你将学习如何通过编程控制元素在时间轴上的运动,如何定义动画的开始、结束、持续时间和插值方式。我们将探索关键帧动画、基于时间函数的连续运动,以及如何创建流畅、自然的运动轨迹。    运动的轨迹与法则: 物理世界的运动规律,如重力、惯性、弹性,都能赋予数字动画更强的真实感和生命力。本书将引入一些基础的物理模拟概念,让你能够编写代码来模拟这些运动,使你的动画元素看起来更加自然,仿佛拥有自己的生命。    程序化动画的魅力: 传统的逐帧动画耗时耗力,而程序化动画则提供了一种更高效、更具创造性的方式。你将学习如何利用算法来生成动态效果,例如粒子系统的行为、随机变化的纹理,或者根据预设规则自动生成的复杂动画序列。这种方式能让你在短时间内创造出令人惊叹的视觉奇观。    循环与节奏的交织: 动画的循环和节奏是营造视觉冲击力和叙事氛围的关键。我们将探讨如何设计出无缝的循环动画,如何通过节奏的变化来引导观众的注意力,以及如何利用重复的模式来增强画面的统一性和表现力。  第三部分:连接观众——互动设计的实践  在数字世界中,艺术不再是单向的传递,而是与观众之间的双向对话。互动设计赋予了数字艺术生命,使其能够响应用户的行为,并呈现个性化的体验。     用户输入的捕捉与响应: 鼠标的移动、点击、键盘的输入,甚至触摸屏的多点触控,都是用户与数字艺术互动的基本方式。你将学习如何编写代码来捕捉这些用户输入事件,并根据这些事件来触发相应的视觉反馈或行为变化。    状态的演变与转换: 互动艺术的核心在于“状态”的改变。一个图形可以根据用户的操作而改变颜色、大小、形状,甚至位置。本书将引导你理解如何通过编程来管理和改变这些状态,从而实现丰富的互动效果。    事件驱动的艺术: 事件驱动的编程模型是实现实时互动的基础。你将学习如何将用户的行为视为“事件”,并编写相应的“事件处理器”来响应这些事件。这种模型使得你的数字艺术能够实时地对用户的每一个动作做出反应。    数据可视化与互动: 将复杂的数据转化为直观、易懂的视觉形式,是现代数字艺术的重要方向。本书将介绍如何利用编程将数据可视化,并让这些图表能够根据用户的探索行为而动态变化,提供更深入的洞察。  第四部分:构建完整的数字作品  从单个的视觉元素到能够独立运行的数字作品,我们需要将之前所学的知识融会贯通,并构建起完整的创作流程。     架构与组织: 一个复杂的数字作品需要清晰的结构和良好的组织。你将学习如何将代码模块化,如何管理不同的创意元素,以及如何构建一个可维护、可扩展的创作框架。    用户体验设计入门: 好的互动艺术不仅要技术上可行,更要在用户体验上引人入胜。我们将探讨一些基础的用户体验设计原则,帮助你思考如何让你的作品更容易被理解、更容易被操作,并且能够带来愉悦的体验。    跨媒体的探索: 数字艺术的边界远不止于屏幕。本书将适当地触及一些跨媒体应用的思路,例如如何将你的数字作品导出为视频,如何将其集成到网页中,或者为更复杂的交互装置打下基础。    创新与实践: 学习编程的最终目的在于创造。本书将穿插大量的实例,从简单的动画练习到复杂的交互装置原型,鼓励读者动手实践。我们将提供项目灵感,并引导读者思考如何将所学知识应用于自己的独特创意之中。  目标读者  《数字艺术新浪潮:从像素到动态表达》面向所有对数字艺术创作充满热情、渴望用代码实现创意的人们。无论你是希望提升现有设计能力的平面设计师,希望为网页注入活力的前端开发者,还是对交互装置充满好奇的艺术家,亦或是刚刚踏入数字创作领域的新手,本书都将是你宝贵的伙伴。  本书不要求你有深厚的计算机科学背景,但鼓励你拥有探索未知的好奇心和动手实践的勇气。我们相信,通过系统性的学习和持续的实践,你将能够掌握驾驭数字艺术的强大力量,在广阔的数字世界中,用你的创意描绘出属于你的独特浪潮。  结语  数字艺术的世界瞬息万变,充满无限可能。掌握了编程的语言,你就掌握了与这个世界对话的钥匙。愿《数字艺术新浪潮:从像素到动态表达》能点燃你心中的火花,帮助你将脑海中那些闪烁的灵感,转化为触手可及、引人入胜的数字艺术作品。让我们一同,开启这段激动人心的创造之旅。