登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2025年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2026年01月出版新書

2025年12月出版新書

2025年11月出版新書

2025年10月出版新書

2025年09月出版新書

2025年08月出版新書

2025年07月出版新書

2025年06月出版新書

2025年05月出版新書

2025年04月出版新書

2025年03月出版新書

2025年02月出版新書

2025年01月出版新書

2024年12月出版新書

『簡體書』游戏开发与计算机图形学中的数学

書城自編碼: 4194515
分類: 簡體書→大陸圖書→計算機/網絡圖形圖像/多媒體
作者: [澳]佩妮·德·比尔
國際書號(ISBN): 9787111793663
出版社: 机械工业出版社
出版日期: 2026-01-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:NT$ 505

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
汉初十年 刘邦与吕氏家族 32幅图表清晰标注关键战役人事布局
《 汉初十年 刘邦与吕氏家族 32幅图表清晰标注关键战役人事布局 》

售價:NT$ 281
春秋世卿政权结构演变研究
《 春秋世卿政权结构演变研究 》

售價:NT$ 398
幸福家庭的法律密码
《 幸福家庭的法律密码 》

售價:NT$ 347
剑桥现代欧洲思想史·十九世纪
《 剑桥现代欧洲思想史·十九世纪 》

售價:NT$ 607
情绪在创伤后应激障碍中的作用:发生、测量、神经生物机制和治疗
《 情绪在创伤后应激障碍中的作用:发生、测量、神经生物机制和治疗 》

售價:NT$ 653
争襄阳:宋元国运之战
《 争襄阳:宋元国运之战 》

售價:NT$ 449
不可思议的国度 日本动画电影80年
《 不可思议的国度 日本动画电影80年 》

售價:NT$ 959
经纬度丛书·荷兰帝国史:海上霸主的衰落
《 经纬度丛书·荷兰帝国史:海上霸主的衰落 》

售價:NT$ 398

編輯推薦:
想入门游戏开发或计算机图形学,却被数学门槛拦住?本书专为你而来!以Python、Pygame 和 PyOpenGL 为工具,从向量、矩阵等基础数学,到光照、纹理、相机导航等核心技术,全流程拆解游戏开发与图形学的数学逻辑。书中满是可直接运行的代码示例和阶梯式项目练习,从绘制 2D 图形到构建 3D 场景,手把手带你打通数学与技术的壁垒。不管你是学生、编程爱好者还是行业新人,都能通过本书夯实核心基础、提升实操能力,轻松开启游戏开发与计算机图形学的进阶之路!
內容簡介:
本书是一本全面且实用的指南,它摒弃了枯燥的理论堆砌,以一系列基于问题的实践练习为引,带你回归数学的“基础”,层层递进地揭开计算机图形学的神秘面纱。从绘制简单的图形线条与形状,到熟练应用向量与顶点;从构建和渲染网格,到巧妙运用顶点着色器提升渲染效率,每一个环节都紧密围绕数学原理展开,让你在实践中领悟数学与图形开发的紧密联系。借助Python、Pygame和PyOpenGL,你将创建属于自己的基于数学的引擎和API,并在构建应用程序和示例的过程中不断实践,逐步掌握将这些理论知识转化为实际成果的能力。
關於作者:
佩妮·德·比尔(Penny de Byl)
一位全栈开发工程师,拥有图形学荣誉学士学位以及游戏人工智能方向的博士学位。她热衷于教学,在澳大利亚和欧洲的多所高校从事游戏开发与计算机图形学教学工作,至今已有超过25年的教龄。
她的畅销教材Holistic Game Development with Unity被全球100多所院校采用。她凭借出色的教学能力斩获众多奖项,包括澳大利亚政府颁发的卓越教学奖,以及Unity移动游戏课程
竞赛奖。

