關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
Processing編程學(xué)習(xí)指南(原書(shū)第2版)
本書(shū)詳細(xì)介紹了Processing編程的基本原理,全書(shū)分為十節(jié)課共23章,涵蓋了創(chuàng)建前沿的圖形應(yīng)用程序例如互動(dòng)藝術(shù)、實(shí)時(shí)視頻處理和數(shù)據(jù)可視化所需要的基礎(chǔ)知識(shí)。此外,作為一本實(shí)驗(yàn)風(fēng)格的手冊(cè),書(shū)中精心挑選了部分高級(jí)技術(shù)進(jìn)行詳盡解釋?梢宰寛D形和網(wǎng)頁(yè)設(shè)計(jì)師、藝術(shù)家及平面設(shè)計(jì)師快速熟悉Processing編程環(huán)境。
前 言Learning Processing:A Beginner抯 Guide to Programming Images, Animation, and Interaction, Second Edition本書(shū)講的是什么本書(shū)講了一個(gè)故事。一個(gè)關(guān)于解放與自由的故事,一個(gè)關(guān)于逐步了解計(jì)算機(jī)基礎(chǔ)知識(shí)的故事。通過(guò)編寫(xiě)代碼,可以創(chuàng)造屬于你自己的多媒體設(shè)計(jì),而不必拘泥于已有的軟件工具。這個(gè)故事不僅僅是為科學(xué)家和工程師準(zhǔn)備的,同時(shí)也是為你準(zhǔn)備的。
本書(shū)是為誰(shuí)準(zhǔn)備的本書(shū)是為初學(xué)者準(zhǔn)備的。如果你到目前從未編寫(xiě)過(guò)一行代碼,那么本書(shū)對(duì)你來(lái)說(shuō)再合適不過(guò)了。本書(shū)的前9章會(huì)由淺入深地講授編程的基礎(chǔ)知識(shí)。你并不需要任何編程的背景知識(shí),只需要有操作電腦的基礎(chǔ)知識(shí)——打開(kāi)電腦、瀏覽網(wǎng)頁(yè)、運(yùn)行程序之類(lèi)的知識(shí)就足夠了。 由于本書(shū)使用Processing進(jìn)行學(xué)習(xí),因此對(duì)于那些在視覺(jué)領(lǐng)域?qū)W習(xí)或工作的人來(lái)說(shuō),它就更加適用了,例如圖形設(shè)計(jì)、繪畫(huà)、雕塑、建筑、電影、視頻、插圖、網(wǎng)頁(yè)設(shè)計(jì)等。如果你從屬于上述領(lǐng)域(在上述領(lǐng)域使用電腦),你很可能精通某個(gè)特定的設(shè)計(jì)軟件(很可能不止一個(gè)軟件),例如Photoshop、Illustrator、AutoCAD、Maya、After Effects等。而本書(shū)的意義在于使你擺脫(至少是部分?jǐn)[脫)現(xiàn)有軟件工具的束縛。如果可以創(chuàng)造自己的工具,而不是使用他人的軟件,那你能創(chuàng)造出什么?如果你已經(jīng)具有一定的編程經(jīng)驗(yàn),并且對(duì)Processing非常感興趣,那么本書(shū)同樣非常有用。本書(shū)的前面幾章會(huì)為你提供一個(gè)速成的編程復(fù)習(xí)資料(和堅(jiān)實(shí)的基礎(chǔ)知識(shí)),本書(shū)的后面則是關(guān)于Processing編程的高級(jí)話題。 什么是Processing假設(shè)你正在學(xué)習(xí)CS 101(Computer Science 101)課程,其中可能講到了Java編程語(yǔ)言的內(nèi)容。下面是課程中第一個(gè)示例程序的輸出結(jié)果: 一直以來(lái),教授給程序員的基本命令行輸出是: 1.文本輸入(TEXT IN)→以文本的形式編寫(xiě)代碼。 2.文本輸出(TEXT OUT)→在命令行顯示文本輸出。 3.文本交互(TEXT INTERACTION)→用戶可以在命令行輸入文本,實(shí)現(xiàn)和程序的交互。 這個(gè)示例程序中的輸出“Hello, World!”是一個(gè)經(jīng)典段子,按照慣例,在各種編程語(yǔ)言教學(xué)中,“Hello, World”總是作為第一個(gè)程序的文本輸出。這個(gè)示例程序最早出現(xiàn)在1974貝爾實(shí)驗(yàn)室的備忘錄中,它是由Brian Kernighan撰寫(xiě)的,題名為《Programming in C: A Tutorial》。 學(xué)習(xí)Processing的優(yōu)勢(shì)在于:它自身強(qiáng)調(diào)一種更直觀并且基于視覺(jué)反饋的編程環(huán)境,因而它更有助于藝術(shù)家和設(shè)計(jì)師學(xué)習(xí)編程。 1.文本輸入(TEXT IN)→以文本的形式編寫(xiě)代碼。 2.視覺(jué)輸出(VISUALS OUT)→在窗口顯示視覺(jué)輸出。 3.鼠標(biāo)交互(MOUSE INTERACTION)→用戶通過(guò)鼠標(biāo)和程序進(jìn)行交互(在本書(shū)中你會(huì)看到更多例子)。 在Processing中,“Hello,World!”很可能如下圖所示: 你好,圖形! 雖然看上去是相當(dāng)友好的設(shè)計(jì),但是它并沒(méi)有引人注目的感覺(jué)(在這里暫且忽略掉第3步:交互),“Hello, World!”也是這樣。然而,這種方式所聚焦的理念(通過(guò)即時(shí)的視覺(jué)反饋來(lái)學(xué)習(xí))卻是截然不同的。 Processing并不是第一個(gè)遵循這種范式的語(yǔ)言。1967年,Daniel G. Bobrow、Wally Feurzeig和Seymour Papert 創(chuàng)造了Logo編程語(yǔ)言。一名程序員使用Logo語(yǔ)言編寫(xiě)了一個(gè)指令:在屏幕上用龜標(biāo)生成圖形和設(shè)計(jì)。爾后John Maeda在1999年設(shè)計(jì)了名為Design By Numbers的語(yǔ)言,該語(yǔ)言使視覺(jué)設(shè)計(jì)師和藝術(shù)家以簡(jiǎn)單、易用的句法來(lái)進(jìn)行編程。 盡管這些語(yǔ)言具有令人驚嘆的簡(jiǎn)潔性和創(chuàng)新性,但它們的功能非常有限。 Processing作為L(zhǎng)ogo和Design by Numbers的直系后代,于2001年誕生于麻省理工學(xué)院媒體實(shí)驗(yàn)室的美學(xué)與計(jì)算研究小組。它是由Casey Reas和Benjamin Fry設(shè)計(jì)的開(kāi)源語(yǔ)言,當(dāng)時(shí)他們是著名的計(jì)算機(jī)藝術(shù)家John Maeda的研究生。 Processing是一門(mén)開(kāi)源編程語(yǔ)言,提供了對(duì)圖片、動(dòng)畫(huà)和聲音進(jìn)行編程的環(huán)境。學(xué)生、藝術(shù)家、設(shè)計(jì)師、建筑師、研究人員和業(yè)余愛(ài)好者可以使用Processing進(jìn)行學(xué)習(xí)、制作原型以及作為生產(chǎn)工具。你可以通過(guò)視覺(jué)化界面學(xué)習(xí)計(jì)算機(jī)編程的基礎(chǔ)知識(shí),或者作為軟件速寫(xiě)本以及專(zhuān)業(yè)化的生產(chǎn)工具。除了該領(lǐng)域的其他相關(guān)專(zhuān)有軟件之外,Processing為藝術(shù)家和設(shè)計(jì)師提供了一個(gè)新的選擇。 —www.processing.org總之,Processing是非常令人驚嘆的。首先,它是免費(fèi)的,你不用花一分錢(qián)。其次,由于Processing基于Java編程語(yǔ)言(本書(shū)后面的章節(jié)將會(huì)對(duì)此做進(jìn)一步探討),因此它是一門(mén)十分實(shí)用的功能性語(yǔ)言,沒(méi)有Logo或者Design by Numbers語(yǔ)言的限制,使用Processing幾乎可以實(shí)現(xiàn)各種功能。最后,Processing是開(kāi)源的。雖然在大多數(shù)情況下這并不會(huì)是本書(shū)內(nèi)容的關(guān)鍵細(xì)節(jié),可是,隨著深入學(xué)習(xí)Processing,你就會(huì)意識(shí)到這種開(kāi)源的理念是非常寶貴的。正是源于此,大量的開(kāi)發(fā)者、教師和藝術(shù)家才會(huì)聚集到一起分享作品,貢獻(xiàn)想法,進(jìn)而大大拓展了Processing。 快速瀏覽一下processing.org網(wǎng)站,你就會(huì)發(fā)現(xiàn)這是一個(gè)充滿勃勃生機(jī)、具有創(chuàng)造力的社區(qū)。在這里,初學(xué)者和專(zhuān)家通過(guò)公開(kāi)交流創(chuàng)意和作品共享代碼。盡管網(wǎng)站上有完整的參考文檔,以及數(shù)量龐大的示例幫助你快速上手,但是并沒(méi)有給真正的初學(xué)者提供一個(gè)系統(tǒng)的詳盡教程。本書(shū)通過(guò)詳盡地介紹編程基礎(chǔ)知識(shí)和探索高級(jí)編程話題,可以幫助你參與到Processing這個(gè)社區(qū)網(wǎng)站,并做出你的貢獻(xiàn)。 2012年,Processing基金會(huì)(Processing Foundation)成立,它旨在規(guī)范Processing軟件的目標(biāo)和理念:“在編程知識(shí)越來(lái)越重要的今天,努力讓來(lái)自各行各業(yè)的人都能輕松學(xué)習(xí)編程!睘榱藢(shí)現(xiàn)這個(gè)目標(biāo),基金會(huì)大力支持幾種不同語(yǔ)言的軟件環(huán)境,其中包括Processing(Java)、p5.js(JavaScript)和Processing.py(Python)。雖然本書(shū)主要討論Java框架的知識(shí),但是我也極力向你推薦其他幾個(gè)編程語(yǔ)言框架(如果你對(duì)構(gòu)建網(wǎng)站感興趣的話,尤其推薦p5.js)。我同樣保留了本書(shū)所有示例的p5.js版本,你可以在http://learningprocessing.com上找到。 雖然沒(méi)有Processing就不可能編寫(xiě)本書(shū),但是你要知道,本書(shū)實(shí)質(zhì)上并不僅僅是一本關(guān)于Processing的書(shū)。編寫(xiě)本書(shū)的初衷是教會(huì)你編程。我只是選擇了使用Processing作為編程的學(xué)習(xí)環(huán)境,但本書(shū)所關(guān)注的是核心計(jì)算編程概念,這些概念將會(huì)在你以后學(xué)習(xí)其他編程語(yǔ)言和環(huán)境時(shí),繼續(xù)帶領(lǐng)你前行。 難道我不應(yīng)該學(xué)習(xí) 在空白處填上你想學(xué)習(xí)的編程語(yǔ)言。你可能曾經(jīng)聽(tīng)說(shuō)某門(mén)編程語(yǔ)言“Flibideeflobidee”將會(huì)是未來(lái)前景最廣闊的語(yǔ)言。你肯定聽(tīng)出來(lái)這是瞎編的,但是我敢肯定你的某個(gè)朋友曾經(jīng)不斷跟你講某門(mén)語(yǔ)言是多么功能強(qiáng)大。它是如何使得編程變得如此容易。使用這門(mén)語(yǔ)言,5分鐘之內(nèi)你就能實(shí)現(xiàn)以前需要花費(fèi)一天時(shí)間才能完成的程序。而且,它在Mac上、個(gè)人電腦上,甚至烤面包機(jī)上都能運(yùn)行!你還可以用它編寫(xiě)一個(gè)陪你聊天的寵物!而且是用日語(yǔ)聊天! 事情是這樣的。那個(gè)可以解決你所有問(wèn)題的神奇編程語(yǔ)言根本不會(huì)存在。沒(méi)有一門(mén)語(yǔ)言是完美的,Processing也有與生俱來(lái)的缺陷和不足?墒荘rocessing是一個(gè)學(xué)習(xí)編程的很棒的起點(diǎn)。本書(shū)傳授計(jì)算機(jī)編程的基本原理,不論是使用Processing、Java、JavaScript、C、Python還是其他語(yǔ)言,它們都會(huì)使你受益終身。 當(dāng)然,對(duì)于某些項(xiàng)目來(lái)說(shuō),其他語(yǔ)言和環(huán)境可能更加適合。但Processing對(duì)于大部分的項(xiàng)目來(lái)說(shuō)都是相當(dāng)不錯(cuò)的選擇,尤其是媒體相關(guān)和基于屏幕的任務(wù)。對(duì)Processing一個(gè)普遍的誤解是它只適合于小打小鬧,其實(shí)并不是這樣的:許多人(包括我在內(nèi))都在項(xiàng)目自始至終使用Processing。Processing可以用來(lái)制作網(wǎng)絡(luò)應(yīng)用、博物館和美術(shù)館的藝術(shù)裝置、公共空間的展覽互動(dòng)裝置。比如,我曾經(jīng)使用Processing在紐約市軍隊(duì)總部的大廳里制作一個(gè)實(shí)時(shí)的圖像視頻墻,它展示在120英尺×12英尺(沒(méi)有錯(cuò),是英尺。┐蟮钠聊簧。 Processing不僅適合于項(xiàng)目制作,它還非常容易上手,它真的很棒。它是免費(fèi)的、完全開(kāi)源的軟件;它的界面簡(jiǎn)潔;它是基于視覺(jué)的工具;它還非常有趣;它是面向?qū)ο蟮恼Z(yǔ)言(后面會(huì)講解)。此外,它能夠在Mac端、PC端以及Linux機(jī)器上運(yùn)行。 但是Processing的一個(gè)短板是對(duì)于網(wǎng)頁(yè)的兼容性不足。2001年,在Processing剛誕生的時(shí)候,Java applet是將實(shí)時(shí)圖形項(xiàng)目發(fā)布到網(wǎng)頁(yè)的主要方法。可是到了2015年,Java applet已經(jīng)不復(fù)存在。由Lauren McCarthy倡導(dǎo)的Processing基金會(huì)的p5.js項(xiàng)目(http://p5js.org)現(xiàn)在成為一個(gè)新的選擇。關(guān)于這點(diǎn),本書(shū)第21章將會(huì)具體探討。 說(shuō)了這么多,我就是想告訴你不要再去糾結(jié)應(yīng)該選擇哪門(mén)編程語(yǔ)言了,應(yīng)該把精力集中到學(xué)習(xí)Processing編程的基本原理上。這方面的知識(shí)將有助于你超越本書(shū)的有限內(nèi)容,幫助你學(xué)習(xí)其他任何編程語(yǔ)言。 把想法直接寫(xiě)在這本書(shū)上假如你是一名小說(shuō)家或者劇本作家,你的寫(xiě)作時(shí)間僅僅是坐在計(jì)算機(jī)前打字的時(shí)間嗎?大多數(shù)情況下并不是這樣。或許是晚上躺在床上的時(shí)候,腦海中突然出現(xiàn)了一些想法;或許是坐在公園的長(zhǎng)椅上愜意地喂著鴿子時(shí),腦海中上演著一幕幕的對(duì)話;又或許是有一天晚上在酒吧,你在紙巾上快速勾勒出一個(gè)精彩的故事情節(jié)。 好吧,其實(shí)編寫(xiě)軟件、程序、代碼并沒(méi)有什么不同。只是由于編程工作本質(zhì)上和計(jì)算機(jī)緊緊捆綁在一起,因此你常常會(huì)忘記這一點(diǎn)。但有機(jī)會(huì)的話,你一定要讓你的頭腦發(fā)散、暢想。在遠(yuǎn)離辦公桌、電腦的時(shí)候去頭腦風(fēng)暴一些奇思妙想。就我個(gè)人而言,我常常在慢跑的時(shí)候完成了編程工作最棒的構(gòu)思。 當(dāng)然,使用電腦實(shí)際輸入代碼的部分也是非常重要的。我的意思是,雖然不可能僅僅通過(guò)舒舒服服地躺在游泳池里就能完成一個(gè)復(fù)雜的任務(wù),但如果只是每天伏案工作,面對(duì)著刺眼的顯示器,這是遠(yuǎn)遠(yuǎn)不夠的。 所以,隨時(shí)在書(shū)上做筆記就是一個(gè)好的方法,這樣能鍛煉你離開(kāi)鍵盤(pán)后思考代碼的能力。我已在本書(shū)中包含了許多填空形式的練習(xí)題。(這些練習(xí)題的所有答案都可以在本書(shū)配套網(wǎng)站http://learningprocessing.com上找到,方便你檢查自己的答案。)充分利用本書(shū)的空白處吧!每當(dāng)你有靈感和想法的時(shí)候,就迅速把它們寫(xiě)到書(shū)上。把本書(shū)當(dāng)成一個(gè)練習(xí)冊(cè)或者速寫(xiě)本。(當(dāng)然,你也可以使用自己的速寫(xiě)本。)最后我建議,你要花一半的時(shí)間在不用電腦的時(shí)候閱讀本書(shū),另一半時(shí)間則是坐在計(jì)算機(jī)旁,實(shí)踐本書(shū)中的示例。 我應(yīng)該如何閱讀本書(shū)最好是按照章節(jié)順序閱讀。第9章之后,你就可以輕松地隨便翻看本書(shū)了,但是前面幾章,建議你按照順序來(lái)讀。 本書(shū)按照先后順序教你編程。更高級(jí)的閱讀方式則是:根據(jù)自己的需要跳讀,將本書(shū)作為一個(gè)參考文檔來(lái)使用。本書(shū)的前一半內(nèi)容都是首先講解一個(gè)示例,然后一步一步分解這個(gè)示例中所涵蓋的知識(shí)點(diǎn)。除此以外,計(jì)算機(jī)編程的基本原理是按照一個(gè)特定的順序來(lái)逐步呈現(xiàn)的,這個(gè)順序是多年來(lái)在紐約大學(xué)帝勢(shì)藝術(shù)學(xué)院的互動(dòng)電信項(xiàng)目中許多同學(xué)反復(fù)摸索之后的結(jié)果(http://itp.nyu.edu)。 我將本書(shū)所有23章內(nèi)容分為十節(jié)課。前面9章介紹了計(jì)算機(jī)圖形學(xué),涵蓋了計(jì)算機(jī)編程的基本原理。第10~12章則暫停講授新知識(shí),轉(zhuǎn)向討論如何用增量方法(incremental approach)構(gòu)建更加大型的項(xiàng)目。第13~23章繼續(xù)拓展基礎(chǔ)知識(shí),并且展示一系列更加高級(jí)的話題,涉及3D、直播視頻和數(shù)據(jù)可視化等。 這些內(nèi)容分為容易理解的幾個(gè)部分。每節(jié)課的末尾,我都準(zhǔn)備了一個(gè)項(xiàng)目,建議你從單純閱讀本書(shū)的過(guò)程中轉(zhuǎn)換下思維,嘗試將該節(jié)課中的全部?jī)?nèi)容整合為一個(gè)完整的項(xiàng)目。我也為這個(gè)項(xiàng)目提供了一些建議,但它們真的僅僅是建議而已。 這是一本教科書(shū)嗎本書(shū)既可用作編程課程導(dǎo)論的教科書(shū),也可以用來(lái)自學(xué)。 這里,我要再次提及:本書(shū)的基本結(jié)構(gòu)直接來(lái)自于ITP的“計(jì)算媒體導(dǎo)論”課程。如果沒(méi)有同事和這門(mén)課數(shù)百名學(xué)生的幫助(我多么希望我可以把他們所有人的名字都寫(xiě)在這里),本書(shū)是不可能完成的。 坦白講,本書(shū)的內(nèi)容要比針對(duì)初學(xué)者的一學(xué)期課程要多一些。本書(shū)共計(jì)23章,我曾經(jīng)在課堂上詳細(xì)講過(guò)其中18章內(nèi)容?墒牵徽撃闶欠駥⒈緯(shū)作為課程教材或是自學(xué)讀物,你完全可以在幾個(gè)月里消化本書(shū)的知識(shí)。當(dāng)然,你也可以讀得更快,但是如果你要在Processing中測(cè)試本書(shū)的代碼,并且完成課后項(xiàng)目,確實(shí)是需要一段時(shí)間的。那些所謂“10天上10節(jié)課就能學(xué)會(huì)編程”的書(shū)看似非常吸引人,但實(shí)際并不現(xiàn)實(shí)。 下面是一個(gè)用14周時(shí)間學(xué)完本書(shū)內(nèi)容的參考計(jì)劃。 第1周第一節(jié)課:第1~3章第2周第二節(jié)課:第4~6章第3周第三節(jié)課:第7~8章第4周第四節(jié)課:第9章第5周第五節(jié)課:第10~11章第6周期中。ɡ^續(xù)第五節(jié)課:第12章)第7周第六節(jié)課:第13~14章第8周第七節(jié)課:第15~16章第9周第八節(jié)課:第17~19章第10周第九節(jié)課:第20~21章第11周第十節(jié)課:第22~23章第12周最終項(xiàng)目研討會(huì)第13周最終項(xiàng)目研討會(huì)第14周最終項(xiàng)目展示本書(shū)有測(cè)驗(yàn)題目嗎師傅領(lǐng)進(jìn)門(mén),修行在個(gè)人。真正的竅門(mén)在于練習(xí),練習(xí),練習(xí)。假設(shè)你現(xiàn)在是10歲的孩子,在學(xué)習(xí)小提琴課程,老師肯定會(huì)跟你講每天都要練習(xí)。同理,要完成本書(shū)提供的練習(xí),如果可能的話每天都要練習(xí)。 作為初學(xué)者,在學(xué)習(xí)的過(guò)程中,一開(kāi)始可能并不會(huì)提出自己的想法,而這也就是那些練習(xí)存在的目的。不過(guò),如果你有自己開(kāi)發(fā)項(xiàng)目的想法,那就跳過(guò)練習(xí),嘗試去實(shí)現(xiàn)它。 大多數(shù)練習(xí)都是小的演練,幾分鐘就能完成。有一些則會(huì)稍難,可能需要一小時(shí)才能完成。在整個(gè)學(xué)習(xí)過(guò)程中,有時(shí)候可能要暫停學(xué)習(xí)新知識(shí),花上幾小時(shí)、一天甚至一周時(shí)間來(lái)完成一個(gè)項(xiàng)目,這也會(huì)讓你收益頗豐。正如我之前提到的,這就是我這樣安排課程結(jié)構(gòu)的用意。我建議你在每節(jié)課結(jié)束后,暫停閱讀,自己用Processing做一些小項(xiàng)目、小練習(xí)。本書(shū)每節(jié)課后面都提供給你項(xiàng)目的建議。 本書(shū)所有練習(xí)的答案都可以在其配套網(wǎng)站上找到。 本書(shū)有配套網(wǎng)站嗎本書(shū)的網(wǎng)址是:http://learningprocessing.com。 網(wǎng)站上提供了以下內(nèi)容: 本書(shū)所有練習(xí)的答案本書(shū)所有代碼的可下載版本本書(shū)所有內(nèi)容的配套教學(xué)視頻書(shū)中示例的在線版本(通過(guò)p5.js運(yùn)行)本書(shū)額外的提示和教程問(wèn)題以及評(píng)論本書(shū)中的許多示例原本是彩色的,并且具有動(dòng)態(tài)特效,因此書(shū)中的黑白和靜態(tài)屏幕截圖無(wú)法描繪示例的全部效果。當(dāng)你閱讀時(shí),你可以通過(guò)瀏覽器(使用p5.js)查看在線示例,或者下載到你的電腦上在本地運(yùn)行。 本書(shū)中示例的源代碼同樣可以在Learning Processing github庫(kù)(https://github.com/shiffman/LearningProcessing/)上找到。我還使用了github issues(https://github.com/shiffman/Learning-Processing/issues)作為系統(tǒng)工具來(lái)發(fā)現(xiàn)本書(shū)中錯(cuò)誤,所以如果你發(fā)現(xiàn)本書(shū)中有任何錯(cuò)誤,請(qǐng)?jiān)谀抢锝o予反饋。你有可能會(huì)在本書(shū)示例和在線示例之間發(fā)現(xiàn)些許差別,但是它們的核心概念是相同的。(例如,為了適合本書(shū)的排版布局,書(shū)中的示例是以200×200的像素大小呈現(xiàn)的,而在線示例的尺寸可能會(huì)相對(duì)大一些。)本書(shū)的配套網(wǎng)站并不能取代Processing官方網(wǎng)站http://processing.org。官方網(wǎng)站提供了Processing參考文檔和更多的示例,此外,還有一個(gè)活躍的論壇。 一步一個(gè)腳印增量開(kāi)發(fā)的理念在你開(kāi)始學(xué)習(xí)編程之前,還有一個(gè)方法需要和你討論一下。它是我學(xué)習(xí)編程的一個(gè)重要驅(qū)動(dòng)力,并且也對(duì)本書(shū)的編寫(xiě)風(fēng)格產(chǎn)生了巨大影響。這個(gè)方法是由我之前的一個(gè)教授提出來(lái)的,叫做“增量開(kāi)發(fā)的理念”(philosophy of incremental development)。更通俗地講,就是“一步一個(gè)腳印的方法”(one-step-at-a-time approach)。 無(wú)論你是一個(gè)新手還是
目 錄
Learning Processing:A Beginner抯 Guide to Programming Images, Animation, and Interaction, Second Edition 出版者的話 譯者序 致謝 前言 第一節(jié)課 開(kāi)始 第1章 像素2 1.1 坐標(biāo)紙2 1.2 繪制基本圖形3 1.3 灰度模式7 1.4 RGB顏色9 1.5 顏色透明度10 1.6 自定義顏色取值范圍11 第2章 Processing13 2.1 讓Processing來(lái)拯救你13 2.2 如何下載Processing14 2.3 Processing應(yīng)用程序14 2.4 速寫(xiě)本15 2.5 Processing中的代碼16 2.6 錯(cuò)誤提示18 2.7 Processing參考文檔20 2.8 “運(yùn)行”按鈕21 2.9 你的第一個(gè)草圖22 第3章 交互24 3.1 程序的運(yùn)行流程24 3.2 我們的好朋友:setup()和draw()25 3.3 跟隨鼠標(biāo)移動(dòng)27 3.4 鼠標(biāo)點(diǎn)擊和鍵盤(pán)操作30 第一節(jié)課的項(xiàng)目33 第二節(jié)課 你所需要知道的一切 第4章 變量36 4.1 什么是變量36 4.2 變量的聲明和初始化37 4.3 使用變量39 4.4 多種變量42 4.5 系統(tǒng)變量43 4.6 隨機(jī):多樣化為生活增加趣味性44 4.7 使用變量來(lái)創(chuàng)建Zoog46 4.8 坐標(biāo)平移48 第5章 條件語(yǔ)句50 5.1 布爾表達(dá)式50 5.2 條件語(yǔ)句:if、else、else if51 5.3 草圖中的條件語(yǔ)句54 5.4 邏輯運(yùn)算符56 5.5 多個(gè)鼠標(biāo)翻轉(zhuǎn)效果的實(shí)現(xiàn)58 5.6 布爾變量59 5.7 彈力球62 5.8 物理學(xué)基礎(chǔ)66 第6章 循環(huán)69 6.1 什么是迭代69 6.2 while循環(huán):你唯一真正需要的循環(huán)71 6.3 “退出”條件73 6.4 for循環(huán)75 6.5 局域變量與全局變量77 6.6 draw()循環(huán)內(nèi)部的循環(huán)80 6.7 長(zhǎng)出胳膊的Zoog82 第二節(jié)課的項(xiàng)目84 第三節(jié)課 結(jié)構(gòu)化 第7章 函數(shù)86 7.1 將代碼分解86 7.2 用戶自定義函數(shù)87 7.3 定義函數(shù)88 7.4 簡(jiǎn)單的模塊化89 7.5 實(shí)參91 7.6 傳遞副本95 7.7 返回類(lèi)型97 7.8 重新整理Zoog100 第8章 對(duì)象103 8.1 掌握面向?qū)ο缶幊?03 8.2 使用對(duì)象104 8.3 編寫(xiě)餅干模具的程序105 8.4 使用一個(gè)對(duì)象的具體步驟107 8.5 使用標(biāo)簽進(jìn)行組合109 8.6 構(gòu)造函數(shù)參數(shù)112 8.7 對(duì)象也是數(shù)據(jù)類(lèi)型115 8.8 面向?qū)ο蟮腪oog116 第三節(jié)課的項(xiàng)目119 第四節(jié)課 重復(fù)性 第9章 數(shù)組122 9.1 數(shù)組的作用122 9.2 數(shù)組是什么124 9.3 聲明和創(chuàng)建數(shù)組125 9.4 初始化數(shù)組126 9.5 數(shù)組運(yùn)算127 9.6 簡(jiǎn)單的數(shù)組示例:蛇129 9.7 對(duì)象數(shù)組131 9.8 交互式對(duì)象133 9.9 Processing的數(shù)組函數(shù)136 9.10 1001個(gè)Zoog137 第四節(jié)課的項(xiàng)目139 第五節(jié)課 融會(huì)貫通 第10章 算法142 10.1 我們現(xiàn)在在哪里?我們將要去哪里142 10.2 算法:跟著你自己的節(jié)奏跳舞143 10.3 從概念到部分144 10.4 第1部分:雨水采集器145 10.5 第2部分:相交147 10.6 第3部分:計(jì)時(shí)器152 10.7 第4部分:雨滴154 10.8 整合157 10.9 為下一步做好準(zhǔn)備164 第五節(jié)課的項(xiàng)目165 第11章 調(diào)試166 11.1 建議1:休息一下166 11.2 建議2:讓另外一個(gè)人參與進(jìn)來(lái)166 11.3 建議3:簡(jiǎn)化167 11.4 建議4:println()是你的朋友168 第12章 庫(kù)171 12.1 庫(kù)概述171 12.2 內(nèi)置庫(kù)172 12.3 第三方庫(kù)172 12.4 手動(dòng)安裝庫(kù)173 第六節(jié)課 你周?chē)氖澜?br>第13章 數(shù)學(xué)176 13.1 數(shù)學(xué)和編程176 13.2 模數(shù)177 13.3 隨機(jī)數(shù)178 13.4 概率回顧179 13.5 代碼中的事件概率179 13.6 Perlin噪聲181 13.7 map()函數(shù)184 13.8 角度185 13.9 三角學(xué)186 13.10 振蕩188 13.11 遞歸190 13.12 二維數(shù)組193 第14章 三維平移和旋轉(zhuǎn)198 14.1 z坐標(biāo)軸198 14.2 P3D究竟是什么202 14.3 頂點(diǎn)形狀203 14.4 自定義三維圖形205 14.5 簡(jiǎn)單的旋轉(zhuǎn)207 14.6 圍繞不同的軸旋轉(zhuǎn)209 14.7 scale()函數(shù)211 14.8 pushMatrix()和popMatrix()函數(shù)212 14.9 用Processing模擬太陽(yáng)系218 14.10 PShape類(lèi)220 第六節(jié)課的項(xiàng)目222 第七節(jié)課 顯微鏡下的像素 第15章 圖像224 15.1 圖像入門(mén)224 15.2 圖像的動(dòng)畫(huà)效果226 15.3 我的第一個(gè)圖像處理濾鏡228 15.4 圖像數(shù)組229 15.5 像素,像素,更多的像素231 15.6 圖像處理簡(jiǎn)介235 15.7 另外一個(gè)圖像處理濾鏡:制作屬于你自己的tint()函數(shù)236 15.8 寫(xiě)入另外一個(gè)PImage對(duì)象的像素237 15.9 第二階段:像素組處理239 15.10 具有創(chuàng)意的可視化242 第16章 視頻244 16.1 視頻直播244 16.2 已錄制的視頻249 16.3 軟件鏡像251 16.4 視頻作為傳感器和計(jì)算機(jī)視覺(jué)256 16.5 背景消除260 16.6 運(yùn)動(dòng)檢測(cè)263 16.7 計(jì)算機(jī)視覺(jué)庫(kù)266 第七節(jié)課的項(xiàng)目267 第八節(jié)課 外面的世界 第17章 文本270 17.1 字符串從哪來(lái)270 17.2 什么是字符串271 17.3 顯示文字273 17.4 文字的動(dòng)態(tài)效果275 17.5 文字馬賽克278 17.6 旋轉(zhuǎn)文字280 17.7 按字符逐一顯示文字281 第18章 數(shù)據(jù)輸入286 18.1 字符串的操作286 18.2 拆分和組合288 18.3 處理數(shù)據(jù)290 18.4 處理文本文件291 18.5 表格數(shù)據(jù)293 18.6 非標(biāo)準(zhǔn)化格式的數(shù)據(jù)297 18.7 文本分析302 18.8 XML305 18.9 使用Processing的XML類(lèi)307 18.10 JSON312 18.11 JSONObject和JSONArray315 18.
你還可能感興趣
我要評(píng)論
|