自定义博客皮肤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)
  • 收藏
  • 关注

原创 Real-Time-Rendering 矩阵的其他变换及投影矩阵(三)

接下来我们讨论矩阵的平移、投影变换,在计算机图形学中这两种变换也及其常用。一、4x4矩阵 在讨论位移矩阵前,我们需要引出4x4矩阵的相关概念。 4D向量有4个分量,前三个是标准的x、y、z分量,第四个是w,有时称为齐次坐标。 我们可以把齐次坐标理解为更高维度的抽象。比如2D坐标系中一个点在2D的扩展坐标齐次坐标中将有无数的点...

2019-06-25 23:31:57 810

原创 Real-Time-Rendering 矩阵的线性变换(二)

上一章节讨论了矩阵的基本性质,其中提到了线性变换。什么是线性变换呢。在数学上如果满足下式,则矩阵对一个向量的变幻是线性的。 一般情况下线性变换为形如:F(a) = aM。根据之前向量和矩阵的性质,显然此式满足如上两个条件。是线性的。 零向量的任意线性变换结果仍是零向量。 显然上述性质不存在...

2019-06-23 23:12:25 343

原创 Real-Time-Rendering 矩阵(一)

接下来就是矩阵了。图形学中矩阵作为最常用的工具涉及的知识点也非常多。本文以《3D图形基础:图形与游戏开发》及《Real-Time-Rendering》书中对矩阵的知识点的讲述为基础,先做一篇矩阵概述即基础知识。一、矩阵的数学定义 矩阵一般用来描述两个坐标系统间的关系。通过定义一种运算将一个坐标系中的向量转换到另一个坐标系中。 行数和列数相同的...

2019-06-13 01:37:08 482

原创 Real-Time-Rendering 向量

Real-Time-Rendering从第四章开始讲解图形学中常用的数学知识。由于线性代数、几何等相关知识等还给老师了。。。后面开始根据第四章的知识点并参考大学线性代数课本、3D数学基础:图形与游戏开发等书籍记下图形学中常用的几种工具及相关原理。 首先肯定是向量了,对应unity中Vector2结构体与Vector3结构体。下面通过C#重新实现一个Vector3的...

2019-05-23 00:34:37 181

原创 The Graphics Renderring Pipeline

开始学习计算机图形经典Real-Time Rendering啦,自己的一些学习心得和总结,以及书上的效果会慢慢总结并在unity上实现以下。这篇文章主要是对数据Real-Time Rendering前三章的总结,同时文章标题使用的该书第二章的标题。 渲染管线包括三部分,应用部分,几何部分,光栅化。如下图所示。 1.The Application Stage...

2018-12-10 00:28:22 217

原创 Unity之C#注入

众所周知,Unity采用Mono实现跨平台。.Net在运行PE类型文件时(如dll,exe)会将此类文件在第一次加载时编译出IL指令集的文件,此后每次运行该程序只需将IL文件加载进内存即可。如题,实现C#的注入即实现对编译好的IL文件代码的注入。这里需要一个强大的库文件,Mono.Cecil。Mono.Cecil提供对一个PE类型文件的IL注入,适用于.net平台,同样适用于Unity生成的程

2017-03-22 17:14:27 4601

原创 C#之反射

最近在看反射就把获取各种常用类型变量的方法总结了一遍。C#编译时会把类的信息,变量,特性等都注册在一张表上,而基于System.Reflection下的Assembly,Type类等都可以获取这个表的内容。从而达到根据字符串获取一个类的实例,方法,变量,委托,事件等,以上行为即是我理解的C#的反射过程。代码如下:一个随意定义的待测试类和通过反射获取各种类型变量的逻辑。using Sys

2017-03-08 16:22:20 308

原创 算法之求两个数组各任意一位相加和组成的新数组中的前k位

输入时两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个大的数。如题,首先想到的暴力排序,把两个数组能相加得所有数放入一个新的数组,然后用各种排序,假设第一个数组长m,第二个数组长n。若用快速排序或堆排序等较快的排序。时间复杂度为o((log2(m+n))*(m+n)),空间复杂度为o(m+n)。显然我们只需要前k个大的数,并不需要存储所有相加得到的和,当k足够小时,空间有一

2016-11-20 21:42:53 1624

原创 求一个数的约数和其数量

约数定义:约数,又称因数。整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。在大学之前,"约数"一词所指的一般只限于正约数。约数和倍数都是二元关系的概念,不能孤立地说某个整数是约数或倍数。一个整数的约数是有限的。同时,它可以在特定情况下成为公约数。代码如下:#include#includeusing nam

2016-11-20 14:09:06 6225

原创 算法之反转链表

问题很简单:反转一个链表。其实就是对链表的基础操作,思路是顺着链表头结点的next指针遍历整个链表。假设链表前三个节点分别为A、B、C。1.A->next = C;2.B->next = A;以A的next节点作为判断依据即可遍历整个链表并实现前后两个节点的指针反转。虽然思路很简单,但写的时候发现C的快忘得差不多了,为了复习C我在C++工程中完全以C的代码实现的。诸如new方法我用

2016-10-25 23:27:01 317

原创 算法之将字符串的部分移动

算法题:给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。  最开始想到的就是将整个数组前移两次。符合空间复杂度O(1)。#includeusing namesp

2016-10-17 23:14:16 611

原创 算法之字符串选出第一个只出现一次的字符

好久没写了...最近打算恢复博客,尽力而为吧。给出一串字符串,返回第一个只出现一次的字符。如:输入:aabbccddeff返回:f最先想到了就是将每个字符都与所有字符对比一遍,不存在相同的则输出,时间复杂度显然是o(n2)。当时看到这道谷歌的面试题时,我想到前几天看到用异或比较二进制从而解决两个对象是否相同的问题。但异或只有偶数个相同的值才能得0,奇数个相同的值得他本身,在这道

