自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 【数据结构】二叉树

若高度为h的完全二叉树的节点数为n,则它和同样高度为h的满二叉树的前n个节点可以一一对应。这里我们将根节点的索引定为1,从上往下,从左往右,依次递增,最后一个节点的索引为n。将所有节点从上到下,从左到右的排序,顺序为两个子节点的节点,1个子节点的节点,0个子节点的节点,所以叶节点的开始索引为。二叉树是一种树形结构,一个节点最多有两个子节点,没有子节点的节点为叶节点,我们设二叉树的节点数为n。节点到其叶节点的最长简单路径中边的个数是节点的高度,树的高度为根节点的高度。,有1个子节点的节点的个数为n。

2024-04-01 16:28:34 748

原创 vscode调试Unity

那么是vscode连接到Unity,Unity是服务端,vscode是客户端;所以,我们开始运行lua的时候,需要和vscode建立连接,建立连接的API在。现在使用vscode调试Unity的C#代码很简单,直接在vscode的EXTENSIONS里面搜索“Unity”,第一个就是,然后安装它,它会自动帮你安装上。字段,可以猜出emmylua和unity的连接是使用网络协议连接的,所以ide和debugger必定一个为服务单,一个为客户端。,无法成功附加,原因应该是你没有选择附加的Unity对象。

2024-03-29 15:54:06 1427

原创 【几何】平面方程

我们知道两个垂直向量的点乘为0,则平面的法线和平面上任意两点组成向量的点乘也为0。和上面一般式的求取过程是一样的,只不过得到的最后的表达方式不同。已知平面的法线和原点到平面的距离,求平面的方程。法线式和一般式几乎是一样的。= (A, B, C),平面上的任意一点为p。) ,现有任意一点p(x, y, z)。与xyz三个坐标轴的余弦值是多少呢?分别为平面与xyz轴的交点。为原点离平面的垂直距离。现在已知平面的一般式为。与xyz的夹角分别为。

2024-03-24 15:43:04 1224

原创 DOSBox+debug环境配置

DOSBox + debug.exe环境配置

2023-03-05 15:05:35 654

原创 [unity]使用EditorUtility.CopySerialized复制脚本时要注意脚本中对其他物体的引用

A和B互相引用,使用EditorUtility.CopySerialized复制后得到C和D后,C引用的是B,D引用的是A,这时C和D的引用需要重新指定。

2021-11-16 17:41:36 2687

原创 [unity]计算子节点到父节点的长度不能使用子节点的localPosition的长度来计算

子节点的localPosition受父节点的localRotation的影响。最好使用Vector3.Distance(parentPos - childPos),如果要使用localPosition去计算则要现将localPosition乘以父节点的Transform.lossyScale,而lossyScale比较消耗性能。childTrans.localPosition * parentTrans.lossyScale。...

2021-11-16 11:51:46 2396

原创 [Unity]不要使用Mathf.Max()求大于2个数的最大值

Mathf.Max()当传入大于3个数的参数时,调用的是Mathf.Max(params float[] values),这样会new一个数组,会有GC。

2021-11-15 21:13:39 2216

原创 C++模板:静多态