李晗玥,曾就职于锐捷网络股份有限公司,从事人才数字化管理工作,主要针对人力相关数据进行分析与建模。现就职于北京协和药厂有限公司国际事务部,参与国内第一款新冠口服药——阿兹夫定的国内外上市,主要负责国际市场的分析调研、临床文件的翻译提交、国际注册等。本人擅长数据分析,英文水平高,译著有《数据质量管理:数据可靠性与数据质量问题解决之道 》
目錄
目  录
Mathematics for Game Programming and Computer Graphics
译者序
前言
关于作者
关于审校者
第一部分 基础工具
第1章 你好,图形窗口 2
1.1 技术要求 3
1.2 从Python、PyCharm和Pygame
开始 4
1.3 创建一个基本的图形窗口 6
1.4 使用窗口和笛卡儿坐标系 10
1.4.1 实操 11
1.4.2 练习 13
1.5 总结 14
1.6 答案 14
第2章 开始绘制 16
2.1 技术要求 16
2.2 颜色 16
2.2.1 实操 17
2.2.2 练习 19
2.3 线条 19
2.3.1 实操1 19
2.3.2 练习 20
2.3.3 实操2 20
2.4 文本 21
2.4.1 实操 23
2.4.2 练习 24
2.5 多边形 25
2.5.1 实操 25
2.5.2 练习 26
2.6 光栅图像 26
2.7 总结 29
2.8 答案 29
第3章 逐像素绘制线条图 31
3.1 技术要求 31
3.2 原始方法:用蛮力画线 31
3.3 改进方法:使用布雷森汉姆算法 34
3.4 用布雷森汉姆方法画圆 38
3.5 抗锯齿 41
3.6 总结 43
第4章 图形与游戏引擎组件 44
4.1 技术要求 44
4.2 探索OpenGL图形管线 44
4.3 使用网格绘制模型 47
4.3.1 实操 48
4.3.2 练习 49
4.4 通过相机观察场景 49
4.5 将像素投影到屏幕上 52
4.6 理解OpenGL中的三维坐标系 52
4.6.1 透视投影 53
4.6.2 练习1 54
4.6.3 投影到NDC 54
4.6.4 实操 56
4.6.5 练习2 59
4.7 总结 59
4.8 答案 59
第5章 点亮场景 61
5.1 技术要求 61
5.2 添加光照效果 61
5.2.1 实操 62
5.2.2 练习 65
5.3 在网格上放置纹理 65
5.3.1 实操 1 65
5.3.2 实操 2 67
5.4 总结 70
5.5 答案 70
第6章 更新与绘制图形环境 71
6.1 技术要求 71
6.2 介绍主游戏循环 71
6.3 更新和绘制对象 73
6.3.1 实操 74
6.3.2 练习 77
6.4 测量时间 77
6.5 总结 78
6.6 答案 79
第7章 键盘和鼠标交互:打造动态
图形程序 80
7.1 技术要求 80
7.2 处理鼠标互动 80
7.2.1 实操 1 81
7.2.2 练习 1 84
7.2.3 结合二维和三维环境 84
7.2.4 实操 2 84
7.2.5 将鼠标坐标转换为投影坐标 89
7.2.6 实操 3 90
7.2.7 练习 2 92
7.2.8 实操 4 92
7.3 添加键盘命令 93
7.3.1 实操 1 93
7.3.2 练习 94
7.3.3 实操 2 95
7.4 总结 95
7.5 答案 96
第二部分 基础三角学
第8章 三角形知识回顾 100
8.1 技术要求 100
8.2 比较相似三角形 100
8.3 处理直角三角形 103
8.4 通过正弦、余弦和正切计算角度 104
8.5 总结 110
8.6 答案 110
第9章 向量基础实践 112
9.1 技术要求 112
9.2 理解点与向量之间的差异 112
9.2.1 定义向量的关键操作 116
9.2.2 实操 119
9.3 计算向量的大小 120
9.4 探索角度与向量之间的关系 121
9.4.1 点积 122
9.4.2 叉积 123
9.5 总结 125
9.6 答案 125
第10章 认识直线、射线和法线 126
10.1 技术要求 126
10.2 定义直线、线段和射线 126
10.3 使用线的参数形式 128
10.3.1 练习 129
10.3.2 实操 129
10.4 计算和显示法线 131
10.4.1 练习1 133
10.4.2 实操 133
10.4.3 练习2 136
10.5 总结 136
10.6 答案 136
第11章 操纵三角形的光照与纹理 138
11.1 技术要求 138
11.2 显示网格三角形法线 138
11.3 用法线定义多边形的边 142
11.4 根据法线剔除多边形 144
11.4.1 实操 1 144
11.4.2 实操 2 146
11.5 探索法线如何影响光照 150
11.6 总结 154
第三部分 基本变换
第12章 掌握仿射变换 156
12.1 技术要求 157
12.2 三维空间中点的平移 157
12.3 缩放具有x、y、z坐标的点 158
12.3.1 实操 159
12.3.2 练习 161
12.4 围绕某个轴心旋转点 162
12.5 探索变换顺序 165
12.6 剪切和反射 167
12.7 总结 168
12.8 答案 169
第13章 理解矩阵的重要性 170
13.1 技术要求 170
13.2 定义矩阵 170
13.3 对矩阵执行运算 171
13.3.1 矩阵的加法和减法 171
13.3.2 乘以一个单一值 172
13.3.3 矩阵除法运算 173
13.4 创建仿射变换的矩阵表示 176
13.4.1 从线性方程到矩阵运算 176
13.4.2 复合仿射变换 178
13.5 组合变换矩阵以执行复杂操作 180
13.6 总结 185
13.7 答案 185
第14章 坐标空间的应用 187
14.1 技术要求 187
14.2 理解OpenGL的矩阵堆栈 187
14.3 使用模型矩阵 189
14.3.1 实操 189
14.3.2 练习 193
14.4 使用视图矩阵 193
14.5 使用投影矩阵 196
14.5.1 实操 197
14.5.2 练习 199
14.6 总结 199
14.7 答案 199
第15章 视图空间导航 202
15.1 技术要求 202
15.2 飞行操作 202
15.2.1 实操 204
15.2.2 练习 205
15.3 理解并修正复合旋转的意外
 问题 209
