自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编程题-栈的压入弹出序列

编程题-栈的压入弹出序列题目c#代码题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)c#代码using System.Collections.Generic;class Solution{ public bool IsPopOrder

2021-01-31 12:57:20 132

原创 编程题-删除链表中重复的节点

编程题-删除链表中重复的节点题目c#代码题目在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5示例1输入{1,2,3,3,4,4,5}返回值{1,2,5}c#代码public class ListNode{ public int val; public ListNode next; public

2021-01-31 12:55:14 227

原创 图形学笔记-Blinn-Phong模型

图形学笔记-Blinn-Phong模型定义环境光漫反射高光反射定义Blinn-Phong光照模型:反射光由环境光、漫反射、高光反射三部分组合而成。环境光在没有光源的地方,景物没有受到光源的直接照射,但其表面仍具有一定的亮度,使它们可见。这是因为光线在场景中经过复杂的传播后,形成了弥漫于整个空间的光线,称之为环境光。这里近似的认为,同一环境下的环境光是恒定不变的,对任何物体的表面都相等。设Ia为环境光的强度,Ka为物体表面对环境光的反射系数,La为环境光反射强度。LaL_aLa​=KaK_aKa​

2021-01-22 12:37:07 519

原创 编程题-树的子结构

编程题-树的子结构题目c#代码题目输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)示例1输入{8,8,#,9,#,2,#,5},{8,9,#,2}返回值truec#代码public class TreeNode{ public int val; public TreeNode left; public TreeNode right; public TreeNode (int x) { va

2021-01-20 21:44:53 131

原创 图形学笔记-三角形光栅化

图形学笔记-三角形光栅化定义视口变换为什么是三角形?判断一个像素中心是否在三角形内?定义光栅化就是把顶点数据转换为片元的过程。片元中的每一个元素对应于帧缓冲区中的一个像素。光栅化其实是一种将几何图元变为二维图像的过程。该过程包含了两部分的工作。第一部分工作:决定窗口坐标中的哪些整型栅格区域被基本图元占用;第二部分工作:分配一个颜色值和一个深度值到各个区域。光栅化过程产生的是片元。把物体的数学描述以及与物体相关的颜色信息转换为屏幕上用于对应位置的像素及用于填充像素的颜色,这个过程称为光栅化,这是一个将

2021-01-20 13:45:30 851

原创 编程题-链表中环的入口节点

编程题-链表中环的入口节点题目解析c#代码题目给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解析首先要判断这个链表有没有环,可以定义两个指针p1,p2 让p1每次走两步p2每次走一步,如果p1能追上p2就说明有环,如果p1访问到空就没有环。然后找到环中有几个节点,就让p1往前走直到遇到p2。循环的次数就是节点的个数。然后把两个指针都指向头节点。让p1先走环的次数的步数 ,然后p1,p2以相同速度走。相遇的节点就是环的入口节点。c#代码public class Li

2021-01-18 18:13:52 65

原创 编程题-链表中倒数第k个节点

编程题-链表中倒数第k个节点题目解析c#代码题目输入一个链表,输出该链表中倒数第k个结点。(单向链表)示例1输入1,{1,2,3,4,5}返回值{5}解析定义两个指针 同时指向头结点,第一个指针向前走k-1步,然后同步向后走,直到第一个指针走到最后,这样第二个指针就是倒数第k个节点。c#代码public class ListNode{ public int val; public ListNode next; public ListNode (int x)

2021-01-17 10:55:29 100

原创 编程题-剪绳子

编程题-剪绳子题目解析C#代码题目给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。输入描述:输入一个数n,意义见题面。(2 <= n <= 60)返回值描述:输出答案。示例1输入8返回值18解析贪心法,每次剪出3的长度 如果长

2021-01-04 16:47:51 227

原创 编程题-矩阵中的路径

编程题-矩阵中的路径题目解析c#代码题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如​ 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。示例1输入“ABCESFCSADEE”,3,4,“ABCC

2021-01-03 22:40:11 118

原创 编程题-旋转数组的最小数字

编程题-旋转数组的最小数字题目解析c# 代码题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。输入[3,4,5,1,2]输出1解析使用二分法,还要考虑到特殊情况如0,1,1,1,1c# 代码class Program { static void Main(string[] args) {

