数据结构之图(C++)
图1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022 ...
数据结构之二叉树(C++)
二叉树12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120 ...
数据结构之线性表(C++)
线性表1234567891011121314151617181920212223242526272829303132333435363738394041424344454647# Nodeclass Node{private: //学号 姓名 三个成绩 string StdNumber; string StdName; int Score[3];public: Node(){}; Node(char* NumberofStudent, char* NameodStudent, int grade[]); //得到节点数据, Node引用 Node& GetNode(); //输出节点数据 void OutPutNode(ostream& out) const;};Node::Node(char* NumberofStudent, char* NameodStudent, int grade[]){ // 字符串赋值之前用的stringcopy(scpy),因为stdNumber是一个string类的对象,=已经重载过了 ...
常用设计模式
面向对象设计原则
经常出现的问题,该问题的解决方案核心
软件设计过程中某一类常见问题的一般性解决方案
类与相互通信的对象之间的组织关系,包括他们的角色,指责,协作方式几个方面
面向对象三大机制:
封装:隐藏内部实现 通过外部接口
继承:复用现有代码
多态:改写对象行为,不同的子类在继承父类后分别都重写覆盖了父类的方法
解构,关系之间相互独立,减少互相的影响
对象是某种拥有责任的抽象
是一系列可以被其他对象使用的公共接口
对象封装了代码和数据
对类扩展而非修改
针对接口编程,只需要对象拥有需要接口
继承”白箱复用“,子类父类耦合度高
对象组合”黑箱复用“,耦合度低
封装变化点,实现层次间的松耦合,常变化的封装一个,不变的封装一个
使用重构得到模式
单例模式
Singleton:保证一个类只有一个实例,并提供一个该实例的全局访问点,用于需要记录文件每一次修改状态的系统
- 创建型:负责对象创建 new对象
- 结构型:处理类与对象间组合
- 行为型:类与对象交互中的职责分配(组件间)
特点:
单例模式只在第一次被访问的时候创建, ...
Games101-04 Shading着色
处理遮挡-Z-buffering
画画时,先画远的再画近的,前景遮挡背景;遇到两两覆盖的问题之前采用画家算法
Z-buffer:
存储当前像素的最小z值(假设z是正的,近的值小,远的值大)
需要一个额外的缓冲区来存放深度值
帧缓冲区存放颜色值
深度缓冲区存放深度
1234567for (each triangle T) for (each sample(x,y,z) in T) if (z < zbuffer[x,y]) // 记录最近的点,默认zbuffer.z为无穷大 framebuffer[x,y] = rbg; // 更新颜色 zbuffer[x,y] = z; // 更新深度 else …… // 样本被遮挡,什么都不做
Q:n个三角形如何排序,排序效率
Shading
不同物体用不同材质(Material - 和光线不同作用)表现的过程
照明和阴影(Blinn-Phong 模型)漫反射
漫反射无论观察方向在哪里,看到该点的光是一样的,\textcolor{red}{ ...
Games101-03 Rasterization光栅化
光栅化
M 模型转换(放置对象)
V 视图转换(放置摄像头)
P 投影转换
正投影(长方体到标准立方体[-1,1]^3)
透视投影(截锥体到标准立方体)
之后标准立方体映射到屏幕,光栅化就是画在屏幕上的过程,光栅化=样本的2D位置
规范立方体到屏幕:
与z值无关,原尺寸(-1, 1)^2通过拉伸平移转换为[0,width]\times[0,height]
表示为:即(2,2)→(width,height)
M_{viewport}=\left(\begin{matrix}
\frac{width}{2}&0&0&\frac{width}{2}\\
0&\frac{height}{2}&0&\frac{height}{2}\\
0&0&1&0\\
0&0&0&1\\
\end{matrix}\right) 先拉伸原尺寸/2,再平移
光栅显示:三角形
只考虑(x,y)的话,多边形网格(Polygon Meshes)构成模型表面,每一个多边形可以拆分成不同像素的三角形网格(Triangle Meshes)
三角形:基本形状单元
最基础多边形,可以分解其他多边 ...
Games101-02 Transformation变换
2D变换线性变换
可以用矩阵直接表示
x'=ax+byy'=cx+dy
\left[ \begin{matrix} x' \\ y' \\ \end{matrix} \right]=\left[ \begin{matrix} a&b \\ c&d \\ \end{matrix} \right]\left[ \begin{matrix} x \\y \\ \end{matrix} \right]
x'=Mx
Scale 缩放
\left[ \begin{matrix} x' \\ y' \\ \end{matrix} \right]=\left[ \begin{matrix} s_{x}&0 \\ 0&s_{y} \\ \end{matrix} \right]\left[ \begin{matrix} x \\y \\ \end{matrix} \right]
Reflection 反射/对称
\left[ \begin{matrix} x' \\ y' \\ \end{matrix} \right]=\left[ \begin{matrix} -1&0 \\ 0&1 \\ \end ...
网络编程
From: 网络编程Tcp/Ip协议
概述C/S:Client/Server 客户端/服务器(迅雷)
B/S:Browser/Server 浏览器/服务器(浏览器)
网络编程:在一定协议下,实现两台计算机的通信的程序
网络通信协议
通过计算机网络可以使多台计算机连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这些连接和通信遵守的规则叫做网络通信协议,对数据的传输格式,传输速率,传输步骤做了统一规定,双方必须同时遵守才能完成数据交换。(数据交换的规则约定的集合)
TCP/IP:传输控制协议/因特网互联协议,Internet最基本,最广泛的协议;使用4层模型。
四层模型
物理层:硬件
数据链路层(网络接口):==相邻节点目标机==(网桥和交换机),网络传输数据组成数据块(帧)的传输,以太网协议
网络层:==根据网络地址从源到目标节点==,即两个端系统的数据传输,路径选择,路由及逻辑寻址
IP协议
ICMP
ARP
PARP
路由器
因特互联
因特网控制报文
地址解析
逆地址解析
/
/
/
已知IP未知MAC
已知MAC未知IP ...
C# Unity官方笔记
From:Unity官网C#初级编程
Unity官网C#中级编程
脚本 Scripts作为 behavior component (行为组件),用于 Object,不同对象的不同行为
Start & Awake
Awake
Start
初始化之前,脚本不启用也会初始化
Awake 之后,首次 Updata 之前,脚本启用才会初始化
Public & Private & Protected
Public
Private
Protected
类外(其他脚本)可以访问
只允许类内访问,默认私有
允许子类访问
Updata & FixedUpdata
Updata
FixedUpdata
使用的脚本每帧调用一次,调用间隔不同,非物理相关
固定时间,间隔相同调用,每秒调用50次,用于物理(Rigibody)相关函数,力相关
123456789private void Update(){ Debug.Log("Updata Time: &q ...
M_Studio:从《Robbie》学习开发笔记
From:M_Studio Unity2D教程《Robbie》
导入预制素材导入Assets文件夹
_Extended
Addons
Gizmos
VFX
额外扩展包,包含预制(Prefabs)
2D插件
CinemaChine摄像机插件
视觉特效
TilemapTilePalette
windows -> 2D -> TilePalette(瓦片调色)
Hierarchy窗口显示-> 2D -> Tilemap
在对应 Tilemap 上绘制需要 TilePalette 对应绘画内容 Active Tilemap
背景 Tilemap 叠加透明 Tilemap 需要Active Tilemap对应层(如 platform 上叠加 shadow)
Shorting Layer选中Hierarchy窗口中Tilemap对象,Inspector -> Tilemap Renderer
Order in Layer:同一个Shorting Layer,数值越大越在前面
Tilemap(Rule Tile)
Tiles 文 ...
Games101-01线代基础
向量
向量
向量长度
单位向量(=1,用于表示方向)
\vec{a}
$$
\vec{a}
$$
$$\vec{a}/
\vec{a}
$$
终点 — 起点
具有方向和长度
移动后仍是同一个
笛卡尔坐标系,x、y可以是任意正交向量
A = \left( \begin{matrix} x \\ y \\ \end{matrix} \right)
\newline A^T = (x, y)^T
\textcolor{Red} {||A|| = \sqrt{x^2, y^2}}向量点积
向量点积
点积得到一个实数: \hat a·\hat b = ||\vec{a}||||\vec{b}||\textcolor{Red}{cos{\theta}}
可以得到两个向量的夹角\theta:cos{\theta} = \frac{\hat a·\hat b}{||\vec{a}||||\vec{b}||cos{\theta}}
对于单位向量可以直接通过点积得到:cos{\theta} = \hat a·\hat b
笛卡尔坐标系中的点 ...
基于Hexo搭建Git个人博客
我的博客:五里霧中
准备工作Node.js 安装Node.js安装、环境变量配置、报错解决方法
Github 注册和仓库视频:【2021最新版】保姆级Hexo+github搭建个人博客
简书:使用Hexo和GitHub搭建个人博客(2021新版)
Hexo 安装1234567891011121314151617181920212223242526272829安装验证:**node -v****npm -v****git --version**hexo下载:**npm install express -g****hexo -v** 生成ssh: **ssh-keygen -t rsa -C "邮箱地址"**.ssh生成路径:C:\Users\你他娘的用户名\.ssh测定ssh是否绑定成功:**ssh -T git@github.com**安装hexo-deployer-git自动部署发布工具:npm install hexo-deployer-git --save初始化: hexo init清除之前生成配置: hexo clean生成静态文章: hexo g服务预 ...