- 博客(17)
- 收藏
- 关注
原创 【C++Primer笔记】第九章 顺序容器
(本章笔记作为编程参考)一个容器就是一些特定类型对象的集合。顺序容器的存储访问与加入容器时的位置对应;有序和无序关联容器则根据关键字的值来存储元素。文章目录顺序容器概述选择容器的基本原则容器库概览容器公共操作迭代器容器定义和初始化赋值和swap顺序容器操作添加元素访问元素删除元素特殊的forward_list操作改变容器大小容器操作可能使迭代器失效额外的string操作构造string的其他方法改变string的其他方法string搜索操作compare函数数值转换容器适配器容器适配器都支持的操作
2021-02-19 21:52:08
158
原创 【GAMES101现代计算机图形学入门笔记】Lec07 着色 1(光照)
Lec07 着色 1(光照)文章目录Lec07 着色 1(光照)深度缓存(Z-buffer)画家算法深度缓存算法着色(Shading)漫反射(Diffuse reflection)深度缓存(Z-buffer)当多个物体重叠在一起时,如何体现远近关系呢?还记得,我们在Lec04中暂时忽略了z坐标。这节课就要对z——深度进行处理。画家算法和画油画一样,先画远处的物体,再画近处的物体覆盖在其上。缺点:先对物体排序(O(nlogn))再绘制;无法处理循环遮挡。深度缓存算法在画家算法中,每放上一个物
2021-02-19 14:54:53
495
1
原创 【GAMES101现代计算机图形学入门笔记】Lec06 光栅化(反走样)
Lec06 光栅化(反走样)反走样(Antialiasing)上节课我们提到了锯齿的概念,这节课我们就来解决这个问题。首先,给出一个简单的反走样方案:**先模糊,再采样,**对位于三角形边界的像素设置中间值的颜色。上图中提到:把采样频率提升到奈奎斯特频率(Nyquist)以上。这是什么意思呢?要理解这句话以及反走样背后的原理,我们就要先从信号处理理论说起……采样理论采样既可以在空间中采样,也可以在时间中采样(30fps)。Sampling Artifacts:瑕疵(如锯齿、摩尔纹、车轮效应
2021-02-18 12:42:00
317
1
原创 【GAMES101现代计算机图形学入门笔记】Lec05 光栅化1(三角形)
Lec05 光栅化1(三角形)文章目录Lec05 光栅化1(三角形)投影变换(续)光栅化视口变换光栅化设备(补充知识)三角形光栅化采样的概念三角形采样采样速度优化存在的不足投影变换(续)如何表示近平面的大小(l, r, b, t)和远近平面的距离(n, f)呢?事实上,用户只需设定四个参数:垂直视锥(vertical field of view)近平面宽高比(aspect ratio = width / height)近平面距离 n远平面距离 f(注意!上图是一张3D透视图)由三角形
2021-02-17 11:37:29
382
原创 【GAMES101现代计算机图形学入门笔记】Lec04 变换(续)
Lec04 变换(续)文章目录Lec04 变换(续)3D变换(3D Transformation)和2D类似的变换绕坐标轴旋转更一般的旋转观测变换(Viewing Transformation)视图/相机变换(view/camera transformation)投影变换(projection transformation)正交投影(Orthographic Projection)透视投影(Perspective Projection)课后思考题3D变换(3D Transformation)和2D类似
2021-02-16 21:35:36
331
原创 【C++Primer笔记】第七章 类
优秀的类设计者应该密切关注使用该类的程序员(用户)的需求。封装的益处:确保用户代码不会无意间破坏封装对象的状态被封装的类的具体实现细节可以随时改变,而无需调整用户级别的代码每个类定义了唯一的类型。即使两个类的成员完全一样,它们也是不同的类型。定义抽象数据类型定义在类内部的函数是隐式的内联函数。成员函数声明必须在类内,定义可在类外(必须包含它所属的类名)或类内。作为接口组成部分的非成员函数,定义和声明都在类的外部(其声明与类放在同一个头文件内)。常量对象、常量对象的引用或指针只能.
2021-02-15 21:52:52
180
原创 【C++Primer笔记】第八章 IO库
从本章节开始进入第二部分:C++标准库!(开始艰难起来了orz)文章目录IO类管理流的状态管理输出缓冲文件输入和输出使用文件流对象文件模式string流IO类(举例:包含iostream头文件后还需要写using std::cin;)(要是图省事就用using namespace std;)C++标准IO库:包含istream、ostream、iostream类型包含ifstream、ofstream、fstream类型包含istringstream、ostringstream、stri
2021-02-15 16:57:15
124
原创 【虚幻4学习笔记】UE4编辑器简介
b站《虚幻4 UE4 官方教程 (一)》p1-11 笔记Win10小知识:Alt+Tab切换窗口文章目录视口导航三视图移动、旋转和缩放内容浏览器视口导航一般情况下,按鼠标右键旋转视角确定方向,按左键前后移动进行前进或后退,按住Alt按左键围绕当前视野旋转。必要时两键同时按住以实现上下移动。按住鼠标左键,在当前水平面前后移动或左右转动按住鼠标右键,旋转相机视角同时按住鼠标左右键,在当前垂直平面上下左右移动单击物体后按F,锁定物体按住Alt键和鼠标左键,围绕当前锁定物体旋转按住C再按鼠
2021-02-15 11:30:32
582
原创 【GAMES101现代计算机图形学入门笔记】Lec03 变换
Lec03 变换文章目录Lec03 变换为什么学习变换2D变换线性变换(Linear Transforms)非线性变换齐次坐标(Homogeneous Coodinate)仿射变换(Affine Transformation)变换操作为什么学习变换模型变换(Modeling):Translation/Rotation/Scaling视图变换(Viewing):3D-to-2D projection2D变换线性变换(Linear Transforms)线性变化 = 同维度矩阵[x′y′]
2021-02-15 11:21:34
154
原创 【GAMES101现代计算机图形学入门笔记】Lec02 线性代数回顾
Lec02 线性代数回顾文章目录Lec02 线性代数回顾向量(vector)点乘(dot product)叉乘(cross product)矩阵(matrix)向量(vector)向量的模:∣∣a⃗∣∣||\vec{a}||∣∣a∣∣单位向量(a-hat):a^=a⃗∣∣a⃗∣∣\hat{a}=\frac{\vec{a}}{||\vec{a}||}a^=∣∣a∣∣a点乘(dot product)笛卡尔坐标运算:a⃗⋅b⃗=(xayaza)⋅(xbybzb)=xaxb+yayb+zazb
2021-02-14 11:31:23
164
原创 【GAMES101现代计算机图形学入门笔记】Lec01 计算机图形学概述
Lec01 计算机图形学概述笔记参考这里:学习笔记:GAMES101-现代计算机图形学入门视频课程是这个:GAMES101-现代计算机图形学入门-闫令琪原教学网站:GAMES101: 现代计算机图形学入门作业网站:计算机图形学与混合现实研讨会参考书:《Fundamentals of Computer Graphics (4th Edition)》文章目录Lec01 计算机图形学概述什么是计算机图形学为什么要学习计算机图形学课程讨论的话题什么是计算机图形学Computer Graphics定义
2021-02-14 11:28:39
245
原创 【C++Primer笔记】第六章 函数
文章目录函数基础参数传递const形参和实参数组形参可变形参返回类型返回数组指针函数重载函数匹配特殊用途语言特性默认实参内联函数constexpr函数调试帮助函数指针函数基础实参传给形参的规则参见用右值初始化左值。因此,(举例)如果有一个形参为int,则必须传入一个能转换成int的实参(整型、浮点型)。在C++中,名字有作用域,对象有生命周期。一旦函数终止,形参就会被销毁。函数内部的变量也必须被初始化,否则就会被默认初始化为未定义的值。局部静态对象(static)直到程序终止才会被销毁。内置类型的
2021-02-07 20:29:54
141
原创 【C++Primer笔记】第五章 语句
文章目录简单、条件语句try语句块和异常处理简单、条件语句当循环的全部工作在条件就可以完成时,我们通常会用空语句(使用空语句当加上注释)://重复读入数据直到到达文件末尾或某次输入值为soughtwhile (cin << s && s != sought) ; //空语句,等价于空块{}在while语句的条件或循环体中中定义变量,意味着每次迭代都会创建并初始化该变量。使用花括号控制执行路径:if (grade % 10 >= 3) {
2021-02-04 18:06:01
74
原创 【C++Primer笔记】第四章 表达式
如果表达式的行为不可知,无论编译器生成什么样的代码,程序都是错误的。文章目录基本规则算术运算符关系和逻辑运算符赋值运算符递增和递减运算符成员访问运算符条件运算符位运算符sizeof运算符逗号运算符类型转换附:运算符优先级表基本规则使用重载运算符时,运算对象和返回值的类型可以定义,但运算对象的个数、运算符的优先级和结合律都是无法改变的。一个对象被用作左值时,用的是其身份(在内存中的位置);而一个对象被用作右值时,用的是其值。右值所在的位置可以用左值替代,反之则不行。如果表达式是左值,.
2021-02-03 16:50:04
111
原创 【C++Primer笔记】第三章 字符串、向量和数组
第三章 字符串、向量和数组应该优先选用标准库提供的类型,之后再考虑内置的低层的替代品数组或指针。文章目录第三章 字符串、向量和数组stringvector迭代器数组C风格字符串(不推荐使用)多维数组命名空间的using声明不应该出现在头文件里。using std::cin;using namespace std; //懒猪写法string初始化:#include <string>using std::string;string s1; //s1是空字符串
2021-02-02 19:31:15
109
原创 【C++Primer笔记】第二章 变量和基本类型
第二章 变量和基本类型数据类型决定着变量所占内存空间大小、该空间所能存储的值的范围,以及变量能参与的运算。文章目录第二章 变量和基本类型算术类型定义和声明引用和指针ConstConstexpr处理类型typedefautodecltype自定义数据结构我的问题算术类型基本内置类型使用法则:数值确定不为负,用unsigned;使用int进行整数运算。如果大于int(216=65536, 28=32768),使用long long型(字面值末尾加LL);在算术表达式中不要用char或bo
2021-02-02 17:27:19
112
原创 【C++Primer笔记】第一章 开始
第一章 开始写入endl的效果:结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。调试时添加打印语句时要时刻刷新(即必须写endl)。对于多行注释,每一行均以*开头。双斜线用于半行、多行或给注释注释。注释不能嵌套。使用一个istream对象作为条件时,其效果是检测流的状态。当遇到文件结束符(windows是Ctrl+Z)或无效输入时,该对象的状态会变成无效。以后请使用如下换行方式:if (p) { ...} //括号换行风格(这样注释起来方便)cout <<
2021-01-31 10:30:48
92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人