《交互式程序设计 第2版》一导读


《交互式程序设计 第2版》一导读_第1张图片

前 言

本书分三部分。第一部分(第1~6章)介绍贯穿本书的3个项目,第二部分(第7~10章)介绍交互设计和应用程序创作中最普遍的主题,第三部分(第11~17章)深入讨论相关进阶主题。当中还有对相关人士的采访,包括程序员、艺术家、设计师以及工具的开发者。本书涉猎如此广泛,无法对每一个主题进行深入探讨,有兴趣进一步研究的读者不妨参考书中所列出的书目、网站、设计师和艺术家。
本书包括及未包括的内容
当下交互设计领域迅猛发展,观念日新月异,笔者对此的兴奋之情难以言表。受时间和篇幅所限,无法囊括所有的方面,内容上不得不有所取舍。
本书包括的内容
本书包括Processing、Arduino和openFrameworks。考虑到读者中会有编程新手,书中介绍了一些编程基本知识,包括用于Arduino和openFrameworks的C和C++编程知识,并涵盖Processing的编程语言。其中提及不少openFrameworks和Processing的库,但这样的库实在太多,不能一一列举。所提及的库和扩展组件部分来自官方发布,另外一些则是专为本书开发的,或是由热心程序员另外提供的。
此外还有电子和计算机硬件的一些基础知识,以及Arduino开发工具和器件的介绍。Arduino和Processing的集成开发环境(Integrated Development Environment,IDE)是必要内容,同样重要的还有openFrameworks的两个IDE——Code::Blocks和Xcode。我们还会深入探讨Arduino Uno板和Arduino Mini板,同时简单介绍另外两种板。Arduino专用的扩展板(shield)也是重点关注的部分。
本书未包括内容
本书将介绍如何搭建某些电路,但不可能涵盖电子和硬件方面的所有基础知识,更不可能详述电子学理论。第17章列出了一些很好的教程和参考资料,供有需要的读者进一步学习。我们会介绍Processing,它是Java编程语言的一个子集;但受篇幅所限,同时也为了避免内容过于发散,我们不会介绍Java。C++也未能提及太多,如模板、内嵌函数、运算符重载和抽象类等内容就没有涉及,有劳读者通过第17章列出的参考资料另外了解。
Arduino兼容的电路板数不胜数,本书简单介绍Mega、Nano和Fio等有限几种。事实上还有很多非Arduino团队开发的电路板,我们就没法一一提及了。不少器件和工具很值得深入讨论,但受主题和篇幅所限,只能忍痛割舍。
遗憾未能提及的还有人工智能、数据可视化和算法音乐等。尽管这些内容让艺术家和设计师着迷,但本书关注的是交互设计的理论和技术,以及硬件和编程的基础知识。书末列出的参考资料可满足读者求知的欲望。
本书的约定
本书使用了以下排版约定:
斜体(Italic)
用于新术语、URL、电子邮件地址、文件名与文件扩展名。
等宽字体(Constant width)
用于表明程序清单,以及在段落中引用的程序中的元素,如变量、函数名、数据库、数据类型、环境变量、语句、关键字等。
等宽粗体(Constant width bold)
用于表明命令,或者需要读者逐字输入的文本内容。
等宽斜体(Constant width italic)
用于表示需要使用用户提供的值或者由上下文决定的值来替代的文本内容。
注意:这段内容表示一个技巧或建议。
警告:这段内容表示危险操作或重要注意事项。
示例代码的使用
本书提供代码的目的是帮你快速完成工作。一般情况下,你可以在你的程序或文档中使用本书中的代码,而不必取得我们的许可,除非你想复制书中很大一部分代码。例如,你在编写程序时,用到了本书中的几个代码片段,这不必取得我们的许可。但若将O扲eilly图书中的代码制作成光盘并进行出售或传播,则需获得我们的许可。引用示例代码或书中内容来解答问题无需许可。将书中很大一部分的示例代码用于你个人的产品文档,这需要我们的许可。
如果你引用了本书的内容并标明版权归属声明,我们对此表示感谢,但这不是必需的。版权归属声明通常包括:标题、作者、出版社和ISBN号,例如:“Programming Interactivity, Second Edition by Joshua Noble (O扲eilly). Copyright 2012 Joshua Noble, 978-1-449-31144-5”。
如果你认为你对示例代码的使用已经超出上述范围,或者你对是否需要获得示例代码的授权还不清楚,请随时联系我们:[email protected]
联系我们
有关本书的任何建议和疑问,可以通过下列方式与我们取得联系:
美国:
O扲eilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
我们会在本书的网页中列出勘误表、示例和其他信息。可以通过http://shop.oreil.com/product/0636920021735.do访问该页面。
要评论或询问本书的技术问题,请发送电子邮件到:
[email protected]
想了解关于O扲eilly图书、课程、会议和新闻的更多信息,请访问以下网站:
http://www.oreilly.com.cn
http://www.oreilly.com
致谢
首先要感谢各位出色的工程师、艺术家、程序员和梦想家,是他们创造了这些精彩的交互平台。必须感谢Massimo Banzi、Tom Igoe、David Cuartielles、Gianluca Martino、David A. Mellis、Ben Fry、Casey Reas、Zach Lieberman、Theo Watson、Arturo Castro和Chris O扴hea, 他们构建了书中介绍的技术框架。当然还有很多要感谢的人,篇幅所限,未能全部列出,请见谅。有赖全体平台和系统的创造者,让我们得以有所触发和创作,让设计、科技和艺术之间发生丰富又迷人的对话。此书也是笔者给大家的一个小小的回馈,献给帮助过我、启发过我的人们,献给广大投身于此领域的程序员、艺术家和设计师,让更多的人参与到这样的话题中来。还要感谢各位受访者,谢谢他们抽出宝贵的时间回答我的问题,让书中内容更丰富,让交互设计和艺术界更精彩。感谢为本书写代码的各位,感谢在论坛上为新手解答问题的各位:谢谢你们为构建讨论社区所作出的努力。
本书得以成册,有赖于编辑团队的工作。技术编辑Michael Margolis、Adam Parrish、Matt Obert、Jeff Crouse和Jeremy Rotzstain实在太神奇了。他们的专业意见以及对我工作的清晰见解不仅帮助我写书,更是经常启发我,为我带来解决问题的新方法、新工具和技术,让我的思维保持活跃,进一步扩展我的视野。书中字字句句都凝聚了他们的心血,任何话语都不足以表达我对他们的感激之情。还要感谢LiquidWare的Justin Hunyh和Mike Gionfriddo以及Sparkfun的Nathan Seidle。感谢编辑Shawn Wallace、Robyn Thomas和Kim Wimpsett耐心细致的工作,要知道我的语法有多糟糕,本书初稿有多乱。最后要感谢Steve Weiss,从本书酝酿到最后完成,他一直聆听我的观点,并给我指点。
感谢在纽约、波特兰、阿姆斯特丹、日内瓦、伦敦、苏黎世、波士顿、巴黎、哥本哈根和图卢兹的每一位朋友,感谢他们的支持和见解,感谢他们提供网络资源和鼓励。当然还有我的家人,特别是我的母亲,谢谢母亲的支持和幽默。

