閱讀750 返回首頁    go 支付寶


《交互式程序設計 第2版》一導讀


image

前 言

本書分三部分。第一部分(第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”。
如果你認為你對示例代碼的使用已經超出上述範圍,或者你對是否需要獲得示例代碼的授權還不清楚,請隨時聯係我們:permissions@oreilly.com
聯係我們
有關本書的任何建議和疑問,可以通過下列方式與我們取得聯係:
美國:
O扲eilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中國:
北京市西城區西直門南大街2號成銘大廈C座807室(100035)
奧萊利技術谘詢(北京)有限公司
我們會在本書的網頁中列出勘誤表、示例和其他信息。可以通過https://shop.oreil.com/product/0636920021735.do訪問該頁麵。
要評論或詢問本書的技術問題,請發送電子郵件到:
bookquestions@oreilly.com
想了解關於O扲eilly圖書、課程、會議和新聞的更多信息,請訪問以下網站:
https://www.oreilly.com.cn
https://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 全書總結

最後更新:2017-07-10 10:32:56

  上一篇:go  新零售賦能最古老產業 看阿裏巴巴的農產品上行布局
  下一篇:go  中國新四大發明背後的“數據智能”