自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (6)
  • 收藏
  • 关注

原创 【寒江雪】UV+Depth信息计算世界坐标

最近要实现Depth反计算世界坐标的效果,于是看了其他网友的博客,实现如下 float d = texture(depthStencilTexture,TexCoords).r; vec4 NDC = vec4(TexCoords.x*2.0 - 1.0, TexCoords.y*2.0 - 1.0, d*2.0 - 1, 1.0); vec4 worldPos = inv_view * i...

2019-10-20 01:59:42 454

原创 【寒江雪】Unity中调用C++的函数和类

  这几天一直在搜Unity怎么使用C++写的类,百度出来的都是如何在C++中调C++写的Add方法,很苦恼,然后google第一条就找到了国外网友的答案  先给出在Unity中怎么调C++写的Add方法的示例,这个示例已经是全网传遍了的。// Add.cppextern "C" _declspec(dllexport) int Add(int x, int y);int Add(int...

2019-04-19 22:56:32 2433 5

原创 【寒江雪】计算两个面的交线

计算两个面的交线  空间中两个平面要么相交要么平行,相交平面得到的是一条直线。  根据之前的博文有讲述,空间中不共线三点确定一个平面。那么已知两个平面,且两平面相交,应该如何去计算两平面之间的交线呢?  思路分析:如果两平面相交,获得一条直线,那么该直线就同时属于两个平面。那么该直线会同时垂直于两个平面的法线。那么两个平面的法向量的外积,就可以计算出交线的方向。这时候还需要计算交线上一...

2018-07-27 13:06:17 25235 2

原创 【寒江雪】计算直线与平面的交点坐标

计算直线与平面的交点坐标  直线与平面交点坐标的计算公式推导 直线l=p+a⃗ tl=p+a→tl = p + \vec{a}t 取平面内一点s,法向量n⃗ n→\vec{n} 则由ps→cos<ps→,n⃗ >=ps→⋅n⃗ ps→cos<ps→,n→>=ps→⋅n→\vec{ps}\cos = \vec{ps}\cd...

2018-07-27 13:02:42 6162

原创 【寒江雪】判断空间中两直线的位置

判断空间中两直线的位置  假设空间中有两直线l1,l2l1,l2l_1,l_2  其中l1=t1a1→+b1l1=t1a1→+b1l_1 = t_1\vec{a_1}+b_1,l2=t2a2→+b2l2=t2a2→+b2l_2 = t_2\vec{a_2} + b_2  两直线在空间中的位置关系,有异面,平行和相交。通过以下几个步骤判断他们的位置关系作向量c⃗ =b1−...

2018-07-26 22:14:42 3293

原创 【寒江雪】空间内两直线相交

空间内两直线相交  在三维空间内,两直线相交公式的推导。整个推导过程假设两直线一定相交。 设空间内有直线l1,l2l1,l2l_1,l_2相交于点pppl1=t1a1→+b1l1=t1a1→+b1l_1 = t_1\vec{a_1}+b_1 l2=t2a2→+b2l2=t2a2→+b2l_2 = t_2\vec{a_2}+b_2 p=t2a2→+b2p=t2a2→+b2p = t_...

2018-07-26 00:27:54 6421

原创 【寒江雪】两异面直线之间的距离

两异面直线之间的距离  两异面直线之间的距离的计算方法,根据两异面直线的公垂线的方向向量,和直线上任意两点组成的方向向量来计算距离。  假设两直线分别为p1=t1a1→+b1p1=t1a1→+b1p_1=t_1\vec{a_1}+b_1,p2=t2a2→+b2p2=t2a2→+b2p_2 = t_2\vec{a_2}+b_2  两直线的公垂线的方向向量即为n⃗ =a1→×a2...

2018-07-24 23:44:47 3118

原创 【寒江雪】Go实现迭代器模式

