Arduino 和樹莓派這樣的硬體進行互動。你將學習使用常見的Python 工具和庫,如numpy、matplotlib 和pygame,
基本介紹
- 書名:Python極客項目編程
- 作者:ahesh Venkitachalam
- 原版名稱:Python Playground: Geeky Projects for the Curious Programmer
- 譯者:王海鵬
- ISBN:9787115449764
- 類別:編程
- 定價:69
- 出版社:人民郵電出版社
- 出版時間:2017-5
- 裝幀:平裝
內容簡介,作者簡介,目錄······,
內容簡介
Arduino 和樹莓派這樣的硬體進行互動。你將學習使用常見的Python 工具和庫,如numpy、matplotlib 和pygame
來完成以下工作:
● 利用參數方程和turtle模組生成萬花尺圖案;
● 通過模擬頻率泛音在計算機上創作音樂;
● 將圖形圖像轉換為ASCII文本圖形;
● 編寫一個三維立體畫程式,生成隱藏在隨機圖案下的3D圖像;
● 通過探索粒子系統、透明度和廣告牌技術,利用OpenGL著色器製作逼真的動畫;
● 利用來自CT和MRI掃描的數據實現3D可視化;
● 將計算機連線到Arduino編程,創建回響音樂的雷射秀。
通過本書,你可以享受作為極客的真正樂趣!
作者簡介
作者簡介
Mahesh Venkitachalam是一位擁有二十年編程經驗的軟體工程師。 他從八年級就開始培養對技術的熱情,匯集成了他受歡迎的電子和編程部落格:electronut.in。
目錄······
目錄
第一部分熱身運動
第1章解析iTunes播放列表3
1.1 iTunes播放列表檔案剖析 3
1.2 所需模組 5
1.3 代碼 5
1.3.1 查找重複 5
1.3.2 提取重複 6
1.3.3 查找多個播放列表中共同的音軌 7
1.3.4 收集統計信息 8
1.3.5 繪製數據 8
1.3.6 命令行選項 9
1.4 完整代碼 10
1.5 運行程式 13
1.6 小結 14
1.7 實驗 14
第2章 萬花尺 15
2.1 參數方程 16
2.1.1 萬花尺方程 17
2.1.2 海龜畫圖 19
2.2 所需模組 20
2.3 代碼 20
2.3.1 Spiro構造函式 20
2.3.2 設定函式 21
2.3.3 restart()方法 21
2.3.4 draw()方法 22
2.3.5 創建動畫 22
2.3.5 SpiroAnimator類 23
2.3.5 genRandomParams()方法 24
2.3.6 重新啟動程式 24
2.3.7 update()方法 25
2.3.8 顯示或隱藏游標 25
2.3.9 保存曲線 25
2.3.10 解析命令行參數和初始化 26
2.4 完整代碼 27
2.5 運行萬花尺動畫 32
2.6 小結 33
2.7 實驗 33
第二部分 模擬生命
第3章 Conway生命遊戲 37
3.1 工作原理 38
3.2 所需模組 39
3.3 代碼 40
3.3.1 表示格線 40
3.3.2 初始條件 41
3.3.3 邊界條件 41
3.3.4 實現規則 42
3.3.5 向程式傳送命令行參數 43
3.3.6 初始化模擬 43
3.4 完整代碼 44
3.5 運行模擬人生的遊戲 46
3.6 小結 47
3.7 實驗 47
第4章 用Karplus—Strong算法產生音樂泛音 49
4.1 工作原理 51
4.1.1 模擬 51
4.1.2 創建WAV檔案 52
4.1.3 小調五聲音階 53
4.2 所需模組 54
4.3 代碼 54
4.3.1 用deque實現環形緩衝區 54
4.3.2 實現Karplus—Strong算法 55
4.3.3 寫WAV檔案 56
4.3.4 用pygame播放WAV檔案 56
4.3.5 main()方法 57
4.4 完整代碼 58
4.5 運行撥弦模擬 61
4.6 小結 62
4.7 實驗 62
第5章 類鳥群:仿真鳥群 63
5.1 工作原理 64
5.2 所需模組 64
5.3 代碼 64
5.3.1 計算類鳥群的位置和速度 65
5.3.2 設定邊界條件 66
5.3.3 繪製類鳥群 67
5.3.4 套用類鳥群規則 68
5.3.5 添加個體 70
5.3.6 驅散類鳥群 71
5.3.7 命令行參數 71
5.3.8 Boids類 71
5.4 完整代碼 72
5.5 運行類鳥群模擬 75
5.6 小結 76
5.7 實驗 76
第三部分 圖片之樂
第6章 ASCII文本圖形 79
6.1 工作原理 80
6.2 所需模組 81
6.3 代碼 81
6.3.1 定義灰度等級和格線 82
6.3.2 計算平均亮度 82
6.3.3 從圖像生成ASCII內容 83
6.3.4 命令行選項 84
6.3.5 將ASCII文本圖形字元串寫入文本檔案 84
6.4 完整代碼 85
6.5 運行ASCII文本圖形生成程式 87
6.6 小結 87
6.7 實驗 88
第7章 照片馬賽克 89
7.1 工作原理 90
7.1.1 分割目標圖像 90
7.1.2 平均顏色值 91
7.1.3 匹配圖像 91
7.2 所需模組 92
7.3 代碼 92
7.3.1 讀入小塊圖像 92
7.3.2 計算輸入圖像的平均顏色值 93
7.3.3 將目標圖像分割成格線 93
7.3.4 尋找小塊的*佳匹配 94
7.3.5 創建圖像格線 95
7.3.6 創建照片馬賽克 96
7.3.7 添加命令行選項 97
7.3.8 控制照片馬賽克的大小 97
7.4 完整代碼 98
7.6 運行照片馬賽克生成程式 102
7.7 小結 103
7.7 實驗 103
第8章 三維立體畫 105
8.1 工作原理 106
8.1.1 感知三維立體畫中的深度 106
8.1.2 深度圖 108
8.2 所需模組 109
8.3 代碼 109
8.3.1 重複給定的平鋪圖像 109
8.3.2 從創建隨機圓平鋪 110
8.3.3 創建三維立體畫 111
8.3.4 命令行選項 112
8.4 完整代碼 113
8.5 運行三維立體畫生成程式 115
8.6 小結 117
8.7 實驗 117
第四部分 走進三維
第9章 理解OpenGL 121
9.1 老式OpenGL 122
9.2 現代OpenGL:三維圖形管線 124
9.2.1 幾何圖元 124
9.2.2 三維變換 125
9.2.3 著色器 127
9.2.4 頂點緩衝區 128
9.2.5 紋理貼圖 129
9.2.6 顯示OpenGL 129
9.3 所需模組 130
9.4 代碼 130
9.4.1 創建OpenGL視窗 130
9.4.2 設定回調 131
9.4.3 Scene類 133
9.5 完整代碼 137
9.6 運行OpenGL應用程式 142
9.7 小結 143
9.8 實驗 143
第10章 粒子系統 145
10.1 工作原理 146
10.1.1 為粒子運動建模 147
10.1.2 設定最大範圍 147
10.1.3 渲染粒子 149
10.1.4 利用OpenGL混合來創建更逼真火花 149
10.1.5 使用公告板 150
10.1.6 生成火花動畫 151
10.2 所需模組 151
10.3 粒子系統的代碼 151
10.3.1 定義粒子的幾何形狀 152
10.3.2 為粒子定義時間延遲數組 153
10.3.3 設定粒子初始速度 153
10.3.4 創建頂點著色器 154
10.3.5 創建片段著色器 156
10.3.6 渲染 156
10.3.7 Camera類 158
10.4 粒子系統完整代碼 158
10.5 盒子代碼 164
10.6 主程式代碼 166
10.6.1 每步更新這些粒子 167
10.6.2 鍵盤處理程式 168
10.6.3 管理主程式循環 168
10.7 完整主程式代碼 169
10.8 運行程式 172
10.9 小結 172
10.10 實驗 172
第11章 體渲染 173
11.1 工作原理 174
11.1.1 數據格式 174
11.1.2 生成光線 175
11.1.3 顯示OpenGL視窗 177
11.2 所需模組 178
11.3 項目代碼概述 178
11.4 生成三維紋理 178
11.5 完整的三維紋理代碼 180
11.6 生成光線 181
11.6.1 定義顏色立方體的幾何形狀 182
11.6.2 創建幀緩衝區對象 184
11.6.3 渲染立方體的背面 185
11.6.4 渲染立方體的正面 185
11.6.5 渲染整個立方體 186
11.6.6 調整大小處理程式 187
11.7 完整的光線生成代碼 187
11.8 體光線投射 192
11.8.1 頂點著色器 194
11.8.2 片段著色器 194
11.9 完整的體光線投射代碼 196
11.10 二維切片 199
11.10.1 頂點著色器 201
11.10.2 片段著色器 202
11.10.3 針對二維切片的用戶界面 202
11.11 完整的二維切片代碼 203
11.12 代碼整合 206
11.13 完整的主檔案代碼 207
11.14 運行程式 209
11.15 小結 210
11.16 實驗 210
第五部分 玩硬體
第12章 Arduino簡介 215
12.1 Arduino 216
12.2 Arduino生態系統 217
12.2.1 語言 218
12.2.2 IDE 218
12.2.3 社區 218
12.2.4 外設 219
12.3 所需模組 219
12.4 搭建感光電路 219
12.4.1 電路工作原理 219
12.4.2 Arduino程式 220
12.4.3 創建實時圖表 221
12.5 Python代碼 222
12.6 完整的Python代碼 224
12.7 運行程式 226
12.8 小結 227
12.9 實驗 227
……
第13章 雷射音樂秀 229
第14章 基於樹莓派的天氣監控器 253
附錄A 軟體安裝 275
附錄B 基礎實用電子學 281
附錄C 樹莓派的建議和技巧 289
第一部分熱身運動
第1章解析iTunes播放列表3
1.1 iTunes播放列表檔案剖析 3
1.2 所需模組 5
1.3 代碼 5
1.3.1 查找重複 5
1.3.2 提取重複 6
1.3.3 查找多個播放列表中共同的音軌 7
1.3.4 收集統計信息 8
1.3.5 繪製數據 8
1.3.6 命令行選項 9
1.4 完整代碼 10
1.5 運行程式 13
1.6 小結 14
1.7 實驗 14
第2章 萬花尺 15
2.1 參數方程 16
2.1.1 萬花尺方程 17
2.1.2 海龜畫圖 19
2.2 所需模組 20
2.3 代碼 20
2.3.1 Spiro構造函式 20
2.3.2 設定函式 21
2.3.3 restart()方法 21
2.3.4 draw()方法 22
2.3.5 創建動畫 22
2.3.5 SpiroAnimator類 23
2.3.5 genRandomParams()方法 24
2.3.6 重新啟動程式 24
2.3.7 update()方法 25
2.3.8 顯示或隱藏游標 25
2.3.9 保存曲線 25
2.3.10 解析命令行參數和初始化 26
2.4 完整代碼 27
2.5 運行萬花尺動畫 32
2.6 小結 33
2.7 實驗 33
第二部分 模擬生命
第3章 Conway生命遊戲 37
3.1 工作原理 38
3.2 所需模組 39
3.3 代碼 40
3.3.1 表示格線 40
3.3.2 初始條件 41
3.3.3 邊界條件 41
3.3.4 實現規則 42
3.3.5 向程式傳送命令行參數 43
3.3.6 初始化模擬 43
3.4 完整代碼 44
3.5 運行模擬人生的遊戲 46
3.6 小結 47
3.7 實驗 47
第4章 用Karplus—Strong算法產生音樂泛音 49
4.1 工作原理 51
4.1.1 模擬 51
4.1.2 創建WAV檔案 52
4.1.3 小調五聲音階 53
4.2 所需模組 54
4.3 代碼 54
4.3.1 用deque實現環形緩衝區 54
4.3.2 實現Karplus—Strong算法 55
4.3.3 寫WAV檔案 56
4.3.4 用pygame播放WAV檔案 56
4.3.5 main()方法 57
4.4 完整代碼 58
4.5 運行撥弦模擬 61
4.6 小結 62
4.7 實驗 62
第5章 類鳥群:仿真鳥群 63
5.1 工作原理 64
5.2 所需模組 64
5.3 代碼 64
5.3.1 計算類鳥群的位置和速度 65
5.3.2 設定邊界條件 66
5.3.3 繪製類鳥群 67
5.3.4 套用類鳥群規則 68
5.3.5 添加個體 70
5.3.6 驅散類鳥群 71
5.3.7 命令行參數 71
5.3.8 Boids類 71
5.4 完整代碼 72
5.5 運行類鳥群模擬 75
5.6 小結 76
5.7 實驗 76
第三部分 圖片之樂
第6章 ASCII文本圖形 79
6.1 工作原理 80
6.2 所需模組 81
6.3 代碼 81
6.3.1 定義灰度等級和格線 82
6.3.2 計算平均亮度 82
6.3.3 從圖像生成ASCII內容 83
6.3.4 命令行選項 84
6.3.5 將ASCII文本圖形字元串寫入文本檔案 84
6.4 完整代碼 85
6.5 運行ASCII文本圖形生成程式 87
6.6 小結 87
6.7 實驗 88
第7章 照片馬賽克 89
7.1 工作原理 90
7.1.1 分割目標圖像 90
7.1.2 平均顏色值 91
7.1.3 匹配圖像 91
7.2 所需模組 92
7.3 代碼 92
7.3.1 讀入小塊圖像 92
7.3.2 計算輸入圖像的平均顏色值 93
7.3.3 將目標圖像分割成格線 93
7.3.4 尋找小塊的*佳匹配 94
7.3.5 創建圖像格線 95
7.3.6 創建照片馬賽克 96
7.3.7 添加命令行選項 97
7.3.8 控制照片馬賽克的大小 97
7.4 完整代碼 98
7.6 運行照片馬賽克生成程式 102
7.7 小結 103
7.7 實驗 103
第8章 三維立體畫 105
8.1 工作原理 106
8.1.1 感知三維立體畫中的深度 106
8.1.2 深度圖 108
8.2 所需模組 109
8.3 代碼 109
8.3.1 重複給定的平鋪圖像 109
8.3.2 從創建隨機圓平鋪 110
8.3.3 創建三維立體畫 111
8.3.4 命令行選項 112
8.4 完整代碼 113
8.5 運行三維立體畫生成程式 115
8.6 小結 117
8.7 實驗 117
第四部分 走進三維
第9章 理解OpenGL 121
9.1 老式OpenGL 122
9.2 現代OpenGL:三維圖形管線 124
9.2.1 幾何圖元 124
9.2.2 三維變換 125
9.2.3 著色器 127
9.2.4 頂點緩衝區 128
9.2.5 紋理貼圖 129
9.2.6 顯示OpenGL 129
9.3 所需模組 130
9.4 代碼 130
9.4.1 創建OpenGL視窗 130
9.4.2 設定回調 131
9.4.3 Scene類 133
9.5 完整代碼 137
9.6 運行OpenGL應用程式 142
9.7 小結 143
9.8 實驗 143
第10章 粒子系統 145
10.1 工作原理 146
10.1.1 為粒子運動建模 147
10.1.2 設定最大範圍 147
10.1.3 渲染粒子 149
10.1.4 利用OpenGL混合來創建更逼真火花 149
10.1.5 使用公告板 150
10.1.6 生成火花動畫 151
10.2 所需模組 151
10.3 粒子系統的代碼 151
10.3.1 定義粒子的幾何形狀 152
10.3.2 為粒子定義時間延遲數組 153
10.3.3 設定粒子初始速度 153
10.3.4 創建頂點著色器 154
10.3.5 創建片段著色器 156
10.3.6 渲染 156
10.3.7 Camera類 158
10.4 粒子系統完整代碼 158
10.5 盒子代碼 164
10.6 主程式代碼 166
10.6.1 每步更新這些粒子 167
10.6.2 鍵盤處理程式 168
10.6.3 管理主程式循環 168
10.7 完整主程式代碼 169
10.8 運行程式 172
10.9 小結 172
10.10 實驗 172
第11章 體渲染 173
11.1 工作原理 174
11.1.1 數據格式 174
11.1.2 生成光線 175
11.1.3 顯示OpenGL視窗 177
11.2 所需模組 178
11.3 項目代碼概述 178
11.4 生成三維紋理 178
11.5 完整的三維紋理代碼 180
11.6 生成光線 181
11.6.1 定義顏色立方體的幾何形狀 182
11.6.2 創建幀緩衝區對象 184
11.6.3 渲染立方體的背面 185
11.6.4 渲染立方體的正面 185
11.6.5 渲染整個立方體 186
11.6.6 調整大小處理程式 187
11.7 完整的光線生成代碼 187
11.8 體光線投射 192
11.8.1 頂點著色器 194
11.8.2 片段著色器 194
11.9 完整的體光線投射代碼 196
11.10 二維切片 199
11.10.1 頂點著色器 201
11.10.2 片段著色器 202
11.10.3 針對二維切片的用戶界面 202
11.11 完整的二維切片代碼 203
11.12 代碼整合 206
11.13 完整的主檔案代碼 207
11.14 運行程式 209
11.15 小結 210
11.16 實驗 210
第五部分 玩硬體
第12章 Arduino簡介 215
12.1 Arduino 216
12.2 Arduino生態系統 217
12.2.1 語言 218
12.2.2 IDE 218
12.2.3 社區 218
12.2.4 外設 219
12.3 所需模組 219
12.4 搭建感光電路 219
12.4.1 電路工作原理 219
12.4.2 Arduino程式 220
12.4.3 創建實時圖表 221
12.5 Python代碼 222
12.6 完整的Python代碼 224
12.7 運行程式 226
12.8 小結 227
12.9 實驗 227
……
第13章 雷射音樂秀 229
第14章 基於樹莓派的天氣監控器 253
附錄A 軟體安裝 275
附錄B 基礎實用電子學 281
附錄C 樹莓派的建議和技巧 289