2021-01-02 22:13:01 107

原创 图形学-透明度

图形学-透明度基本原理深度测试深度冲突防止深度冲突透明度测试透明度混合渲染顺序的重要性基本原理对于不透明的物体,不需要考虑他的渲染顺序也能得到正确的排序结果,这是由于深度缓冲(depth buffer 或 z-buffer)的存在。在实时渲染中,深度缓冲是用于解决可见性的问题的,它可以决定物体的那些部分会被渲染在前面,而那些部分会被其他物体遮挡。他的基本思想是:根据深度缓冲中的值来判断该片元距离摄像机的距离,当渲染一个片元时,需要把他的深度值(就是距离摄像机的远近,0-1之间)和已经存在于深度缓冲中的

2020-11-30 19:55:58 590 2

原创 图形学-区域填充

图形学-区域填充定义边界填充算法泛填充算法定义区域填充指的是从区域内的一点(种子点)开始由内向外将填充色扩展到整个区域的过程,这里的区域都是指已经表示成点阵形式的填充图形,它是一个像素集合,区域通常有内点表示和边界表示两种形式。把位于给定区域边界上的像素一一例举出来的方法称为边界表示法。它要求区域边界上的像素都着同一颜色(边界色),而区域内和区域外的像素可以着同样的颜色,单不能着边界色。这样,边界表示法的区域具有显式的边界,填充算法可逐个像素地向外处理,直到遇到边界色为止,这种方法称为边界填充算法。

2020-07-24 09:21:49 2830

原创 图形学-多边形的扫描转换

图形学-多边形的扫描转换x-扫描线算法y向连贯性算法边缘填充算法x-扫描线算法x-扫描线算法的基本思想是,按照扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的像素,即完成填充工作。区间的端点可以通过计算扫描线与多边形边界线的交点获得,根据该原理x-扫描线算法可以填充凹凸的或者带有孔的多边形区域。对于每条穿越多边形的扫描线,x-扫描线算法确定扫描线与多边形相交区间的像素点位置。算法的核心是按x地政顺序排列交点的x坐标序列,所以x-扫描线算法的算法步骤如下:通常,为避免多边形区

2020-07-23 22:01:37 3708 1

原创 图形学-改进的Bresenham算法

图形学-改进的Bresenham算法原理代码原理虽然中点Bresenham算法是一种效率很高的算法,但也还有改进的余地。当然,其基本原理仍是每次在最大位移方向上走一步,而另一个方向上走还是不走取决于误差项的判断。根据中点Bresenham算法我们可以更加直接一点,过各行各列像素中心构造一个虚拟的网格线,按照直线从起点到终点的顺序计算直线与各垂直网格线的交点 这是取那一个点可以更加直观的看出来。d的变化规律如下图这时每次都需要和0.5去比较,因为我们要避免小数所以我们令e=d-0.5.这样改进

2020-07-18 00:41:47 3080

原创 图形学-中点Bresenham算法

图形学-中点Bresenham算法原理代码例子原理由Bresenham提出的直线生成算法的基本原理是,每次在最大位移方向上走一步,而另一个方向是走步还是不走步取决于误差项的判别。这时直线将平面分成三个区域:对于直线上的点,F(x,y)=0;对于直线上方的点,F(x,y)>0;对于直线下方的点,F(x,y)<0,如下图所示。首先假设0≤k≤1,由于x是最大位移方向,因此每次在x方向上加1,y方向上或加1 或加0。假定当前点是P(xi,yi),则下一个点在pu(xi+1,yi+1)与pd

2020-07-17 20:52:02 13524 1

原创 Unity-代码分离的UI系统

Unity-代码分离的UI系统面板系统的设计面板基类的实现(PanelBase)代码与资源分离是游戏程序设计的核心思想之一,被广大游戏公司多采用,相比于乱成一团的编码方式,它至少有一下几点优势1.在游戏公司里,美术人员负责界面的设计和制作,程序人员负责界面功能的实现。代码分离有利于美术人员和程序人员的分工合作,两者互相配合,有互不干扰。2.有利于代码的重复使用,功能相同但外观不同的界面只要一套代码即可。3.为游戏的热更新提供可能性,若游戏需要更新界面团,只需要下载新的界面资源即可。面板系统的设计

