processing游戏代码_《代码本色:用编程模拟自然系统》

由纽约大学Nature of Code课程老师Daniel Shiffman写就,是一本借助开源语言Processing全面介绍如何用代码模拟自然世界的学习指南。作者从模拟生命物体、活物、智能系统三个层面,从手工编写Processing代码到使用现有的物理函数库模拟高级而复杂的行为,利用有趣的事例渐进式介绍了算法和模拟方面的高级编程策略和技术。

主要内容涉及向量、力、粒子系统、三角函数、自治智能体、细胞自动机、分形、遗传算法和人工神经网络。

《代码本色:用编程模拟自然系统》适合游戏设计师、好学的程序员、物理学爱好者及所有对计算机模拟和互动编程感兴趣的人学习参考。

目录

第0章 引言

第1章 向量

第2章 力

第3章 振荡

第4章 粒子系统

第5章 物理函数库

第6章 自治智能体

第7章 细胞自动机

第8章 分形

第9章 代码的进化第

10章 神经网络

第0章 引言 1

0.1 随机游走  1

0.2 随机游走类 2

0.3 概率和非均匀分布 6

0.4 随机数的正态分布 9

0.5 自定义分布的随机数 12

0.6 Perlin噪声(一种更平滑的算法) 14

0.6.1 映射噪声 16

0.6.2 二维噪声 18

0.7 前进 21

第 1章 向量 23

1.1 向量 24

1.2 Processing中的向量 26

1.3 向量的加法 28

1.4 更多的向量运算 31

1.4.1 向量的减法 32

1.4.2 向量加减法的运算律 33

1.4.3 向量的乘法 34

1.4.4 更多的向量运算律 36

1.5 向量的长度 36

1.6 单位化向量 38

1.7 向量的运动:速度 39

1.8 向量的运动:加速度 43

1.9 静态函数和非静态函数 47

1.10 加速度的交互 49

第 2章 力 54

2.1 力和牛顿运动定律 54

2.1.1 牛顿第 一运动定律 54

2.1.2 牛顿第三运动定律 55

2.1.3 牛顿第三运动定律(从Processing的角度表述) 56

2.2 力和Processing的结合:将牛顿第 二运动定律作为一个函数 57

2.3 力的累加 58

2.4 处理质量 59

2.5 制造外力 61

2.6 地球引力和力的建模 65

2.7 摩擦力 67

2.8 空气和流体阻力 70

2.9 引力 75

2.10 万有引(斥)力 83

第3章 振荡 86

3.1 角度 86

3.2 角运动 88 [3]

3.3 三角函数 92

3.4 指向运动的方向 93

3.5 极坐标系和笛卡儿坐标系 96

3.6 振荡振幅和周期 98

3.7 带有角速度的振荡 101

3.8 波 104

3.9 三角函数和力:钟摆 107

3.10 弹力 114

第4章 粒子系统 122

4.1 为什么需要粒子系统 122

4.2 单个粒子 123

4.3 使用ArrayList 127

4.4 粒子系统类 132

4.5 由系统组成的系统 134

4.6 继承和多态的简介 136

4.7 继承基础 138

4.8 用继承实现粒子类 142

4.9 多态基础 144

4.10 用多态实现粒子系统 145

4.11 受力作用的粒子系统 147

4.12 带排斥对象的粒子系统 151

4.13 图像纹理和加法混合 156

第5章 物理函数库 160

5.1 Box2D及其适用性 161

5.2 获取Processing中的Box2D 162

5.3 Box2D基础 163

5.3.1 SETUP 164

5.3.2 DRAW 164

5.3.3 Box2D世界的核心元素 164

5.4 生活在Box2D的世界 165

5.5 创建一个Box2D物体 167

5.5.1 第 1步:定义一个物体 167

5.5.2 第 2步:设置物体的定义 168

5.5.3 第3步:创建物体 168 [3]

5.5.4 第4步:为物体的初始状态设置其他属性 169

5.6 三要素:物体、形状和夹具 169

5.6.1 第 1步:定义形状 169

5.6.2 第 2步:创建夹具 169

5.6.3 第3步:用夹具将形状连接到物体上 170

5.7 Box2D和Processing的结合 171

5.7.1 第 1步:在主程序(即setup()和draw()函数)中添加Box2D 173