目 录

第1章 交互设计导论
1.1 本书读者对象
1.2 交互领域中的编程
1.2.1 交互的本质
1.2.2 消息与交互
1.2.3 界面与交互
1.2.4 交互语言
1.3 设计与交互
1.4 艺术与交互
1.5 数据交换与探索
1.6 工作流程
第2章 编程基础
2.1 为什么本章你会读不止一次
2.2 代码的本质
2.3 变量
2.3.1 一些简单的类型
2.3.2 数组
2.3.3 类型转换
2.3.4 运算符
2.4 控制语句
2.5 函数
2.6 对象和属性
2.7 作用域
2.8 小结
第3章 使用Processing
3.1 下载并安装Processing
3.2 Processing集成开发环境
3.3 Processing应用程序基础
3.4 Processing绘图基础
3.5 捕获简单用户交互行为
3.6 导入外部库
3.7 将外部数据载入Processing
3.8 程序的运行和调试
3.9 导出Processing应用程序
3.10 更进一步
3.11 小结
第4章 Arduino
4.1 Arduino预备知识
4.2 初探Arduino开发板
4.3 Arduino集成开发环境
4.4 Arduino应用程序基础
4.5 Arduino语言的特性
4.6 怎么将元件连接到Arduino电路板
4.7 Hello World
4.8 应用程序调试
4.9 导入库
4.10 运行你的程序
4.11 小结
第5章 编程回顾
5.1 面向对象编程
5.2 类
5.3 公有与私有属性
5.4 继承
5.5 Processing:类与文件
5.6 C++:类与文件
5.7 指针与引用
5.8 小结
第6章 openFrameworks
6.1 集成开发环境和电脑
6.2 快速浏览C++
6.3 oF基础
6.4 oF应用程序
6.5 第一个应用程序“Hello, World”
6.6 绘制二维图形
6.7 显示视频和图像
6.8 编译oF程序
6.9 调试oF应用程序
6.10 导入库
6.11 小结
第7章 物理输入
7.1 与物理控件交互
7.2 动力学随想
7.3 本章涉及的元件
7.4 操纵控件
7.5 旋钮
7.6 使用灯光
7.7 检测触摸和振动
7.8 检测相对距离
7.9 感测运动
7.10 读取距离
7.11 理解二进制数
7.12 同其他应用程序进行通信
7.13 从Arduino发送消息
7.14 检测力和倾斜
7.15 I2C介绍
7.16 更进一步
7.17 小结
第8章 图形编程
8.1 屏幕与图形
8.2 多看、多读、多思
8.3 数学、图形及坐标系统
8.4 绘制策略
8.5 矩阵变换
8.6 创建运动
8.7 使用向量
8.8 使用图形控件
8.9 导入与导出图形
8.10 更进一步
8.11 小结
第9章 位图和像素
9.1 把像素作为数据
9.2 用像素和位图作为输入
9.3 用位图提供反馈信息
9.4 循环访问像素
9.5 位图操作
9.6 在oF中分析位图
9.7 使用边检测
9.8 使用像素数据
9.9 使用纹理
9.10 保存位图
9.11 更进一步
9.12 小结
第10章 声音与音频
10.1 声音作为反馈
10.2 声音和交互
10.3 计算机中声音是怎样的
10.4 Processing中的音频
10.5 openFrameworks里的声音
10.6 openFrameworks和FMOD Ex库
10.7 Maximilian
10.8 用Arduino对声音进行物理操作
10.9 PWM快速入门
10.10 用声音创造交互
10.11 更多参考资源
10.12 小结
第11章 Arduino和反馈
11.1 使用电机
11.2 智能反馈
11.3 使用伺服
11.4 使用家用电流
11.5 使用电器
11.6 LilyPad电路板介绍
11.7 使用振动
11.8 使用LED矩阵
11.9 使用串行外设接口协议
11.10 串行LED矩阵
11.11 使用液晶显示器
11.12 使用螺线管产生运动
11.13 更进一步
11.14 小结
第12章 协议和通信
12.1 网络通信
12.2 使用XML
12.3 理解网络和Internet
12.4 Processing中的网络通信
12.5 理解网络协议
12.6 使用ofxNetwork扩展库
12.7 用Arduino建立网络
12.8 Arduino与无线网络
12.9 用蓝牙通信
12.10 用MIDI通信
12.11 小结
第13章 图形与OpenGL
13.1 3D和交互有什么关系
13.2 理解3D
13.3 什么是OpenGL
13.4 在Processing中使用3D
13.5 在Processing中自定义形状
13.6 在Processing中使用坐标与模型变换
13.7 openFrameworks处理3D
13.8 OpenGL的光照
13.9 OpenGL的颜色混合模式
13.10 在oF中建立3D模型
13.11 在Processing中使用纹理
13.12 OpenGL的着色器
13.13 使用ofShader
13.14 在Processing中使用着色器
13.15 更进一步
13.16 小结
第14章 动作和姿势
14.1 计算机视觉
14.2 OpenCV
14.3 跟踪和使用blob
14.4 用oF检测特征
14.5 在Processing中使用OpenCV
14.6 Processing中的特征跟踪
14.7 结合物理做blob跟踪
14.8 OpenCV的进一步探索
14.9 手势识别
14.10 用oF捕获iOS手势
14.11 oF和触控技术
14.12 更进一步
14.13 使用微软的Kinect
14.14 小结
第15章 运动与定位
15.1 使用运动作为交互
15.2 使用软件模拟串行端口
15.3 理解并使用GPS
15.4 数据存储
15.5 将GPS数据记录到Arduino
15.6 发送GPS数据
15.7 获得移动设备的位置
15.8 更进一步
15.9 小结
第16章 空间与环境
16.1 建筑和空间的利用
16.2 感知环境数据
16.3 将XBee和Arduino结合使用
16.4 二维定位
16.5 X10协议
16.6 设置RFID传感器
16.7 读取温度和湿度
16.8 定位对象
16.9 更进一步
16.10 小结
第17章 更多参考资源
17.1 更多工具和平台
17.2 参考书籍
17.3 全书总结

你可能感兴趣的:(c/c++,人工智能,java)