这本书关于数学部分的讲解浅显易懂,不过最大的反常点是使用左手坐标系以及使用行向量来表示矩阵。按照代码出现的章节,可以将这本书的内容分成4部分:

  • 第1部分是三维向量,属于高中数学的内容。
  • 第2部分是矩阵,很多也都是基础知识。印象最深一点是讲清楚了为什么使用方阵描述线性变换。给出笛卡尔坐标系中的向量v和方阵M = [P Q R]T,则v' = v * M = xP + yQ + zR。如果PQR线性无关,则可以看作一组基向量,那么在新坐标系中v的表示依然是(x, y, z),而在原笛卡尔坐标系的表示为v'。进一步如果v表示的是笛卡尔坐标系的基向量,那么v'就是转换后的基向量(PQ或者R),因此基向量经过变换后仍然是基向量,根据这个原理,计算旋转、平移、缩放、切变和镜像时,通过对原基向量进行变换,就可以得到变换后的基向量,经过组合就可以得到变换矩阵了。另一点是如何将图形学中的透视投影也用矩阵进行表示,因为透视投影需要除法,而矩阵变换无法实现,所以引入的四维齐次坐标。最后一点是使用四元数描述描述物体自身的旋转。
  • 第3部分是基本几何图元的表示方法,包括射线、圆、球、矩形边界框AABB,三角形及其重心坐标、多边形,以及常见的相交性检测,基本都是高中的数学和物理。
  • 第4部分描述了一个图形管线。
setTheCamera();
clearZBuffer();
setLightAndFog();
ObjList = highLevelVisibleDetection();//这可能是说绘制了哪些物体的意思???
for(each obj in ObjList)
{if(!obj.BoundingVisibleDetection()) continue;//去掉视锥外的物体,通过包围盒的8个顶点进行检测for(each triangle in obj.surface) //假设图形表面由三角形网格组成{clipSpaceTriangle = transformAndLighting(triangle);//物体坐标系->世界坐标系->摄像机坐标系(视锥),并进行顶点光照计算if(clipSpaceTriangle.back()) continue;//背向剔除clippedTriangle = clip(clipSpaceTriangle);//边界裁剪projectionTriangle = project(clippedTriangle);//投影变换for(each pixel in projectionTriangle)//对于每一个保留的像素{if(!ZBufferTest()) continue;//深度测试if(!AlphaTest()) continue;//alpha测试color = shadePixel();//根据光照、纹理进行渲染writePixel(color, FrameBuffer, ZBuffer);//写入帧缓存,更新z缓存}}
}

《3D数学基础:图形与游戏开发》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. HDU 1248 寒冰王座(全然背包:入门题)
  2. studio2008 无法显示该网页
  3. linux svn客户端的使用
  4. java中Date与String的相互转化
  5. redis-高级特性
  6. linux 命令 kps,Linux顶级命令.内存使用情况
  7. 罗小黑用flash做的_中影星美好看罗小黑战记正式定档!
  8. Java基础学习总结(142)——以正确的姿势使用Java 8 Optional
  9. linux内存管理(二)-内存数据结构分析
  10. CentOS7搭建本地yum源之http服务
  11. Java中银行转账的一些问题
  12. 金士顿u盘数据恢复软件推荐
  13. 深度学习——SSR网络配置环境
  14. 三步建立自己的电影网站 番外篇 (排除MacCMS10登录故障)
  15. 计算机桌面图标右上角出现双箭头符号,电脑桌面图标有箭头怎么办 电脑桌面图片箭头去掉方法【图文】...
  16. 52单片机四种方法实现流水灯
  17. 【algorithm】源码详解中国大陆新身份证号码算法
  18. MySQL 优化器原来是这样工作的
  19. 苹果网速4g测试软件,‎App Store 上的“测网速 - SpeedTest 网速测试大师”
  20. 使用 ffmpeg 下载 m3u8 视频,linux 后台运行 ffmpeg

热门文章

  1. html里的音频插件,html5音频播放插件
  2. 电脑维修之——启动错误时的解决办法
  3. java返回页面顶部代码_js返回顶部
  4. 基于SVN的SCM简单总结
  5. B站韩顺平java学习笔记(二十)-- 网络编程 章节
  6. pandorabox开启ssr_潘多拉固件开启UPNP的方法(图文教程)
  7. 简单实用的数据可视化案例
  8. 水电缴费系统php源码_CBMS水电预付费系统
  9. 经典面试题 之 JVM调优
  10. 深入浅出Python的抽象基类