5.7.2 第 2步:建立Processing盒子对象和Box2D物体对象之间的联系 173

5.8 固定的Box2D对象 176

5.9 弯曲的边界 177

5.9.1 第 1步:定义一个物体 177

5.9.2 第 2步:定义形状 177

5.9.3 第3步:配置形状 177

5.9.4 第4步:使用夹具将形状连接到物体上 178

5.10 复杂的形状 180

5.11 Box2D关节 186

5.11.1 步骤1:确保有两个物体 189

5.11.2 步骤2:定义关节 189

5.11.3 步骤3:配置关节的属性 190

5.11.4 步骤4:创建关节 190

5.12 回到力的话题 195

5.13 碰撞事件 196

5.13.1 步骤1:Contact对象,你能否告诉我哪两个物体发生了碰撞 198

5.13.2 步骤2:夹具对象,你能否告诉我你连接在哪个物体上 198

5.13.3 步骤3:物体,你能否告诉我你连接在哪个粒子对象上 198

5.14 小插曲:积分法 200

5.15 toxiclibs的Verlet Physics物理库 202

5.15.1 获取toxiclibs 203

5.15.2 VerletPhysics的核心元素 203 [3]

5.15.3 toxiclibs中的向量 203

5.15.4 构建toxiclibs的物理世界 204

5.16 toxiclibs中的粒子和弹簧 205

5.17 整合代码:一个简单的交互式弹簧 207

5.18 相连的系统I:绳子 209

5.19 相连的系统II:力导向图 211

5.20 吸引和排斥行为 214

第6章 自治智能体 218

6.1 内部的力 218

6.2 车辆和转向 219

6.3 转向力 220

6.4 到达行为 226

6.5 你的意图:所需速度 229

6.6 流场 231

6.7 点乘 236

6.8 路径跟随 239

6.9 多段路径跟随 246

6.10 复杂系统 250

6.11 群体行为(不要碰到对方) 251

6.12 结合 256

6.13 群集 257

6.14 算法效率(为什么程序跑得这么慢) 263

6.15 **后的几个注意事项:优化技巧 265

6.15.1 长度的平方(或距离的平方) 266

6.15.2 正弦余弦查询表 266

6.15.3 创建不必要的PVector对象 267

第7章 细胞自动机 270

7.1 什么是细胞自动机 270

7.2 初等细胞自动机 271

7.3 如何编写初等细胞自动机 276

7.4 绘制初等CA 281

7.5 Wolfram分类 283

7.6 生命游戏 285

7.7 编写生命游戏 288

7.8 面向对象的细胞实现 292

7.9 传统CA的变化 294

第8章 分形 297

8.1 什么是分形 298 [4]

8.2 递归 300

8.3 用递归函数实现康托尔集 304

8.4 科赫曲线和ArrayList技术 306

8.5 树 313

8.6 L系统 320

第9章 代码的进化 327

9.1 遗传算法:启发自真实现象 327

9.2 为什么使用遗传算法 328

9.3 达尔文的自然选择 330

9.4 遗传算法,第 一部分:创建种群 330

9.5 遗传算法,第 二部分:选择 332

9.6 遗传算法,第三部分:繁殖 334

9.7 创建种群的代码 336

9.7.1 第 1步:初始化种群 336

9.7.2 第 2步:选择 338

9.7.3 第3步:繁殖 340

9.8 遗传算法:整合代码 342

9.9 遗传算法:创建自己的遗传算法 345

9.9.1 第 1点:更改变量 345

9.9.2 第 2点:适应度函数 346

9.9.3 第3点:基因型和表现型 348

9.10 力的进化:智能火箭 350

9.11 智能火箭:整合代码 354

9.12 交互式选择 360

9.13 生态系统模拟 363

9.13.1 基因型和表现型 366

9.13.2 选择和繁殖 367

第 10章 神经网络 371

10.1 人工神经网络:导论和应用 372

10.2 感知器 374

10.3 用感知器进行简单的模式识别 376

10.4 实现感知器 377

10.5 转向感知器 383

10.6 还记得这是个“网络”吗 388

10.7 神经网络图 390

10.8 实现前馈动画 394

10.9 结语 400

参考文献 401

索引 404 [4]

b3e246c93815dff36e86e3800439d94f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值