15.4 改进相机的方向控制 211
15.5 总结 215
15.6 答案 216
第16章 使用四元数进行旋转 217
16.1 技术要求 217
16.2 介绍四元数 217
16.3 绕任意轴旋转 218
16.4 探索四元数空间 220
16.5 使用单位四元数 225
16.6 理解归一化的目的 226
16.6.1 实操 228
16.6.2 练习 231
16.7 总结 231
16.8 答案 232
第四部分 基本渲染技术
第17章 顶点和片段着色 234
17.1 技术要求 234
17.2 理解着色器 234
17.3 将处理过程从CPU转移到GPU 237
17.4 逐像素处理 244
17.5 总结 250
第18章 自定义渲染管线 252
18.1 技术要求 252
18.2 为网格面着色并应用纹理 252
18.2.1 实操 1 253
18.2.2 实操 2 255
18.2.3 练习 262
18.3 点亮像素世界 262
18.3.1 环境光照 263
18.3.2 漫反射光照 264
18.3.3 冯氏模型 265
18.4 总结 268
18.5 答案 268
第19章 专业级视觉真实感渲染 269
19.1 技术要求 269
19.2 追踪光线的反射路径 269
19.3 应用平方反比定律 271
19.4 计算双向反射率 272
19.4.1 分布函数 273
19.4.2 菲涅耳效应 274
19.4.3 几何衰减因子 274
19.5 整合所有内容 275
19.6 总结 285
內容試閱
前  言
Mathematics for Game Programming and Computer Graphics
数学是图形和游戏开发中的一项关键技能,尤其是当你想深入了解实时计算机图形的生成以及对象和环境的操作时。Python、Pygame和PyOpenGL结合使用,为你提供了探索这些功能的机会,揭示了计算机如何生成和操作三维环境。
本书是一部综合指南,旨在通过一系列基于问题的实践练习,回归数学的“基础”,探索有关绘制图形线条和形状、应用向量与顶点、构建和渲染网格、使用顶点着色器以及实现诸如碰撞和粒子发射器等的物理技术的概念。通过使用Python、Pygame和PyOpenGL,你将创建自己的基于数学的引擎和API,这些将被全程用于构建应用程序和示例。
读完本书后,你将深入理解数学在创建、渲染和操作三维虚拟环境方面的重要性,并了解当今顶级图形和游戏引擎背后的秘密。
当Packt出版社第一次邀请我撰写本书时,我刚刚在Udemy和H3DLearn.com上发布了一门关于使用Python和OpenGL的计算机图形学课程。这是一个再好不过的时机,让我能够回顾课程中的所学,并将其整理成一本专注于数学的书籍。
数学是一个让人爱恨交织的主题,你要么热爱它,要么讨厌它,要么对它抱有一种平静的欣赏。在我的大学生涯,我大部分时间都属于“讨厌”的阵营。我觉得数学令人烦躁,是一项耗时的任务,但不得不完成它,以便能继续追求我所热爱的编程。然而在本科荣誉课程(第4年)中,我接触到了计算机图形学和分形几何。这就像揭开了一层面纱,让数学变得神奇、迷人,而且最重要的是,它变得可视化。能够看到数学之美改变了一切。我现在仍不是数学的热爱者,但我肯定已经从“讨厌”转变为“平静欣赏”了。不过,我猜写一本关于数学的书,算是让我从简单的欣赏跨越到热爱了。没有数学的驱动,你无法编写任何计算机游戏或图形程序。
我撰写本书的目标是将你引入“平静欣赏”的行列。如果你能达到“热爱”的程度,那就更好了!我相信每个人都有不同的天赋。数学并不是我的强项。我确实觉得它相当具有挑战性,但我一直在坚持,并在职业生涯中学会了理解它的起源和应用。我绝不是数学天才,但我并不需要成为这样的人。关键在于,如果你能够学会何时何地应用数学,并将其转化为编程算法,然后验证输出并对其充满信心,那就不必在意你的数学天赋。
这个领域所涉及的数学内容实在太多了,我本可以再写几百页。然而,我希望书中的内容能够激发你的兴趣,并赋予你信心和关键技能,以帮助你进一步学习。
本书受众
本书适合那些希望提升与计算机图形学和计算机游戏相关的三维(3D)数学技能的程序员阅读。你需要具备高中水平的数学知识,以及对面向对象的语言的基本理解和实际操作能力。
本书内容概览
第1章介绍书中使用的软件工具,通过这些工具探索三维图形和游戏开发。该章将使用Python和OpenGL开发图形窗口应用程序。
第2章通过一系列练习来指导你设置和探索运行及更新图形应用程序所需的基本代码框架。
第3章包含一系列练习,以便探索低级别的线条绘制算法。该章从一种简单的方法入手,揭示在光栅显示器上绘制线条时可能遇到的问题。
第4章探讨游戏和图形引擎的软件架构,以及用于处理三维环境的相关数据结构。
第5章讲解如何为虚拟场景添加光照和纹理,从而将之前使用的网格发展成实心模型。
第6章通过一系列练习来揭示图形帧生成的循环特性,并为你的图形项目构建坚实的基础。
第7章教你如何使用Pygame API来收集鼠标和键盘的用户输入,并利用这些输入与游戏环境进行交互。
第8章回顾三角学,巩固相似三角形的概念以及直角三角形的数学性质。
第9章研究向量的数学原理,并探索向量属性与直角三角形之间的联系,揭示它们在图形学中的多种应用方式。
第10章探索直线几何中元素之间的相似性与差异,并将这些知识应用于对象的移动。
第11章探讨法向量在计算机图形学中的应用,以及它们在表示、绘制和照明三维模型方面的重要作用。
第12章揭示一组基本操作,使三维点和模型能够在三维空间中实现平移、缩放和旋转。
第13章讨论如何使用矩阵表示变换,并阐述这种表示方式在处理计算机图形方面的强大功能。
第14章介绍顶点从其本地坐标系转换为屏幕上的像素时经过的不同坐标空间。
第15章指导你如何在三维环境中移动相机,同时揭示矩阵操作中与旋转相关的一些问题。
第16章深入研究四元数旋转这一复杂领域,并展示如何利用四维空间解决三维旋转中的问题。
第17章指导你编写着色器代码来绘制对象,以将图形从CPU控制转移到显卡上进行并行处理。
第18章探索用于编写基础着色器代码的一些基本技术,以创建用于生成光照效果的简单着色器。
第19章揭示光线如何与三维环境及其中的物体进行物理交互,以开发一个现代化的基于物理的渲染着色器。
阅读建议
本书使用的脚本语言是Python。你应当熟悉Python编程,或者至少掌握一种面向对象的编程语言(例如C#或C++)的基本知识。在本书的后半部分引入OpenGL着色器语言(GLSL)时,不要求你具备相关技能,但了解C等过程式语言的格式会有所帮助。本书中的项目已经在macOS和Windows环境下进行了测试。
本书涉及的软件 操作系统要求
Python Windows或macOS
Pygame Windows或macOS
PyOpenGL Windows或macOS
PyCharm Windows或macOS
OpenGL Shader Language(GLSL) Windows或macOS
本书会在需要时提供所有相关软件的下载和设置指导。
我建议你手动输入代码,或者从本书的GitHub仓库获取代码。这样可以避免因复制粘贴代码而可能导致的潜在错误。
下载示例代码文件
你可以通过以下链接从GitHub下载本书的示例代码文件: />我们还有其他书籍和视频的丰富代码包: />下载彩色图片
我们还提供了一份PDF文件,包含书中截图和图表的彩色版本。你可以通过以下链接下载: />排版约定
本书使用以下排版约定。
代码体:表示文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和X(原Twitter)账号。例如:“color()方法分别接受红色、绿色和蓝色通道作为参数。”
代码块如下所示:
import pygame
pygame.init()
screen_width = 800
screen_height = 200
screen = pygame.display.set_mode((screen_width,
         screen_height))
done = False
white = pygame.Color(255, 255, 255)
pygame.font.init()
font = pygame.font.SysFont(‘Comic Sans MS’, 120, False, True)
text = font.render(‘Penny de Byl’, False, white)
while not done:
 for event in pygame.event.get():
  if event.type == pygame.QUIT:
   done = True
 screen.blit(text, (10, 10))
 pygame.display.update()
pygame.quit()
当我们想把你的注意力引到代码块的特定部分时,相关的行或项目会以加粗字体显示:
background = pygame.image.load(‘images/background.png’)
sprite = pygame.image.load(‘images/Bird-blue-icon.png’)
while not done:
 for event in pygame.event.get():
  if event.type == pygame.QUIT:
   done = True
 screen.blit(background, (0, 0))
 screen.blit(sprite, (100, 100))
 pygame.display.update()
pygame.quit()
任何命令行输入或输出都按如下方式:
tick=2, fps=714.2857055664062
tick=1, fps=714.2857055664062
tick=1, fps=714.2857055664062
tick=1, fps=666.6666870117188
tick=2, fps=666.6666870117188
加粗字体:表示新术语、重要词语或你在屏幕上看到的内容。例如,菜单或对话框中的词语会以加粗形式显示。如下例所示:“现在,你只需单击Play按钮即可查看结果。”
提示或重要说明
以这种方式显示。
关于作者
Mathematics for Game Programming and Computer Graphics
Penny de Byl是一位全栈开发工程师,拥有图形学荣誉学士学位以及游戏人工智能方向的博士学位。她热衷于教学,在澳大利亚和欧洲的多所高校从事游戏开发与计算机图形学教学工作,至今已有超过25年的教龄。她的畅销教材Holistic Game Development with Unity被全球100多所院校采用。她曾多次获得教学奖项,包括澳大利亚政府颁发的卓越教学奖和Unity移动游戏课程竞赛奖。她的教学方法以项目为导向,为学生提供可以立即动手实践的工作坊。有关她教学兴趣的更多信息,可访问h3dlearn.com查看。
我要感谢Packt出版社优秀的出版团队和编辑们,在整个写作过程中他们始终表现得细致周到、耐心专业,并随时提供支持。
关于审校者
Mathematics for Game Programming and Computer Graphics
Amit Verma是一名来自印度北阿坎德邦德拉敦的游戏开发者和WebGL图形工程师,他曾开发了Pixlr照片编辑器的网页版本。他在游戏行业拥有丰富的经验,参与开发了超过60款游戏和30个WebGL应用程序,能够熟练使用Unity3D和WebGL。他对游戏技术的热情和好奇心以及应对挑战的能力,使他的客户能够在不同平台上发布游戏,如网页、移动设备和游戏机等。他拥有北方邦技术大学(Uttar Pradesh Technical University)的计算机科学与工程学士学位,其间专攻计算机科学与图形编程。目前,他在Excellarate担任首席WebGL图形工程师,专注于利用WebGL开发元宇宙内容。
我要感谢我最好的朋友、我的妻子、我一生的挚爱—Simran Gogna,感谢她在我的爱好和职业生涯中给予我支持。她无私的爱和明智的建议使我有力量实现目标。我还想感谢我的导师,Sumeet Arora和Shiwani Arora,他们在我职业生涯初期给予了我灵感和方向。
Soumya Mondal在没有“拯救世界”的时候,在慕尼黑工业大学(Technical University of Munich)扮演着学生的角色,同时还在一家初创公司担任视觉AI研究员。他曾开发过几款游戏,提高了对社会问题的关注度,并坚定地相信游戏作为一种媒介所具备的力量。闲暇时,他喜欢旅行和跑步。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2026 (香港)大書城有限公司 All Rights Reserved.