2016-10-14 13:35:50 1083 1

原创 算法之树形结构

上班了,太忙了,标题一天一算法也去了,实在没那个时间和精力,但是算法和数据结构一定要学下去,这次说下C#实现的树形结构。树的遍历使用的先序遍历,两个类,一个是节点结构,一个是管理节点的树。采用链式存储。直接上代码。using UnityEngine;using System.Collections;using System.Collections.Generic;/// /// 文件夹

2015-11-24 16:47:33 2677 1

原创 Unity之NGUIUIButton点击事件的带参传递

最近写的游戏中UI部分用的NGUI,感觉NGUI真心没UGUI好用啊,功能封装的不全,想要什么功能还得去翻源码。比如PopList加滑动。。。今天说说UIButton的点击事件,最简单的拖动就不说了,功能很鸡肋,一是不好维护,而是很多情况下我们要动态生成一些button并且对这些button回调,NGUI中封装了一个EventDelegate类用来添加回调函数,再把很多个EventDelega

2015-10-24 11:01:10 4986

原创 Unity之线性渲染器

最近再做一个光线类的小游戏,时间不太够写算法的,但是不能断对算法的研究,周六日补吧~今天说说写光线的时候遇到的一个问题,在使用LineRender组件的时候,一旦在顶点数组中多加一个点从而增加一条线段的时候会发生光线头粗尾细的情况,效果很差,从网上找的资料貌似是绘制三角面片的问题,具体原因我也不太清楚,于是我打算用一堆LineRender对多个线段进行渲染,所以自己封装了一个LineRende

2015-10-22 22:12:44 2240 1

转载 一天一算法之归并排序

归并排序是3个时间复杂度为O(nlogn)唯一一个稳定的算法,不过自己没有实现出来。。。 还好别人的代码看懂了。。。 这是原文链接:点击打开链接using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Sort{ class MergeSorter { /

2015-10-20 18:58:18 426 1

原创 一天一算法之堆排序

我所知道的三种常用的复杂度为O(nlogn)的算法有三种,快速排序,堆排序,归并排序,今天说说堆排序。首先说几个概念:1.堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 2.大根堆:所有节点的子节点比其自身小的堆     3.小根堆:所有节点的子节点比其自身大的堆      4.大根堆的堆顶元素就是这个堆中

2015-10-19 14:37:09 491

原创 unity之通知中心

周六周日给自己放两天假,算法停两天~但是懒不能偷的,今天谈谈通知。众所周知,unity中的代码是类似脚本语言的存在,那么问题来了,类与类之间是如何通信的。第一时间想到的GetComponent函数,但这个方法我们并不知道是如何实现的,从网上得到的资料貌似这个方法性能不是很好,而且如果工程大了,里面的脚本数量上升到一定程度时,想想满天飞的GetComponent都头疼,维护起来肯定好不到哪去

2015-10-17 11:13:40 1589

原创 一天一算法之选择排序

今天说说选择排序。首先和昨天写到的冒泡排序做下比较,冒泡排序是两两比较前者大就交换的排序,很可能交换的次数极多,要知道交换耗费的性能是要比比较耗费的性能高的。于是选择排序在交换的次数上进行了优化。从数组开始每次取一个数与后面的数比较,存下大数的值和索引位,在比较完一次后进行交换。交换总次数相对稳定。using System;/// /// 选择排序/// 思想是相对于冒泡来说较少交换

2015-10-16 18:46:42 400

原创 一天一算法之冒泡排序

这几天写项目,偷点懒,写个简单的。虽然冒泡排序简单,实际工程中也基本用不到,不过用来入门算法还是不错的。using System;/// /// 冒泡排序,最基本的排序/// 两两比较,碰到大的交换,碰到小的不变,最终大的放后面小的排到前面/// 由于比较次数很多,性能一般,实际用处较少/// 时间复杂度为n2/// namespace test{ class MainC

2015-10-15 21:04:06 297

原创 各种常用的插入排序(直接,折半,希尔)

本来打算昨天发,结果竟然学了一个晚上,自认为大学数据结构学得还不错,重新翻一遍竟然看了这么久还没有理解透彻,更加坚定了我一天一算法的决心。昨天和今天的排序一块写出来一块总结道插入排序里好啦。老样子,代码走起。using System;/// /// 插入排序/// namespace test{ class MainClass { public static void M

2015-10-14 12:44:36 552

原创 Unity之对象池(单例对象池和泛型对象池)

众所周知,游戏开发中内存和性能一直是影响用户游戏体验的至关重要的两个因素,这次说一说对象池的概念。对象池意义是将游戏中反复创建销毁的对象进行多次利用,从而避免大量对象的销毁与创建而造成CPU的负担。缺点是占用了更多的内存,但凡事都没有最好的解决办法,在移动平台上针对游戏的优化基本偏向于牺牲空间换取时间,所以以下两种对象池从本质上是为了回收对象服务的,废话不多说,直接上代码。using Un

2015-10-13 13:20:09 6742

原创 快速排序的递归和非递归实现

对于一个游戏爱好者和游戏开发者,数据结构和算法显得极为重要,这些可以体现一个开发者的逻辑能力。而作为一个游戏开发小白,要争取每天一个算法,游戏之路漫漫而其修远兮,吾将上下而求索。这次写个快排的递归非递归算法,小白一个,有误之处多多见谅。废话不多说直接上代码。using System.Collections.Generic;/// /// QuickSort/// 主要思路,不停找中间

2015-10-12 17:16:51 591 1

空空如也

空空如也

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

TA关注的人

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