自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 Bounding Volume Hierarchy (BVH)

层次包围体结构(Bounding Volume Hierarchy,BVH ) 是一组几何对象上的树结构。树的叶节点都是由包裹在包围体的几何对象构成。然后将这些节点分组为小集合并包含在更大的边界体积内。反过来,这些也以递归方式分组并包含在其他更大的包围体中,最终形成一个树结构,在树的顶部有一个单一的包围体。包围体层次结构用于有效地支持对几何对象集的多种操作,例如在碰撞检测和光线追踪中。

2022-10-22 15:43:18 1269 1

原创 排序之堆排

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。属于比较排序的一种。由 JWJ Williams 在 1964 年发明,同时也是堆诞生的时间。堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点。  堆排序被认为是一种改进的选择排序:与选择排序一样,堆排序将其输入分为已排序和未排序区域,并依次通过从未排序区域中获取最大(或最小)元素插入已排序区域。与选择排序不同,堆排序不会浪费时间对未排序区域进行线性时间扫描;相反,堆排序在堆数据结构

2022-03-27 21:09:57 619

原创 排序之快排

快速排序(Quicksort),又称分区交换排序(partition-exchange sort),简称快排,最早由东尼·霍尔(Tony Hoare)提出。在平均状况下,排序 n 个元素要 O(nlog n) 次比较。在最坏状况下则需要 O(n^2) 次比较,但这种状况并不常见。通常情况下快速排序比其他算法更快,因为它的内部循环可以在大部分的架构上有效率地达成。 快速排序使用分治策略(Divide and conquer)来把一个序列分为较小和较大的2个子序列,然后对两个子序列递归递归排序。

2022-03-19 22:01:23 899

原创 正则表达式

正则表达式(Regular Expression,常简写为 regex、regexp 或 RE),正则表达式使用单个字符串来描述、匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。  正则表达式这个概念最初是由 Unix 中的工具软件(例如 sed 和 grep)普及开的。  一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列匹配某个句法规则的字符串。

2022-03-15 20:00:00 548

原创 游戏 AI 设计之 FSM 有限状态机

有限状态机(finite-state machine,缩写:FSM)又称有限状态自动机(finite-state automaton,缩写:FSA),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。  从历史上来说,有限状态机是一个被数学家用来解决问题的严格形式化的设备。在人工智能变成中,我们可以建 FSM 理解为:  一个有限状态机是一个设备,或是一个设备模型,具有有限数量的状态,它可以在任何给定的时间根据输入进行操作,使得从一个状态变换到另一个状态,或者是促使一个输出

2022-03-07 22:54:23 8668 2

原创 08 代理模式

代理模式(Proxy Pattern):给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的英文叫做 Proxy 或 Surrogate,它是一种对象结构型模式。代理可以简单的理解为代为办理/处理某些事情。代理模式可分为三部分,代理者(Proxy)、实际目标(被代理者 Real Subject)和请求者。代理的工作方式等价于请求者使用代理去访问实际目标。

2022-02-26 22:30:20 317

原创 07 事件监听模式

事件监听模式(Event-Listener Pattern)不属于基本设计模式,是 观察者模式 的一种实现。提供一种基于 Event 的通讯模式。二、分析事件监听模式包括一个 EventListener(类似于观察者 Observer ),EventManager(事件管理器,类似于主题 Subject),还有一个 Event 表示事件,可以理解为观察者模式中消息通知 Notify。在开发中常用于各个系统之间的通讯,降低系统间的耦合性。

2022-02-26 17:05:58 821

原创 06 观察者模式

观察者模式(Observer Parttern)又称发布-订阅模式(Publish/Subscribe Parttern)是软件设计模式的一种,属于行为型模式。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用做实时事件处理系统。

2022-02-25 01:45:43 290

原创 05 MVC 模式

MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC 模式最早由 Trygve Reenskaug 在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20 世纪 80 年代为程序语言 Smalltalk 发明的一种软件架构。MVC 模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式

2022-02-23 01:05:01 342 1