一般,使用虚函数和继承实现的是动多态,即在运行期间确定调用者的类型。使用模板,可以实现静多态,在编译期间确定调用者的类型。例如我们要对某一类对象进行统一处理,使用虚函数可以这样实现:class BaseType{public: virtual void action1(){...} virtual void action2(){...}}class SubType1 : BaseType{public: virtual void action1(){...} vi

2021-07-10 15:16:43 425

原创 C++模板:包含模式

当我们组织模板代码时,对于模板函数,把模板函数的声明放在.h文件,模板函数的定义放在.cpp文件;对于模板类,将模板类的定义放在.h文件,成员函数的定义放在.cpp文件,编译器编译时会报错。// xx.htemplate<typename T>inline T const& max(T const& a, T const& b); // 模板函数的声明template<typename T>class MyClass // 模板类的定义

2021-07-10 00:39:44 167

原创 《c++ Templates》笔记 第五章 技巧性基础知识

关键字typename如果要访问依赖模板参数的类型名称,要在类型名称前添加关键字typenameclass Type{ class SubType { }}template<typename T>class MyClass{ typename T::SubType* ptr; // typename声明SubType是定义于类T内部的一种类型 T::SubType* ptr; // 不使用typename,T::SubT

2021-07-03 21:16:17 148 2

原创 《c++ Templates》笔记 第四章 非类型模板参数

非类型的类模板参数template<typename T, int MAX_SIZE> // MAX_SIZE不是类型,也可以作为模板参数class Stack{private: T elems[MAX_SIZE]; int numElems;public: Stack(); void push(T const&); void pop(); T top() const; bool empty() const{

2021-07-03 21:07:50 140

原创 《c++ Templates》笔记 第三章 类模板

// xx.h文件#include <stdexcept>#include <vector>template<typename T>class Stack{private: std::vector<T> elems;public: void push(T const&); void pop(); T top() const; bool empty() const { re

2021-07-03 18:44:05 74

原创 《c++ Templates》笔记 第二章 模板函数

模板参数的声明template<comma-separated-list-of-parameters> // template<用逗号隔开的参数列表>模板的定义和实例化// 模板的定义template<typename T>inline T const& max(T const& a, T const& b){ return a < b ? b : a;}// 实例化int a = max(1, 2);

2021-07-03 17:33:04 121

原创 unity调试package的源代码

我们通过Package Manager导入的包是无法调试源代码的,如果想要调试源代码,必须将包的文件夹手动复制到Assets同目录下的Packages文件夹中(不是编辑器中的,是文件资源管理器中的)。如果是一个新项目需要导入某个package,可以另外新开一个专门用来下包的项目,将需要的包下下来,包的文件夹保存在上图中的Library/PackageCache中。然后将包文件复制到新项目的Packages目录下;如果项目中已经通过Package Manager导入这个包了,需要先在Packa...

2021-06-28 23:06:45 1166 3

原创 《计算机组成原理》第一章 读书笔记

《计算机组成原理》 作者:娄国焕 刘晓悦 出版社:北京大学出版社冯·洛伊曼计算机体系结构的基本特点:1.计算机由运算器、控制器、存储器、输入设备和输出设备组成;2.采用存储程序的方式,程序和数据放在同一存储器中;3.数据以二进制码表示;4.指令由操作码和地址码组成;5.指令在存储器中按执行顺序存放;6.机器以运算器为中心(现代计算机以存储器为中心);存储器存储器是计算机中用于存放程序和数据的部件。存储器由存储单元组成,每个存储单元存储一个数据或一条指令,...

2020-11-06 18:12:43 267

原创 GLSL的in、out存储限制符使用错误

在GLSL中用in修饰的变量表示传入的数据,用out修饰的变量表示传出的数据,通过这样可以实现顶点着色器向片段着色器传递数据,但要注意这个变量的命名要相同,不相同的话,片段着色器是获取不到从顶点着色器传入的数据的。1.顶点着色器#version 330 corelayout (location = 0) in vec3 aPos;layout (location = 1) in vec3 aColor;layout (location = 2) in vec2 aTexCoord;out

2020-06-13 18:11:09 957

原创 Opengl错误:“Error C5145: must write to gl_Position”

写opengl时,编译出现了这个错误,查了很久都没有找出问题,网上大部分说的是读取shader文件的时候出错了,或者将gl_Position拼错,或者是没有给gl_Position赋值。我检查我的代码都没有上面的问题,后来发现是API用错了。错误代码:vs = glCreateShader(GL_VERTEX_SHADER);glShaderSource(GL_VERTEX_SHADER, 1, &vsCode, NULL); // 错误用法glCompileShader(vs);

2020-06-10 21:52:00 3976

原创 读取3DMax的.obj文件,并优化顶点数据

数据结构struct vertex_t { float p[3]; float n[3]; float t[2];};struct mesh_t { vertex_t *vertices; unsigned short *indices; unsigned int vertexCnt, indexCnt; mesh_t(unsigned int vertex_count,...

2019-08-07 11:28:31 1200

原创 【c++】行为树

行为树节点接口enum STATUS{ STATUS_SLEEP, STATUS_RUNNING, STATUS_SUCCESS, STATUS_FAILURE,};enum TYPE{ TYPE_LEAF, TYPE_BRANCH,};class Node {public: std::string _name; // 节点的名字 int _Index[12...

2019-08-07 11:18:40 1633

原创 乘法如何突破位数限制

如果我们用int或double等进行乘法运算是有位数和精确度的限制,如何突破这种限制呢?当然只能自己写一个乘法运算。 如果我们用笔和纸进行乘法运算是没有位数和精确度限制的,那么我们是否可以模拟用笔和纸做乘法运算呢?在一定范围内是可以。首先我们可以肯定,一位数乘一位数是可以实现的,然后我们可以设置两个char数组a[n]和b[n]来个记录两个n位数,无论是小数还是整...

2019-04-21 16:08:56 312 2

原创 OpenGL鼠标移动方块

思路:用变量设定方块的坐标,然后根据鼠标的位移更改方块的变量坐标。注意:方块的绘图坐标系和世界坐标系是重合的,鼠标所在的坐标是以窗口的左上角为原点(0,0)的坐标系,窗口的左下角的世界坐标系为gluOrho2D(left, right, bottom, top)中的(left, bottom)。所以鼠标的坐标(xMouse, yMouse)转化为世界坐标(x, y)为: x = xMouse;...

2018-08-03 02:02:56 1580

原创 Breshenham画线算法及应用

Breshenham画线算法是由Bresenham提出的一种精确而有效的光栅线生成算法,该算法仅仅使用增量整数计算。原理:当斜率小于 1 时,x 增加 1, y 增加 0 或 1.因此只需要判断 y 是增加 0 或 1. 算法:画线段(x0, y0)到(xEnd,  yEnd), 线性方程 y = mx + b假设已经确定要显示的像素在(x_k, y_k), 那么下一步需要确定在列...

2018-05-16 22:40:43 2615

原创 非线性叠加算法

在游戏中,有许多属性的叠加是非线性的,这里以闪避为例子进行展开。单位目前的闪避为 a, 物品增加闪避 b, 单位得到物品的最终闪避为 c. (闪避的最大值为100%,这里用100来算,记为 limit)c = a + b* ( (limit - a)/ f(limit) ) | a&lt;limit, b&lt;limit, f(limit) &gt; limitf(limit)为叠加衰...

2018-04-24 11:44:16 4027

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除