2020-07-17 10:46:10 1096

原创 图形学-DDA算法

图形学-DDA算法数值微分法代码对于光栅扫描显示器等数字设备来说,图形的输出是将输出平面,如光栅扫描显示屏幕,看做像素的矩阵,在该矩阵上确定一个像素的集合来逼近该图形,如下图。逼近过程的本质可以认为是连续量向离散量的转换。对于直线的扫描转换,要绘制高质量的直线需要符合以下几点要求1.直线要直,一方面,所选像素点应尽量靠近理想直线,另一方面,由于扫描转换总会产生一定的走样现象,因此要根据需求采用一定的反走样技术。2.直线的端点要准确,保证绘制无定向性,即从A点到B点画一条直线同B到A画一条直线应重

2020-07-14 23:22:00 4676

原创 设计模式-工厂方法模式

设计模式-工厂方法模式代码对于工厂方法模式还是以计算机为例子之前的简单工厂模式为对比简单工厂的工厂类中如果要新添加一个新运算的操作需要先添加这个运算的功能类,之后在工厂类中添加Case判断,对于工厂方法模式是创建一个工厂的接口去创建各个具体的工厂去实现这个接口,就是说把进行case判断的位置移植到了客户端。简单工厂模式最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件去动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖,但是它违背了开放-封闭原则。工厂方法模式:定义一个用于创建

2020-07-07 21:10:06 91

原创 Unity-3D相机跟随控制

Unity-3D相机跟随控制跟随算法跟随算法要实现3D摄像机的控制第一步就是先实现摄像机跟随物体移动。要想让相机跟随物体移动,就要明白在一定角度下相机与物体的位置关系。首先设置相机与物体之间的距离distance,相机与xz平面的角度为roll所以根据三角关系可以求得映射在xz平面的距离d为distancecos(rool),相机高度为distancesin(roll)。如下图现在就可以确定相机的高度了即y轴的坐标相机的y轴坐标应该为 Camera.Main.y=物体.y+height在

2020-07-04 12:29:08 1842

原创 设计模式-代理模式

设计模式-代理模式定义代码定义代理模式:为其他对象提供一种代理以控制这个对象的访问。代理模式的应用:代理模式用到的几种场合,首先是远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。第二种是虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。这样就可以达到性能的最优化,比如说你打开一个很大的HTML网页时,里面可能有很多的文字和图片,但是你还是可以很快的打开它,此时你说看到的是所有的文字,但是图片确实一张一张地下载后才

2020-07-01 11:18:26 1715

原创 设计模式-单一职责原则

设计模式-单一职责原则定义定义单一职责原则,就一个类而言,应该仅有一个引起他变化的原因。我们在做编程的时候,很自然的会给一个累加各种各样的代码,像某种商业运算的代码呀,像数据库访问的SQL...

2020-06-19 09:19:38 182

原创 设计模式-策略模式

设计模式-策略模式定义代码定义策略模式:它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同工作,只是实现不同,他可以以相同方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。例如:一个商场收银软件,商场可能有不同种优惠策略,比如打八折,慢100返110元,或者是积分制等等优惠政策,每一种优惠政策都是一种不同的算法,但是每一种算法都是完成相同的工作。策略模式就是用来封

2020-06-17 16:19:34 172

原创 Unity-后期处理效果之Bloom

Unity-后期处理效果之Bloom什么是Bloom什么是BloomBloom是一种游戏常见的一种屏幕效果叫做高光溢出,是一种光学效果,其中来自明亮来源(如闪光)的光表现为泄露到周围对象中。通俗来说就是这种特效可以模拟真实摄像机的一种图像效果,他让画面中较亮的区域"扩散"到周围的区域,造成一种朦胧的效果。...

2020-06-17 11:04:58 11326

原创 设计模式-简单工厂模式

