《HTML5+JavaScript動畫基礎》是2019年12月人民郵電出版社出版的圖書,作者是[美]Billy Lamberta、Keith Peters。
基本介紹
- 中文名:HTML5+JavaScript動畫基礎
- 作者:[美]Billy Lamberta、Keith Peters
- ISBN:9787115315472
- 頁數:393頁
- 定價:69元
- 出版社:人民郵電出版社
- 出版時間:2019年12月
- 裝幀:平裝
- 開本:16開
內容簡介,圖書目錄,
內容簡介
《HTML5+JavaScript動畫基礎》包括了基礎知識、基礎動畫、高級動畫、3D動畫和其他技術5大部分,分別介紹了動畫的基本概念、動畫的JavaScript基礎、動畫中的三角學、渲染技術、速度向量和加速度、邊界與摩擦力、用戶互動:移動物體、緩動與彈動、碰撞檢測、坐標旋轉與斜面反彈、撞球物理、粒子與萬有引力、正向運動學:讓事物行走、反向運動學:拖曳與伸出、三維基礎、三維線條與填充、背面剔除與三維燈光、矩陣數學、秘訣與技巧等內容。
這些內容都是Web開發人員在深入如加速度、速度、緩衝、彈簧、碰撞檢測、動量守恆、3D以及正向和反向運動物理概念之前,需要知道的所有關於三角函式的知識。在閱讀本書的過程中,讀者不但可以掌握腳本動畫背後的概念,還可以創造出各種形式的精彩動畫和遊戲。
《HTML5+JavaScript動畫基礎》面向所有使用HTML5或從Flash轉過來的Web開發人員。
圖書目錄
第 一部分 JavaScript動畫基礎
第 1章 動畫的基本概念 2
1.1 動畫 3
1.2 幀與運動 3
1.2.1 記錄幀 4
1.2.2 程式幀 5
1.3 動態動畫與靜態動畫 5
1.4 小結 6
第 2章 動畫的JavaScript基礎 7
2.1 動畫基礎 7
2.2 HTML5簡介 8
2.2.1 對canvas的支持 8
2.2.2 性能 9
2.2.3 HTML5基本文檔 9
2.2.4 CSS樣式表 11
2.2.5 額外的腳本 12
2.2.6 調試 12
2.3 用代碼實現動畫 13
2.3.1 動畫循環 13
2.3.2 使用requestAnimationFrame的動畫循環 16
2.4 JavaScript對象 17
2.4.1 基礎對象 18
2.4.2 創建一類新對象 18
2.4.3 原型 19
2.4.4 函式風格 19
2.5 用戶互動 20
2.5.1 事件與事件處理程式 20
2.5.2 監聽器與事件處理程式 20
2.5.3 滑鼠事件 22
2.5.4 滑鼠位置 24
2.5.5 觸摸事件 25
2.5.6 觸摸位置 26
2.5.7 鍵盤事件 27
2.5.8 鍵盤碼 28
2.6 小結 30
第3章 動畫中的三角學 31
3.1 三角學 32
3.2 角 32
3.2.1 弧度和角度 32
3.2.2 canvas坐標系 33
3.2.3 三角形的邊 35
3.2.4 三角函式 35
3.3 旋轉 39
3.4 波 42
3.4.1 平滑的上下運動 43
3.4.2 線性垂直運動 45
3.4.3 脈衝運動 46
3.4.4 使用兩個角的產生波 47
3.4.5 使用繪圖API產生的波 48
3.5 圓與橢圓 49
3.5.1 圓周運動 49
3.5.2 橢圓運動 51
3.6 勾股定律 52
3.6.1 兩點間距離 52
3.7 本章中的重要公式 55
3.7.1 三角學基礎函式 55
3.7.2 角度與弧度互轉 55
3.7.3 朝滑鼠(或任意一點)旋轉 55
3.7.4 創建波 56
3.7.5 創建圓形 56
3.7.6 創建橢圓形 56
3.7.7 獲取兩點間的距離 56
3.8 小結 57
第4章 渲染技術 58
4.1 canvas上的顏色 58
4.1.1 使用十六進制表示顏色值 59
4.1.2 色彩合成 60
4.1.3 提取三原色 61
4.1.4 透明度 62
4.1.5 與顏色相關的工具函式 63
4.2 繪圖API 64
4.3 canvas上下文 65
4.4 使用clearRect消除圖案 65
4.4.1 設定線條的外觀 66
4.5 使用lineTo與moveTo繪製路徑 66
4.5.1 使用quadraticCurveTo繪製曲線 68
4.5.2 創建多條曲線 70
4.5.3 其他形式的曲線 74
4.6 使用填充色創建圖形 74
4.6.1 創建漸變填充色 75
4.6.2 設定漸變色的顏色 76
4.7 載入並繪製圖片 77
4.7.1 載入圖片 77
4.7.2 使用圖片元素 78
4.7.3 使用視頻元素 79
4.8 操縱像素 81
4.8.1 獲取像素數據 81
4.8.2 繪製像素數據 82
4.9 本章中的重要公式 86
4.9.1 從十六進制轉換到十進制 86
4.9.2 從十進制轉換到十六進制 86
4.9.3 組合三原色 86
4.9.4 提取三原色 86
4.9.5 繪製一條穿越某個點的曲線 87
4.10 小結 87
第 二部分 基本動畫
第5章 速度向量和加速度 90
5.1 速度向量 90
5.1.1 向量與速度向量 91
5.1.2 單軸上的速度向量 91
5.1.3 雙軸上的速度向量 94
5.1.4 角速度 94
5.1.5 向量加法 96
5.1.6 滑鼠追隨者 97
5.1.7 速度向量擴展 98
5.2 加速度 100
5.2.1 單軸加速度 100
5.2.2 雙軸加速度 102
5.2.3 重力加速度 104
5.2.4 角加速度 105
5.2.5 宇宙飛船 107
5.2.6 飛船控制 108
5.3 本章中的重要公式 111
5.3.1 將角速度分解為x、y軸上的速度向量 111
5.3.2 將角加速度(作用域物體上的力)分解為x、y軸上的加速度 111
5.3.3 將加速度加入速度向量 111
5.3.4 將速度向量加入位置坐標 111
5.4 小結 111
第6章 邊界與摩擦力 112
6.1 環境邊界 113
6.1.1 設定邊界 113
6.1.2 移除物體 114
6.1.3 重置物體 117
6.1.4 螢幕環繞 119
6.1.5 反彈 121
6.2 摩擦力 124
6.2.1 摩擦力,正確方法 125
6.2.2 摩擦力,簡便方法 126
6.2.3 摩擦力套用 127
6.3 本章中的重要公式 128
6.3.1 移除越界物體 128
6.3.2 重置越界物體 129
6.3.3 越界物體的螢幕環繞 129
6.3.4 套用摩擦力(正確方法) 129
6.3.5 套用摩擦力(簡便方法) 129
6.4 小結 129
第7章 用戶互動:移動物體 130
7.1 按下及釋放物體 130
7.1.1 使用觸摸事件 133
7.2 拖曳對象 135
7.2.1 結合運動代碼的拖曳 136
7.3 投擲 139
7.4 小結 142
第三部分 高級動畫
第8章 緩動與彈動 144
8.1 比例運動 144
8.2 緩動 145
8.2.1 簡單緩動 145
8.2.2 高級緩動 153
8.3 彈動 153
8.3.1 一維坐標上的彈動 154
8.3.2 二維坐標上的彈動 156
8.3.3 向移動的目標點彈動 157
8.3.4 彈簧在哪兒 158
8.3.5 鏈式彈動 159
8.3.6 多個目標點的彈動 161
8.3.7 目標偏移量 163
8.3.8 用彈簧連線多個物體 165
8.4 本章中的重要公式 170
8.4.1 簡單緩動,詳細版 170
8.4.2 簡單緩動,縮略版 170
8.4.3 簡單緩動,簡易版 170
8.4.4 簡單彈動,詳細版 170
8.4.5 簡單彈動,縮略版 171
8.4.6 簡單彈動,簡易版 171
8.4.7 有偏移量的彈動 171
8.5 小結 171
第9章 碰撞檢測 172
9.1 碰撞檢測的方法 172
9.2 基於幾何圖形的碰撞檢測 173
9.2.1 兩個物體間的碰撞檢測 173
9.2.2 物體和點的碰撞檢測 177
9.2.3 幾何圖形碰撞檢測法的總結 179
9.3 基於距離的碰撞檢測 179
9.3.1 基於距離的簡單碰撞檢測 180
9.3.2 彈性碰撞 182
9.4 多物體的碰撞檢測策略 184
9.4.1 基礎的多物體碰撞檢測 184
9.4.2 多物體彈動 186
9.5 本章中的重要公式 189
9.5.1 基於距離的碰撞檢測 189
9.5.2 多物體碰撞檢測 189
9.6 小結 189
第 10章 坐標旋轉與斜面反彈 190
10.1 簡單坐標旋轉 190
10.2 高級坐標旋轉 192
10.2.1 旋轉單個物體 193
10.2.2 旋轉多個物體 194
10.3 斜面反彈 196
10.3.1 執行旋轉 197
10.3.2 最佳化代碼 201
10.3.3 實現動態效果 202
10.3.4 修復“不從邊緣落下”的問題 202
10.3.5 修復“線下”問題 204
10.3.6 從多個斜面反彈 205
10.4 本章中的重要公式 208
10.4.1 坐標旋轉 208
10.4.2 反向坐標旋轉 208
10.5 小結 208
第 11章 撞球物理 209
11.1 質量 209
11.2 動量 210
11.3 動量守恆 210
11.3.1 單軸上的動量守恆 212
11.3.2 雙軸上的動量守恆 216
11.4 本章中的重要公式 231
11.4.1 動量守恆的數學表示 231
11.4.2 動量守恆的JavaScript代碼 231
11.5 小結 231
第 12章 粒子與萬有引力 232
12.1 粒子 232
12.2 萬有引力 233
12.2.1 萬有引力 234
12.2.2 碰撞檢測及反應 236
12.2.3 軌道運動 237
12.3 彈力 238
12.3.1 萬有引力VS彈力 238
12.3.2 彈力節點花園 238
12.3.3 相連的節點 241
12.3.4 有質量的節點 242
12.4 本章中的重要公式 244
12.4.1 基本引力 244
12.4.2 引力公式的JavaScript實現 244
12.5 小結 244
第 13章 正向運動學:讓物體行走 245
13.1 介紹正向和反向運動學 245
13.2 正向運動學編程入門 246
13.2.1 移動一個節段 246
13.2.2 移動兩個節段 251
13.3 過程自動化 253
13.3.1 建立一個自然行走周期 254
13.3.2 動態調整 257
13.4 讓它真實地行走 260
13.4.1 給它一些空間 260
13.4.2 加入重力 260
13.4.3 處理碰撞 261
13.4.4 處理反作用力 262
13.4.5 螢幕環繞,重複 264
13.5 小結 267
第 14章 反向運動學:拖曳與伸出 268
14.1 伸出和拖曳單個節段 268
14.1.1 伸出單個節段 269
14.1.2 拖曳單個節段 270
14.2 拖曳多個節段 270
14.2.1 拖曳兩個節段 271
14.2.2 拖曳更多節段 272
14.3 伸出多個節段 274
14.3.1 伸向滑鼠位置 274
14.3.2 伸向一個物體 279
14.3.3 加入一些互動 280
14.4 使用標準反向運動學方法 281
14.4.1 介紹餘弦定理 281
14.4.2 編程實現餘弦定理 283
14.5 本章中的重要公式 285
14.5.1 餘弦定理 285
14.5.2 JavaScript中的餘弦定理 285
14.6 小結 285
第四部分 3D動畫
第 15章 三維基礎 288
15.1 第三維度與透視圖 289
15.1.1 z軸 289
15.1.2 透視圖 290
15.2 速度與加速度 293
15.3 反彈 295
15.3.1 單物體反彈 295
15.3.2 多物體反彈 297
15.3.3 Z排序 300
15.4 重力 301
15.5 螢幕環繞 304
15.6 緩動與彈動 311
15.6.1 緩動 311
15.6.2 彈動 312
15.7 坐標旋轉 314
15.8 碰撞檢測 319
15.9 本章中的重要公式 321
15.9.1 基本透視圖 321
15.9.2 Z排序 321
15.9.3 坐標旋轉 322
15.9.4 三維距離計算 322
15.10 小結 322
第 16章 三維線條與填充 323
16.1 創建點和線 323
16.2 創建圖形 328
16.3 創建三維填充 332
16.3.1 使用三角形 332
16.4 三維實體建模 337
16.4.1 建模旋轉的立方體 337
16.4.2 建模其他形狀 339
16.5 移動三維實體 343
16.6 小結 344
第 17章 背面剔除與三維燈光 345
17.1 背面剔除 346
17.2 增強的深度排序 348
17.3 三維燈光 349
17.4 小結 356
第五部分 其他技巧
第 18章 矩陣數學 358
18.1 矩陣基礎 358
18.2 矩陣運算 359
18.2.1 矩陣加法 359
18.2.2 矩陣乘法 360
18.3 canvas變換 363
18.4 小結 366
第 19章 秘訣與技巧 367
19.1 布朗(隨機)運動 367
19.2 隨機分布 370
19.2.1 正方形分布 370
19.2.2 圓形分布 372
19.2.3 偏向分布 374
19.2.4 基於碰撞的分布 376
19.3 基於定時器和基於時間的動畫 378
19.3.1 基於定時器的動畫 378
19.3.2 基於時間的動畫 379
19.4 等質量物體之間的碰撞 381
19.5 集成聲音 382
19.6 小結 385
附錄A 常用公式 386
A.1 第3章 386
A.1.1 三角學基礎函式 386
A.1.2 角度與弧度互轉 386
A.1.3 朝滑鼠指針(或任意一點)旋轉 386
A.1.4 創建波 386
A.1.5 創建圓形 387
A.1.6 創建橢圓形 387
A.1.7 獲取兩點間的距離 387
A.2 第4章 387
A.2.1 從十六進制轉換到十進制 387
A.2.2 從十進制轉換到十六進制 387
A.2.3 組合三原色 387
A.2.4 提取三原色 388
A.2.5 繪製一條穿越某個點的曲線 388
A.3 第5章 388
A.3.1 將角速度分解為x、y軸上的速度向量 388
A.3.2 將角加速度(作用於物體上的力)分解為x、y軸上的加速度 388
A.3.3 將加速度加入速度向量 388
A.3.4 將速度向量加入位置坐標 388
A.4 第6章 388
A.4.1 移除越界物體 388
A.4.2 重置越界物體 389
A.4.3 螢幕環繞越界物體 389
A.4.4 套用摩擦力(正確方法) 389
A.4.5 套用摩擦力(簡便方法) 389
A.5 第8章 389
A.5.1 簡單緩動,詳細版 389
A.5.2 簡單緩動,縮略版 390
A.5.3 簡單緩動,簡易版 390
A.5.4 簡單彈動,詳細版 390
A.5.5 簡單彈動,縮略版 390
A.5.6 簡單彈動,簡易版 390
A.5.7 有偏移量的彈動 390
A.6 第9章 391
A.6.1 基於距離的碰撞檢測 391
A.6.2 多物體碰撞檢測 391
A.7 第 10章 391
A.7.1 坐標旋轉 391
A.7.2 反向坐標旋轉 391
A.8 第 11章 391
A.8.1 動量守恆的數學表示 391
A.8.2 動量守恆的JavaScript代碼 392
A.9 第 12章 392
A.9.1 基本引力 392
A.9.2 引力公式的JavaScript實現 392
A.10 第 14章 392
A.10.1 餘弦定理 392
A.10.2 JavaScript中的餘弦定理 392
A.11 第 15章 393
A.11.1 基本透視圖 393
A.11.2 Z排序 393
A.11.3 坐標旋轉 393
A.11.4 三維距離計算 393