注重体验与质量的电子书资源下载网站
分类于: 计算机基础 互联网
简介
代码本色:用编程模拟自然系统 豆 8.9分
资源最后更新于 2020-03-29 03:15:13
作者:〔美〕Daniel Shiffman
译者:周晗彬
出版社:出版社人民邮电出版社
出版日期:2015-01
ISBN:9787115369475
文件格式: pdf
简介· · · · · ·
本书介绍了用计算机模拟自然系统涉及的编程策略与技术,涵盖了基本的数学和物理概念,以及可视化地展示模拟结果所需的高级算法。读者将从构建基本的物理引擎开始,一步一步地学习如何创建智能移动的物体和复杂的系统,为进一步探索生成设计奠定基础。相关的知识点包括力、三角、分形、细胞自动机、自组织和遗传算法。本书的示例使用基于Java的开源语言及开发环境Processing编写。本书网站(http://www.natureofcode.com)上的示例是在浏览器中通过Processing的JavaScript模式运行的。Daniel Shiffman(作者),纽约大学Tisch艺术学院助理艺术教授,Nature of Code便是其主讲课程之一。多年来,他一直用Processing这门艺术家友好型开源语言开发教程、教学示例和代码库,拥有丰富的算法和应用教学经验。另外,其著作Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction亦广受读者好评。更多信息请访问shiffman.net和natureofcode.com。周晗彬(译者),高级软件工程师,毕业于华中科技大学,主要兴趣集中在移动应用和手机游戏方面,现就职于某互联网公司从事手游开发。
目录
献辞
推荐序
致谢
关于本书的故事
Kickstarter
前言
这是一本什么书
关于Processing语言
阅读需知
你用什么阅读本书
本书的故事
第一部分:无生命的物体
第二部分:活物
第三部分:智能
本书的教学大纲
生态系统模拟项目
如何获取在线代码和提交反馈
第 0 章 引言
0.1 随机游走
0.2 随机游走类
0.3 概率和非均匀分布
0.4 随机数的正态分布
0.5 自定义分布的随机数
0.6 Perlin噪声(一种更平滑的算法)
0.6.1 映射噪声
0.6.2 二维噪声
0.7 前进
第 1 章 向量
1.1 向量
1.2 Processing中的向量
1.3 向量的加法
1.4 更多的向量运算
1.4.1 向量的减法
1.4.2 向量加减法的运算律
1.4.3 向量的乘法
1.4.4 更多的向量运算律
1.5 向量的长度
1.6 单位化向量
1.7 向量的运动:速度
1.8 向量的运动:加速度
加速度算法
1.9 静态函数和非静态函数
1.10 加速度的交互
第 2 章 力
2.1 力和牛顿运动定律
2.1.1 牛顿第一运动定律
2.1.2 牛顿第三运动定律
2.1.3 牛顿第三运动定律(从Processing的角度表述)
2.2 力和Processing的结合:将牛顿第二运动定律作为一个函数
牛顿第二运动定律
2.3 力的累加
2.4 处理质量
2.5 制造外力
2.6 地球引力和力的建模
2.7 摩擦力
2.8 空气和流体阻力
2.9 引力
2.10 万有引(斥)力
第 3 章 振荡
3.1 角度
3.2 角运动
3.3 三角函数
3.4 指向运动的方向
3.5 极坐标系和笛卡儿坐标系
3.6 振荡振幅和周期
3.7 带有角速度的振荡
3.8 波
3.9 三角函数和力:钟摆
3.10 弹力
第 4 章 粒子系统
4.1 为什么需要粒子系统
4.2 单个粒子
4.3 使用 ArrayList
4.4 粒子系统类
4.5 由系统组成的系统
4.6 继承和多态的简介
4.7 继承基础
4.8 用继承实现粒子类
4.9 多态基础
4.10 用多态实现粒子系统
4.11 受力作用的粒子系统
4.12 带排斥对象的粒子系统
4.13 图像纹理和加法混合
第 5 章 物理函数库
5.1 Box2D及其适用性
5.2 获取Processing中的Box2D
5.3 Box2D基础
5.3.1 SETUP
5.3.2 DRAW
5.3.3 Box2D世界的核心元素
5.4 生活在Box2D的世界
5.5 创建一个Box2D物体
5.5.1 第1步:定义一个物体
5.5.2 第2步:设置物体的定义
5.5.3 第3步:创建物体
5.5.4 第4步:为物体的初始状态设置其他属性
5.6 三要素:物体、形状和夹具
5.6.1 第1步:定义形状
5.6.2 第2步:创建夹具
5.6.3 第3步:用夹具将形状连接到物体上
5.7 Box2D和Processing的结合
5.7.1 第1步:在主程序(即setup()和draw()函数)中添加Box2D
5.7.2 第2步:建立Processing盒子对象和Box2D物体对象之间的联系
5.8 固定的Box2D对象
5.9 弯曲的边界
5.9.1 第1步:定义一个物体
5.9.2 第2步:定义形状
5.9.3 第3步:配置形状
5.9.4 第4步:使用夹具将形状连接到物体上
5.10 复杂的形状
5.11 Box2D关节
5.11.1 步骤1:确保有两个物体
5.11.2 步骤2:定义关节
5.11.3 步骤3:配置关节的属性
5.11.4 步骤4:创建关节
5.12 回到力的话题
5.13 碰撞事件
5.13.1 步骤1: Contact对象,你能否告诉我哪两个物体发生了碰撞
5.13.2 步骤2:夹具对象,你能否告诉我你连接在哪个物体上
5.13.3 步骤3:物体,你能否告诉我你连接在哪个粒子对象上
5.14 小插曲:积分法
5.15 toxiclibs的Verlet Physics物理库
5.15.1 获取toxiclibs
5.15.2 VerletPhysics的核心元素
5.15.3 toxiclibs中的向量
5.15.4 构建toxiclibs的物理世界
5.16 toxiclibs中的粒子和弹簧
5.17 整合代码:一个简单的交互式弹簧
5.18 相连的系统I:绳子
5.19 相连的系统II:力导向图
5.20 吸引和排斥行为
第 6 章 自治智能体
6.1 内部的力
6.2 车辆和转向
6.3 转向力
6.4 到达行为
6.5 你的意图:所需速度
6.6 流场
6.7 点乘
6.8 路径跟随
6.9 多段路径跟随
6.10 复杂系统
6.11 群体行为(不要碰到对方)
6.12 结合
6.13 群集
6.14 算法效率(为什么程序跑得这么慢)
6.15 最后的几个注意事项:优化技巧
6.15.1 长度的平方(或距离的平方)
6.15.2 正弦余弦查询表
6.15.3 创建不必要的 PVector 对象
第 7 章 细胞自动机
7.1 什么是细胞自动机
7.2 初等细胞自动机
7.3 如何编写初等细胞自动机
7.4 绘制初等CA
7.5 Wolfram分类
7.6 生命游戏
7.7 编写生命游戏
7.8 面向对象的细胞实现
7.9 传统CA的变化
第 8 章 分形
8.1 什么是分形
8.2 递归
8.3 用递归函数实现康托尔集
8.4 科赫曲线和 ArrayList 技术
8.5 树
8.6 L系统
第 9 章 代码的进化
9.1 遗传算法:启发自真实现象
9.2 为什么使用遗传算法
9.3 达尔文的自然选择
9.4 遗传算法,第一部分:创建种群
9.5 遗传算法,第二部分:选择
9.6 遗传算法,第三部分:繁殖
9.7 创建种群的代码
9.7.1 第1步:初始化种群
9.7.2 第2步:选择
第3步:繁殖
9.8 遗传算法:整合代码
9.9 遗传算法:创建自己的遗传算法
9.9.1 第1点:更改变量
9.9.2 第2点:适应度函数
9.9.3 第3点:基因型和表现型
9.10 力的进化:智能火箭
第1点:种群规模和突变率
第2点:适应度函数
第3点:基因型和表现型
9.11 智能火箭:整合代码
改进1:障碍物
改进2:更快地击中靶子
9.12 交互式选择
9.13 生态系统模拟
9.13.1 基因型和表现型
9.13.2 选择和繁殖
第 10 章 神经网络
10.1 人工神经网络:导论和应用
10.2 感知器
10.3 用感知器进行简单的模式识别
10.4 实现感知器
10.5 转向感知器
10.6 还记得这是个“网络”吗
10.7 神经网络图
10.8 实现前馈动画
10.9 结语
参考文献
图书
文章