设计模式-简单工厂模式例子分析代码总结例子分析拿计算器程序为一个例子,使用c#语言。对于计算器,首先写一个运算类,它有两个Number属性,用于计算器的前后操作数,接着写一个虚方法GetResult(); 用于得到结果,把加减乘除都写成这个运算类的子类,继承它并且重写GerResult()方法。接下来写一个工厂类,也就是说去到底要实例化谁,将来不会增加实例化的过程,这就是工厂。代码首先是运算类public class Operation { private double

2020-06-16 20:20:31 158

原创 Unity-AssetBundle基本概念

Unity-AssetBundle什么是AssetBundleAssetBundle定义压缩算法使用代码打包什么是AssetBundleAssetBundle定义AssetBundle是Unity中的一个资源压缩包,它可以包括模型、纹理、预设、场景或者更新文件,它可以在运行的过程中被加载,目的就是减少我们打包后的包体积。它是一个存在于硬盘上的文件。可以称之为压缩包。这个压缩包可以认为是一个文件夹,里面包含了多个文件。这些文件可以分为两类:serialized file 和 resource file

2020-06-16 00:16:05 199

原创 编程题-二进制计数

编程题-二进制计数题目输入描述输入例子输出解析代码题目小A刚学了二进制,他十分激动。为了确定他的确掌握了二进制,你给他出了这样一道题目:给定N个非负整数,将这N个数字按照二进制下1的个数分类,二进制下1的个数相同的数字属于同一类。求最后一共有几类数字?输入描述输入的第一行是一个正整数T(0<T<=10),表示样例个数。对于每一个样例,第一行是一个正整数N(0<N<=...

2020-05-06 17:59:42 548

原创 编程题-两个栈实现一个队列

编程题-两个栈实现一个队列题目解析代码题目用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解析使用两个栈模拟一个队列,入队先判断栈2是不是空,如果不是空就把元素导入栈1然后向栈1入栈,出队就是把栈1导入栈2然后出栈2的最上面的元素,也要先判断栈2空不空,不空的话可以直接出栈2.代码// A code blockvar foo = 'bar';...

2020-05-04 23:24:15 138

原创 Unity-坐标空间

Unity-坐标空间坐标空间的变换渲染游戏的过程可以理解为是把一个个顶点经过层层处理最终转化到屏幕上的过程就像顶点着色器最基本的功能就是把模型的顶点坐标从模型空间转换到齐次剪裁坐标空间中Unity中有很多种坐标空间大概包括:模型空间 世界空间 观察空间 剪裁空间 屏幕空间还有一些其他空间例如:切线空间如果我们要了解各个空间的意义与变换情况就需要先了解坐标空间的变换坐标空间的变换我们...

2020-04-21 20:18:10 1388 3

转载 Unity-ShaderGraph 2D溶解特效

aa

2020-04-20 20:43:27 1000

转载 Unity-ShaderGraph 边缘发光与卡通火焰

Unity-ShaderGraph 边缘发光与卡通火焰节点分析节点分析Fresnel Effect:菲涅尔效应 ,节点包含了三个输入,分别是表面法线的方向,表面视角的方向以及一个浮点数。计算公式如下Out = pow((1.0 - saturate(dot(normalize(Normal), normalize(ViewDir)))), Power);就是视角方向和物体表面方向夹角越大 ...

2020-04-20 17:21:48 2668 3

转载 Unity-ShaderGraph制作2D动画精灵发光

Unity-ShaderGraph制作2D动画精灵发光项目设置项目设置普通的2D工程,在PackManager上下载Universal RP这样能安装URP的所有包。由于是2D项目,没有设置管线渲染素材所以我们要告诉Unity使用URP渲染2D图形。Create->Rendering->URP->pipeline asset这样会创建两个素材一个是管线默认的渲染器如下图...

2020-04-17 21:45:23 3382

原创 Unity-物体速度过快无法检测碰撞体

Unity-物体速度过快无法检测碰撞体unity 一般是0.02s检测一次碰撞信息,如果一个物体以告诉运动,例如子弹,他会在0.02s之间穿过要和他碰撞的物体导致检测不到他们之间的碰撞信息。例如:现在有一个要运动的物体和一个Cube,我想实现让这个物体以一定速度接近Cube如果他们之间发生碰撞就销毁Cube。如下图:...

2019-11-19 11:59:53 3622 1

空空如也

空空如也

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

TA关注的人

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