Iterator Pattern  迭代器模式可以把对象的访问方式给封装出来,只需要给某种数据结构实现自己的迭代器,用户只需要拿到迭代器就可以轻易操作该数据结构,而不需要在乎底层实现。实现封装一个容器package iteratorimport "container/list"type Container interface{ Iterator()Itera...

2018-07-24 19:25:50 635

原创 【寒江雪】Go实现组合模式

Composite Pattern  组合模式是以树形结构来组织组件完成某个功能。当根节点的某个方法被调用时,会遍历树结构,调用相应的方法。不过具体如何设计是因人而异的。   它突出的是整体和部分的关系。实现  组合模式的结构中有两种类型,一种是分支节点,它包含了子节点列表,可以往里边添加和删除节点。另一种是叶子节点,叶子节点没有子节点。这两种节点都实现了同一个接口:Compo...

2018-07-24 19:25:12 357

原创 【寒江雪】Go实现装饰者模式

Decorator Pattern  装饰着模式可以在需要扩展某个类的时候,动态地修改而不需要在内部添加代码,也可以防止类爆炸。   装饰者模式可以提供了灵活地扩展方案.实现  实现一个日志的自定义功能.package decoratorimport ( "time" "fmt")type LogDecorate interface { ...

2018-07-24 19:24:48 252

原创 【寒江雪】Go实现外观模式

Facade Pattern   外观模式其实就是把复杂的东西给封装,由统一的接口进行操作。这样可以简化用户的使用。例子  如果要开一家饭馆,一个饭馆分为采购的,管仓库的,切菜的,炒菜的,吃菜的。  而采购的,管仓库的,切菜的,炒菜的,是厨房。吃菜的,是客户。客户并不希望知道厨房工作的细节,只希望告诉厨房自己想吃什么就行了,他不想告诉厨房要去买什么菜,怎么切,怎么炒。而巧的是,...

2018-07-24 19:24:21 261

原创 【寒江雪】Go实现策略模式

Strategy Pattern  策略模式在运行时动态地装配算法行为到对象中。  我们可以定义算法,封装它们,动态地切换它们。实现type Operator interface{ Apply(int,int)int}type Operation struct{ Operator Operator}func (this *Operation)Op...

2018-07-24 19:23:10 230

原创 【寒江雪】Go实现模版方法模式

Template Pattern  模版方法设计模式允许把对象不同的部分抽象,在同一段代码中执行相同的逻辑,增加可拓展性。在Go语言中,实现由底层对象实现,而行为由顶层方法控制。实现package templateimport "fmt"type Tmpl interface{ DoSomething() DoAnything()}type Tmp...

2018-07-24 19:21:23 210

原创 【寒江雪】判断一个点是否在网格内

判断一个点是否在多边形网格内  根据前几天看到的博客——《判断一个点是否在多边形内》——突发奇想,设计一个算法判断一个点是否在多面体网格内。  这里假设该网格物体都是由许多个三角面构成的,同时假设该网格物体是封闭的。  那么要判断一个点是否在网格内,就由该点朝某个坐标轴方向发射一条射线(也就是构造一条射线)。  如果该射线穿入的三角形面数与穿出的三角形面数之和为奇数,那么可以确定该...

2018-07-24 19:15:38 2552 7

原创 【寒江雪】平面内点坐标的分解

平面内点坐标的分解  看题目有点绕,但其实要做的事情很简单。  假设一个平面,由不共线三点OAB构成。设OA→=i⃗ OA→=i→\vec{OA} = \vec{i},OB→=j⃗ OB→=j→\vec{OB} = \vec{j}  则平面内任意一点P=O+αi⃗ +βj⃗ P=O+αi→+βj→P = O + \alpha\vec{i} + \...

2018-07-24 11:55:46 362

原创 【寒江雪】点面距离的计算

点面距离的计算  空间中一个平面可以用三个点来表示,那么计算空间中一个点到平面的距离其实也相当简单。  直接上推导过程 假设平面内任意一点O(x0,y0,z0)(x0,y0,z0)(x_0,y_0,z_0) 基向量 a⃗ a→\vec{a}(ax,ay,az)(ax,ay,az)(a_x,a_y,a_z) 和 b⃗ b→\vec{b}(bx,by,bz)(bx,...

2018-07-21 19:49:04 2462

原创 【寒江雪】空间中的点线和面

空间中的点线和面  在三维空间中,最基本的元素莫过于基本的点,线和面。  他们之间的关系,可以这样理解,点按着一定的方向平移可以得到直线,线按照一定的方向平移可以得到平面,这个结论想象一下就可以理解了。​ 可是要在数理逻辑上来表示这些元素,就需要根据一定的公理,定理来确定了。表示空间中任意一个点  在三维空间中,要表示任意一个点可以使用三维坐标来表示点的位置信息。 ...

2018-07-21 18:37:24 1271 1

原创 【寒江雪】圆与胶囊型物体的碰撞检测

圆与胶囊型物体的碰撞检测  本文主要讲述平面中一个,圆与胶囊型物体的碰撞检测的一种算法。   圆形由圆心+半径表示。   胶囊型物体的两端是两个半圆,中间部分是一个矩形。所以胶囊型物体的表示由两个圆心+半径来表示。​  要对这两种图形做碰撞检测,就要涉及到圆心到胶囊型物体的最短距离的计算。这时候就要用到点到线段的最短距离的计算方法。  计算出最小距离的平方D^2。然后根据D^2...

2018-07-20 01:43:54 1101 1

原创 【寒江雪】圆与扇形物体的碰撞检测

圆与扇形物体的碰撞检测​ 扇形物体包括一个圆心和两个端点,两个端点在扇形物体的弧上。可以用三点+半径来表示一个扇形,或者也可以用三点来表示一个扇形。​ 要对圆与扇形物体做碰撞检测,先来分析圆与扇形物体的位置关系。​ 圆心可能的位置有两种:在扇形物体的扇面朝向的方位不在扇形物体的扇面朝向的方位  这两种情况的判断方法是有区别的。   对于第一种情况,直接根据圆...

2018-07-17 16:24:32 1962 3

原创 【寒江雪】点到直线的最短距离

点到直线的最短距离​ 根据直线的表示方式p = at + b,可以设一个点P(px,py),任意一点A(x0,y0)到点P的距离可以根据两点间距离公式求出。 D^2 = (px-x0)^2+(py-y0)^2 = (axt+bx-x0)^2+(ayt+by-y0)^2 = (ax^2+ay^2)t^2 + 2{ax(bx-x0)+ay(by-x0)}t+(...

2018-07-17 16:21:11 4988

原创 【寒江雪】实现物体的匀速圆周运动

让物体做圆周运动圆心在原点,半径为1的匀速圆周运动curAngle += angleSpeed * Mathf.Deg2Rad;float x = Mathf.Cos(curAngle);float y = Mathf.Sin(curAngle);圆心在原点,半径可变的匀速圆周运动curAngle += angleSpeed * Mathf.Deg2Rad;f...

2018-07-13 21:48:30 1100

原创 【寒江雪】Box-Muler算法——均匀分布转正态分布

Box-Muler算法​ Box-Muller,一般是要得到服从正态分布的随机数,基本思想是先得到服从均匀分布的随机数再将服从均匀分布的随机数转变为服从正态分布。​ Box-Muller 算法隐含的原理非常深奥,但结果却是相当简单。它一般是要得到服从正态分布的随机数,基本思想是先得到服从均匀分布的随机数再将服从均匀分布的随机数转变为服从正态分布。 如果在 (0,1] 值域...

2018-07-13 21:47:54 3407

原创 【寒江雪】直线的表示

直线的表示​ 在一个平面中,两点确定一条直线,通过高中的知识,可以根据两点计算直线的斜率,以y=kx+b的形式表示直线,但是为了更好地在计算机中表示直线,可以通过两点来表示一条直线。​ 要表示一条直线,原理无非是表示直线上的点集。y=kx+b表示的就是直线点集中的纵坐标与横坐标之间的关系。​ 撇开表达式表示法,用向量来表示一条直线,可以表示成p=at+b。这里a和b就是两个...

2018-07-13 21:45:07 774

原创 【寒江雪】Go实现迭代器模式

Iterator Pattern  迭代器模式可以把对象的访问方式给封装出来,只需要给某种数据结构实现自己的迭代器,用户只需要拿到迭代器就可以轻易操作该数据结构,而不需要在乎底层实现。实现封装一个容器package iteratorimport "container/list"type Container interface{ Iterator()Itera...

2018-03-23 00:50:02 673 1

原创 【寒江雪】Go实现模版方法模式

Template Pattern  模版方法设计模式允许把对象不同的部分抽象,在同一段代码中执行相同的逻辑,增加可拓展性。在Go语言中,实现由底层对象实现,而行为由顶层方法控制。实现package templateimport "fmt"type Tmpl interface{ DoSomething() DoAnything()}type Tmp...

2018-03-23 00:18:42 1307 2

原创 【寒江雪】Go实现策略模式

Strategy Pattern  策略模式在运行时动态地装配算法行为到对象中。  我们可以定义算法,封装它们,动态地切换它们。实现type Operator interface{ Apply(int,int)int}type Operation struct{ Operator Operator}func (this *Operation)Op...

2018-03-20 15:40:36 937

原创 【寒江雪】Go实现状态模式

State Pattern  状态模式把对象每一个状态的行为封装在对象内部。避免大量状态逻辑杂糅。实现package stateimport "fmt"type State interface{ NextState()State Update()}type GameStartState struct{}type GameRunState s...

2018-03-19 13:25:09 804

原创 【寒江雪】Go实现观察者模式

Observer Pattern  观察者模式使得一种类型的实例可以发送事件给其他类型,前提是接收事件的实例要根发送者订阅这个事件。实现  先来定义要使用到的接口package observertype( Event struct{ Data int64 } Observer interface{ OnNotif...

2018-03-17 12:45:15 1395 2

原创 【寒江雪】Go实现备忘录

Memento Pattern  备忘录模式保存一个对象的状态,在需要的时候将其恢复。  该模式在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。  很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有”后悔药”可吃。实现  我们以...

2018-03-17 00:55:53 548

原创 【寒江雪】Go实现中介者模式

Mediator Pattern  中介者模式定义一个中介对象来封装系列对象之间的交互。各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变它们之间的交互。实现  说起中介,就想到买房。package mediatorimport ( "fmt" "gopkg.in/mgo.v2/bson")type Mediator interf...

2018-03-15 21:00:21 708

原创 【寒江雪】Go实现命令模式

Command Pattern  命令模式将命令包裹在对象中,并传给调用对象。调用对象寻找处理该命令的合适对象,并把该命令传给合适的对象,该对象执行命令。例子  举一个例子,在go里边调用C语言的代码,来监听键盘的输入,并调用与输入绑定的函数。  定义事件码和事件结构。const ( EVENT_CODE_KEY = iota)type EventCode...

2018-03-14 17:26:39 1092

原创 【寒江雪】Go实现责任链模式

Chain of Responsibility Pattern  责任链模式为请求创建了一个接收者对象的链。处理请求的对象是一系列链条,或者一个集合。每个处理节点都保存有其他处理节点的引用。接收到请求的时候,会判断该请求是否需要自己处理,处理完毕传给下一个处理节点,有点像流水线作业。例子  让我举一个复杂一点的例子。我就不用链条的形式来写了,我用一个map来保存处理器的引用。 ...

2018-03-14 00:07:06 2130

原创 【寒江雪】Go实现代理模式

Proxy Pattern  代理模式使得一个对象可以给另一个对象提供访问控制。截取所有访问。实现  代理模式可以使用在很多地方,例如网络连接,内存中大的对象,一个文件,或者其他消耗大的对象,或者是不可能被复制的对象。下面是一个简单的例子。package proxyimport ( "fmt" "sync")type IObject inter...

2018-03-13 18:16:51 959

原创 【寒江雪】Go实现享元模式

Flyweight Pattern  享元模式使用共享物件,来尽可能多地减少内存使用量以及共享给尽可能多的相似组件。  它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。实现  我们举个例子:游戏中的角色都有基础属性游戏中的角色都会穿上装备装备是不同的单基础...

2018-03-13 16:06:44 588

原创 【寒江雪】Go实现外观模式

Facade Pattern   外观模式其实就是把复杂的东西给封装,由统一的接口进行操作。这样可以简化用户的使用。例子  如果要开一家饭馆,一个饭馆分为采购的,管仓库的,切菜的,炒菜的,吃菜的。  而采购的,管仓库的,切菜的,炒菜的,是厨房。吃菜的,是客户。客户并不希望知道厨房工作的细节,只希望告诉厨房自己想吃什么就行了,他不想告诉厨房要去买什么菜,怎么切,怎么炒。而巧的是,...

2018-03-13 14:03:16 306

原创 【寒江雪】Go实现装饰者模式

Decorator Pattern  装饰着模式可以在需要扩展某个类的时候,动态地修改而不需要在内部添加代码,也可以防止类爆炸。   装饰者模式可以提供了灵活地扩展方案.实现  实现一个日志的自定义功能.package decoratorimport ( "time" "fmt")type LogDecorate interface { ...

2018-03-13 00:58:53 742

原创 【寒江雪】Go实现组合模式

Composite Pattern  组合模式是以树形结构来组织组件完成某个功能。当根节点的某个方法被调用时,会遍历树结构,调用相应的方法。不过具体如何设计是因人而异的。   它突出的是整体和部分的关系。实现  组合模式的结构中有两种类型,一种是分支节点,它包含了子节点列表,可以往里边添加和删除节点。另一种是叶子节点,叶子节点没有子节点。这两种节点都实现了同一个接口:Compo...

2018-03-12 20:55:48 585

原创 【寒江雪】Go实现桥接模式

Bridge Pattern  Bridge Pattern说的是,当一个系统中,包含一个组件,该组件是可变的,该系统是可变的。这个时候就需要一个桥连接抽象的系统和抽象的组件。  如果该系统包含多个其他的组件,这些组件都是可变的时候,也需要在该系统和这些组件之间架桥。  如果该系统包含的某个组件所包含的组件,是可变的,那么递归地重复上述过程。  也就是说,在桥接模式中存在两个抽象,...

2018-03-12 00:34:20 730

原创 【寒江雪】Go实现单例模式

Singleton Pattern  单例模式限制了一个类型只有一个对象。实现单例定义package singletontype singleton map[string]stringvar ( once sync.Once instance singleton)func New() singleton { once.Do(fun...

2018-03-10 19:07:44 823

原创 【寒江雪】Go实现对象池模式

Object Pool Pattern  对象池模式是一种创建型模式,根据需求来预测将要使用的对象,提前创建并保存在内存中。实现对象池定义package poolimport ( "fmt" "strconv")type Object struct{}func (Object)Do(index int){ fmt.Println...

2018-03-10 16:08:20 887

基于go语言写的链式堆

做毕业设计的时候,用go语言写的链式堆结构。增删的效率都达到了O(logn),还没有实现增加一个节点的权重以及减少一个节点的权重的功能。

2018-08-08

goquery爬虫示例

压缩包内包含两个go文件,主要用于抓取豆瓣上2018年最新的英剧和美剧(修改参数)。主要演示goquery的使用。

2018-07-17

游戏编程精粹5

游戏编程精粹5.(GAME.Programming.Gems.5).(美).Kim.Pallister.扫描版.pdf 《游戏编程精粹5》是著名技术丛书“游戏编程精粹”系列书的第5卷,由全球60多位优秀游戏开发精英撰写的文章汇集而成。书中每篇文章都针对游戏编辑中的某一特定问题给出解决方案,并提供实用算法和源代码。全书由7章组成,包括通用编程、数学、人工智能、物理、图形图像、音频以及网络和多人游戏,覆盖了当前游戏开发中的所有关键技术领域。《游戏编程精粹5》附光盘一张,提供书中所有的源程序和演示程序。

2018-07-17

算法导论(第三版)

字体清晰不模糊,看起来舒服。 算法导论 第三版 中文版 清晰 PDF,全书共8部分35章节,内容涵盖基础知识、排序和顺序统计量、数据结构、高级设计和分析技术、高级数据结构、图算法、算法问题选编、以及数学基础知识。非常实用的参考书和工程实践手册。此外,其他资源也已经上传,全部免费,欢迎大家下载! 第3版的主要变化 1、新增了van Emde Boas树和多线程算法,并且将矩阵基础移至附录。 2、修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。 3、移除两章很少讲授的内容:二项堆和排序网络。 4、修订了动态规划和贪心算法相关内容。 5、流网络相关材料现在基于边上的全部流。 6、由于关于矩阵基础和Strassen算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。 7、修改了对Knuth-Morris-Pratt字符串匹配算法的讨论。 8、新增100道练习和28道思考题,还更新并补充了参考文献。

2018-07-17

基于mgo写的mgo小工具

基于mgo写的小工具。直接在config里配置,导入包的时候要导入boot包并执行init函数连接数据库,连接成功会在global包里得到全局session,每次需要数据库的操作的时候,使用global.NewDataStore()函数即可获得一个数据存储结构,它由全局session复制而来,记得在使用结束后关闭(close)。Userdefine包由用户根据自身情况定义结构体和查询函数。

2018-02-11

游戏网络通讯组件(服务端学习版)

游戏网络通讯组件,供学习使用

2017-07-19

空空如也

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

TA关注的人

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