原创 04 单例模式

单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

2022-02-20 14:33:36 929

原创 03 抽象工厂模式

抽象工厂模式(英语:Abstract Factory Pattern)是一种创建型模式。抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。

2022-02-20 13:29:32 83

原创 02 工厂方法模式

工厂方法模式一、概述工厂方法模式(Factory Method Pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。创建一个对象常常需要复杂的过程,所以不适合包含在一个复合对象中。创建对象可能会导致大量的重复代码,可能会需要复合对象访问不到的信息,也可能提供不了足够级别的抽象,还可能并不是复合对象

2022-02-20 08:00:00 77

原创 01 简单工厂模式

简单工厂模式一、概述简单工厂模式(Simple Factory Pattern)是最常用的设计模式之一,属于工厂模式中的一个特例。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。二、分析优点:一个调用者想创建一个对象,只要知道其名称就可以了。扩展性高,如果想增加一个产品,只要扩展一个产品类就可以。屏蔽产品的具体实现,调用者只关心产品的接口。缺点:每次增加一个产品时

2022-02-19 19:11:49 298

原创 00 设计模式综述

在软件工程中,设计模式(Design Pattern)是对软件设计中反复出现的各种问题,所提出的解决方案。设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。面向对象的设计模式通常用来描述类或对象其中的关

2022-02-19 17:59:51 141

原创 UML 之类图

UML 之类图类图是软件工程的统一建模语言(UML)一种静态结构图,该图描述了系统的类集合,类的属性和类之间的关系。注:示意图使用 StarUML 软件一、修饰符+ 表示 public- 表示 private# 表示 protected~ 表示 package图 1 修饰符二、关系类和类、类和接口、接口和接口之间存在一定关系,UML 类图中一般会有连线指明它们之间的关系。关系共有六种类型,分别是实现关系、泛化关系、依赖关系、关联关系、聚合关系、组合关系,如下图所示。注:类与类之间由弱

2022-02-12 17:30:58 3086

原创 UML 概述

UML 概述一、简介统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。二、主要模型功能模型:从用户的角度展示系统的功能,包括用例图。对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类别图、对

2022-02-12 15:51:10 314

原创 Möller-Trumbore算法-射线三角形相交算法

Möller-Trumbore算法一、概述二、准备知识三、Möller-Trumbore 算法推导推导过程一、概述Möller-Trumbore 射线三角相交算法是一种快速计算射线与三角形在三个维度上的交点的方法,通过向量与矩阵计算可以快速得出交点与重心坐标,而无需对包含三角形的平面方程进行预计算。另外,它还应用于计算机图形学中以实现涉及三角形网格的光线跟踪计算。算法名字是以发明者 TomasMöller 和 Ben Trumbore 的名字来命名的。二、准备知识1、三阶方阵的行列式等于三个列向量的

2020-11-21 21:38:06 7001 2

原创 贝塞尔曲线

贝塞尔曲线一、简介二、数学推导线性贝塞尔曲线二阶贝塞尔曲线三阶贝塞尔曲线三、代码实现一、简介贝塞尔曲线(英语:Bézier curve)是计算机图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝塞尔曲面,其中贝塞尔三角是一种特殊的实例。贝塞尔曲线于1962年,由法国工程师皮埃尔·贝塞尔(Pierre Bézier)所广泛发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由保尔·德·卡斯特里奥于1959年运用德卡斯特里奥算法开发,以稳定数值的方法求出贝塞尔曲线。二、数学推导线性

2020-11-12 20:49:58 489 1

原创 光栅化之 Bresenham 算法

光栅化之Bresenham 算法布雷森汉姆直线算法(英语:Bresenham’s line algorithm)是用来描绘由两点所决定的直线的算法,它会算出一条线段在 n 维位图上最接近的点。这个算法只会用到较为快速的整数加法、减法和位元移位,常用于绘制电脑画面中的直线。是计算机图形学中最先发展出来的算法。由 Jack E. Bresenham 于 1962 年在 IBM 发明了此算法,因此得名。假定已知直线方程为在绘制时依次递增 x,在(x,y)处绘制了点之后,该直线在其放置位置方面的选择范围就

2020-09-25 01:17:58 1056

原创 光栅化之线段扫描转换算法

光栅化之线段扫描转换算法线段扫描转换算法就是通常所说的 DDA 算法,它是以数字微分分析器(Digital Differential Analyzer)命名的,这种数字微分分析器是早期用于微分方程数字仿真的机电设备。因此直线满足下面的微分方程:假定线段的两个端点为(x1,y1)(x2,y2)(x_1, y_1) (x_2, y_2)(x1​,y1​)(x2​,y2​),那么有因为像素的坐标是整形,当斜率小于1时,将 xxx 代入,得到 yyy 四舍五入后,可以得到一个比较理想的结果(如 图2 所示

2020-08-26 00:37:56 665

原创 Assimp 编译(Visual Studio 2019)

Assimp 编译一、前言二、源码下载三、编译环境四、编译五、配置环境六、测试 DEMO一、前言Assimp 是一个非常流行的模型导入库,它是 Open Asset Import Library(开放的资源导入库)的缩写。Assimp 能够导入多种不同的模型文件格式(并也能够导出部分的格式),它能将不同格式的模型数据加载至 Assimp 的通用数据结构中。当 Assimp 加载完模型之后,我们就能够从 Assimp 的数据结构中提取我们所需的所有数据了。由于 Assimp 的数据结构保持不变,不论导入的

2020-08-05 00:02:35 6882 5

原创 图形学光照

图形学光照一、概述二、环境光照三、漫反射光照四、镜面光照五、光照公式六、Demo一、概述现实世界的光照是极其复杂的,而且会受到诸多因素的影响,这是我们有限的计算能力所无法模拟的。因此OpenGL的光照使用的是简化的模型,对现实的情况进行近似,“看起来像”就好了。这些光照模型都是基于我们对光的物理特性的理解。其中一个模型被称为冯氏光照模型 (Phong reflection model or Phong reflection model),冯氏光照模型的主要结构由3个分量组成:环境(Ambient)、漫反

2020-07-29 12:57:34 951

原创 四元数与欧拉角

四元数与欧拉角一、前言二、欧拉角三、四元数1、四元数各值的意义2、四元数转换为旋转矩阵3、参考源码一、前言欧拉角与四元数都被用来处理图像学中的旋转。两者各有优劣,下面我们对它们做详细的比较。二、欧拉角欧拉角是表示朝向的最简单最直观方法,只需存储绕 X、Y、Z 轴旋转的角度,非常容易理解。你可以用vec3来存储一个欧拉角:vec3 EulerAngles( RotationAroundXInRadians, RotationAroundYInRadians, RotationAroundZInRad

2020-07-15 01:07:20 8221

原创 OpenGL入门三——变换进阶

OpenGL入门三——变换进阶一、预备知识二、实现1、模型构建2、矩阵栈3、太阳系的绘制三、控制四、预览一、预备知识图形学变换——平移、旋转和缩放 https://blog.csdn.net/zhanxi1992/article/details/106532991OpenGL入门二——变换 https://blog.csdn.net/zhanxi1992/article/details/106653096二、实现给地球 23.44度的倾斜,地轴偏角,这种倾斜使地球产生了四季。注意地球的轨道不要

2020-07-08 08:46:09 274

原创 图形学投影

图形学投影一、概述二、图形学中常见投影三、投影规范化(projection normalization)四、正交投影五、透视投影六、OpenGL中的实现一、概述投影可以理解为空间到平面的映射。同现实中阳光将事物投影到地面上一样,投影变换将整个向量空间映射到它的其中一个子空间,并且在这个子空间中是恒等变换。二、图形学中常见投影透视投影与正交投影示意图三、投影规范化(projection normalization)使用平移和缩放变换将照相机坐标系下的顶点变换的默认的视见体(部分教程称为是视景体)的

2020-07-01 20:42:49 3027

原创 图形学——观察

图形学——观察一、概述二、定义一个相机三、观察矩阵(View Matrix)四、LookAt 函数一、概述观察空间经常被称为 OpenGL 的摄像机(Camera),所以有时也称为摄像机空间(Camera Space)或眼空间(Eye Space)。观察空间是将世界空间坐标转化为用户视野前方的坐标而产生的结果。因此观察空间就是从摄像机的视角所观察到的空间。而这通常是由一系列的位移和旋转的组合来完成,平移/旋转场景从而使得特定的对象被变换到摄像机的前方。这些组合在一起的变换通常存储在一个观察矩阵(View

2020-06-24 00:12:02 1020

原创 OpenGL入门二——变换

OpenGL入门二——变换一、预备知识二、实现三、控制四、预览一、预备知识1、齐次坐标:https://blog.csdn.net/zhanxi1992/article/details/1062229982、图形学变换——平移、旋转和缩放 https://blog.csdn.net/zhanxi1992/article/details/106532991二、实现1、八面体顶点数据const int NumVertices = 24; // 8个面,每个面1个三角形,每个三角形3个顶点,共24个顶

2020-06-09 23:17:16 281

原创 图形学变换——平移、旋转和缩放

图形学变换一、概述二、平移新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入一、概述在齐次坐标中,所有的反射变换都可以使用如下形式的 4 x 4 矩阵来表示二、平移你好! 这是你第一次使用 Markdown编辑器 所展

2020-06-04 00:38:21 6677

原创 齐次坐标

齐次坐标  在数学里,齐次坐标(homogeneous coordinates),或投影坐标(projective coordinates)是指一个用于投影几何里的坐标系统。该词由奥古斯特·费迪南德·莫比乌斯于1827年在其著作《Der barycentrische Calcul》一书内引入。  齐次坐标可让包括无穷远点的点坐标以有限坐标表示。使用齐次坐标的公式通常会比用笛卡儿坐标表示更为简单,且更为对称。  齐次坐标广泛的应用于计算机图形及3D计算机视觉。使用齐次坐标可让计算机进行仿射变换,通常其投

2020-05-19 21:49:05 9278

原创 LaTeX 安装及环境配置

LaTex 安装及环境配置一、背景二、准备1、核心库 TeX Live2、编辑器 TeXstudio三、安装1、TeX Live 20202、TeXstudio四、测试一、背景LaTeX(/ˈlɑːtɛx/,常被读作/ˈlɑːtɛk/或/ˈleɪtɛk/)是一种基于TeX的排版系统,由美国计算机科学家莱斯利·兰伯特在20世纪80年代初期开发,利用这种格式系统的处理,对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学、物理文档。这个系统同样适用于生成从简单的信件到

2020-05-09 02:34:14 6140

原创 OpenGL入门一——分形Sierpinski

OpenGL入门一——分形Sierpinski简介一、谢尔宾斯基三角形(Sierpinski triangle)二、进阶 3D 版谢尔宾斯基三角形简介分型是图形学入门的经典,下面将以谢尔宾斯三角作为讲解一、谢尔宾斯基三角形(Sierpinski triangle)创建一个等边三角形;沿三边中点的连线,将它分成四个小三角形;去掉中间的那一个小三角形;对其余三个小三角形重复步骤1。...

2020-04-26 16:31:14 1469

原创 Dreamweaver 预览界面中文乱码解决方案

1、做网站开发经常需要处理多国语言,最常见的中英混排。使用浏览器显示正常,却在 Dw预览窗口中显示乱码,严重影响视觉效果和开发进度。网上查了资料说文件默认格式设置为Utf-8,经过多种尝试还是无法解决下面问题。2、经过各种测试,其实问题不是出现在文本编码格式上,而是没有给页面指定显示编码格式。仅需在页面中加入以下代码即可,最终效果如下图。<meta charset="utf...

2020-03-19 23:57:02 2203 1

原创 Visual Studio 2017 配置 OpenGL

OpenGL库1、FreeGLUT 3.0.0 :安装下载参照博文Visual Studio 2017 编译 Freeglut2、GLEW 2.1.0 :下面方法二选一,建议直接使用官方编译文件(1)代码编译下载:https://sourceforge.net/projects/glew/files/glew/2.1.0/glew-2.1.0.zip/download解压后直接使...

2019-01-19 12:12:30 1048

原创 Visual Studio 2017 编译 Freeglut

FreeGLUT是 OpenGL 官方推荐使用的 GL库,用于替换许久不更新的GLUT库。OpenGL入门学习常用库之一,下面详细介绍如何在 Windows 平台编译 FreeGLUT库。当然你也可以直接去官网下载编译好的库,各平台下载地址:https://www.transmissionzero.co.uk/software/freeglut-devel/freeglut 3...

2019-01-17 18:06:29 1242 2

原创 Ubuntu 16.04 64bit 安裝爲知筆記以及解决Qt5 Creator无法切换輸入法(fcitx)輸入漢字問題

首先按照官方步驟安裝(http://www.wiz.cn/compile-client.html)Qt 安装 5.7.0 for Linux 64-bit (715 MB) 或者更高版本http://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7.0.run下载下来的安装文件,更改权限...

2018-09-16 15:56:25 193

原创 基于NavMesh的A*寻路算法

基于NavMesh的A*寻路算法代码工程目录:链接:https://pan.baidu.com/s/1anKCGe5EMigeeb1wfydrYA提取码:kebz一、导入数据生成NavMesh导航轮廓1、由文本导入数据,数据要求:可走轮廓的最外围为顺时针方向,障碍物为逆时针方向,顶点不可有重复的,各障碍物不可叠加;2、使用扫描线算法划分三角形,生成多边形轮廓;3、将生...

2018-09-16 15:53:43 4978 15

原创 Unity游戏iOS AppStore 内付费接入(In app purchase)

前阵子忙着赶项目没什么时间做总结,前两个星期iOS审核通过,项目也顺利在北美上线了。刚好公司组织旅游回来,抽空总结写Unity iOS 内付费的接入。1、前置条件:(1)    苹果开发者账号(99美刀一年,没有的话可以在某宝上买个p12正式,自己搞搞开发还是比较合算);(2)    创建好应用的bundle ID 及相关开发证书和描述文件;(3)    Itunes Connec...

2018-09-16 15:50:30 4929 2

原创 Ubuntu 16.04 64bit Apache2的安装及配置

Ubuntu下安装Apache2,apache是目前应用最广泛的web服务器之一,配置搭建也相对简单。一、安装sudo apt-get updatesudo apt-get install apache2 二、配置1、根目录配置sudo vi /etc/apache2/sites-available/000-default.conf打开apache的默认配置文件...

2018-09-16 15:30:46 1346

原创 UGUI自适应工具

游戏开发中UI自适应是个非常重要的环节,自适应方式不仅影响游戏的美观,也影响在不同机型上的交互。实际游戏开发中美观方面一般交给美术或策划调整,然闻道有先后,术业有专攻。需要一个简单易用的工具来辅助他们调整,通过代码修改 Scene 下的分辨率。下面是具体工具的代码实现,游戏中使用1334 * 750作为标准分辨率。//*******************************...

2018-09-16 15:24:28 645

原创 Unity 与 Android aar 包交互

新版Unity已经支持与 aar 包交互,相较以前的 jar 包交互在资源管理上更加合理,这里不在赘述。一、工具版本 Unity 5.6.4f1Android Studio 2.3二、创建Android aar包1、创建空Android Project,选择 Phone and Tablet 并设置对应的SDK版本2、选择Empty Activity,其余保持默认即可...

2018-08-20 09:45:00 3264

assimp-5.0.1.zip

Assimp 5.0.1 库文件,VS2019 编译,包含 win32、x64 版本 dll、lib 和 include 文件,内含开发环境配置教程

2020-08-05

空空如也

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

TA关注的人

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