
算法相关
文章平均质量分 92
pizi0475
这个作者很懒,什么都没留下…
展开
-
Dijkstra 算法
<br />经典算法研究系列:二、Dijkstra 算法初探<br /> <br /> July 二零一一年一月<br />======================<br />本文主要参考:算法导论 第二版、维基百科。<br />写的不好之处,还望见谅。<br />本经典算法研究系列文章,永久勘误,永久更新、永久维护。<br /> July、二零一一年二月十日更新。<br />------------------------------------<br />一、A*搜索算法<br />三、dy转载 2011-03-28 08:13:00 · 1819 阅读 · 0 评论 -
动态规划算法
<br />动态规划算法<br /> <br />作者 July 二零一零年十二月三十一日<br />本文参考:微软面试100题系列V0.1版第19、56题、算法导论、维基百科。<br /> <br />ok,咱们先来了解下什么是动态规划算法。 <br />动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解<br />(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。<br />简单地说,问题能够分解成子问题来解决。<br /> <br />动态规划算法转载 2011-03-28 08:16:00 · 1501 阅读 · 0 评论 -
A*搜索算法
经典算法研究系列:一、A*搜索算法 作者:July、二零一一年一月----------------------------------博主说明:1、本经典算法研究系列,此系列文章写的不够好之处,还望见谅。2、本经典算法研究系列,系我参考资料,一篇一篇原创所作,转载必须注明作者本人July及出处。3、本经典算法研究系列,精益求精,不断优化,永久更新,永久勘误。欢迎,各位,与我一同学习探讨,交流研究。有误之处,不吝指正。--------------------------------转载 2011-03-28 08:10:00 · 1818 阅读 · 0 评论 -
BFS和DFS优先搜索算法
<br />4、教你通透彻底理解:BFS和DFS优先搜索算法<br /> <br /> 作者:July 二零一一年一月一日<br />---------------------------------<br />本人参考:算法导论 <br />本人声明:个人原创,转载请注明出处。<br />ok,开始。<br />翻遍网上,关于此类BFS和DFS算法的文章,很多。但,都说不出个所以然来。<br />读完此文,我想,<br />你对图的广度优先搜索和深度优先搜索定会有个通通透透,彻彻底底的认识。<br />转载 2011-03-28 08:17:00 · 2016 阅读 · 0 评论 -
红黑树算法的实现与剖析
红黑树算法的层层剖析与逐步实现----作者 July 二零一零年十二月三十一日本文主要参考:算法导论第二版本文主要代码:参考算法导论。本文图片来源:个人手工画成、算法导论原书。推荐阅读:Leo J. Guibas 和 Robert Sedgewick 于1978年写的关于红黑树的一篇论文。--------------------------------------------------------------红黑树系列,四篇文章于今日已经完成。[二零一一年一月九转载 2011-03-28 08:19:00 · 1521 阅读 · 0 评论 -
从头到尾彻底理解KMP算法
<br />6、教你从头到尾彻底理解KMP算法<br /> <br />作者: July 、 saturnma 时间; 二零一一年一月一日<br />-----------------------<br />本文参考:数据结构(c语言版) 李云清等编著、算法导论<br />作者声明:个人July 对此24个经典算法系列,享有版权,转载请注明出处。<br />引言:<br />在文本编辑中,我们经常要在一段文本中某个特定的位置找出 某个特定的字符或模式。<br />由此,便产生了字符串的匹配问题。<转载 2011-03-28 08:21:00 · 1643 阅读 · 0 评论 -
动态规划,Dijkstra算法,A*算法的比较
<br />动态规划,Dijkstra算法,A*算法的框架是相同的,不同点仅在于“推进点的选取”和“算法终止条件”。<br />一,动态规划:(参见http://blog.youkuaiyun.com/iwantnon/archive/2009/07/07/4329269.aspx )<br />推进点选取:<br />(1),在粗犷的动态规划算法中:<br />根本不进行选择,而是对所有已存在节点全部推进一遍。这可能造成如下两点浪费:<br />[1],重复推进:对某点v已经作了推进,而下一次在其valu值没有发生更转载 2011-03-28 08:22:00 · 3153 阅读 · 0 评论 -
二叉树的存储结构
<br /> 二叉树是非线性结构,即每个数据结点至多只有一个前驱,但可以有多个后继。它可采用顺序存储结构和链式存储结构。 <br />1.顺序存储结构 <br /> 二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点编号,缺点是有可能对存储空间造成极大的浪费,在最坏的情况下,一个深度为k且只有k个结点的右单支树需要2k-1转载 2011-03-30 10:10:00 · 2571 阅读 · 0 评论 -
二叉树
二叉树是一棵节点都不能有多于两个儿子的树。这一章,主要学习二叉树的种类和应用。一.实现typedef struct TreeNode *PrtToNode;typedef struct PrtToNode Tree;struct TreeNode{ ElementType Element; SearchTree Left; SearchTree Right;};二.特点每个结点最多有两棵子树二叉树是有次序的,其次序不能随意颠倒 二叉树三.转载 2011-03-30 10:14:00 · 1859 阅读 · 0 评论 -
修改ETM源码,增加了平滑、澡波等地形编辑算法
<br />在etm的ETTerrainManager.cpp中增加以下函数即可,目前算法还很简单,以后可能会在丰富一些<br />//----------------------------------------------------------------------------- <br />// name: 推平 <br />// Desc: <br />//---------------------------------------------------------------------转载 2011-05-25 15:41:00 · 1830 阅读 · 0 评论 -
能穿透alphatest纹理的shadowmap
这几天加入了shadowmap影子,着实费了点脑子看起来很简单的,可这东西牵扯到很多东西,场景要成像的对象都要统一纳入深度图里面渲染一遍,加了很多渲染方面的组织代码,静态模型,骨骼模型,等等,都要影子,渲染的方法还略有区别,真是很繁琐,眼看就要成功了,可烦心事又来了,灯光没办法穿转载 2011-07-23 10:17:16 · 1965 阅读 · 0 评论 -
ShadowMap渲染阴影方法及问题
ShadowMap基于的原理:SM算法是一个2-pass绘制算法,第一pass从光源视点绘制场景,生成SM纹理,第2pass从视点视图按常规方法绘制场景 从光源的位置观察场景,这时候我们看不到的地方就是该有阴影的地方,于是可以使用比较像素到光源距离的方法来确定某个像素是否在阴影之转载 2011-07-23 10:38:54 · 4158 阅读 · 0 评论 -
Shadow Map阴影贴图技术之探
这两天勉勉强强把一个shadowmap的demo做出来了。参考资料多,苦头可不少。Shadow Map技术是目前与Shadow Volume技术并行的传统阴影渲染技术,而且在游戏领域可谓占很大优势。本篇是第一辑。——ZwqXin.comShadow Map的原理很简单,但是实现起转载 2011-07-23 10:52:24 · 16577 阅读 · 0 评论 -
Ogre Depth Shadow Mapping
Table of contentsBeginners guide to Depth Shadow Mapping Defining the shaders Defining the materials Source code modification Beginners guid转载 2011-07-23 11:10:39 · 2826 阅读 · 0 评论 -
Shadow Mapping
1、什么是Shadow Maping? Shadow Mapping是由Lance Williams于1978年在一篇"Casting curved shadows on curved surfaces"的文章中提出的,这篇文章是Shadow Map技术之根源。其实原理转载 2011-07-24 11:32:50 · 2361 阅读 · 0 评论 -
Direct3D轮回:游戏场景之河流
名人名言:每个人在他生活中都经历过不幸和痛苦。有些人在苦难中只想到自己,他就悲观消极发出绝望的哀号;有些人在苦难中还想到别人,想到集体,想到祖先和子孙,想到祖国和全人类,他就得到乐观和自信。——洗星海 继天空、陆地之后,用于构建游戏场景的另一个必须的元素莫过于河流~本节我们基于特转载 2011-07-25 13:35:18 · 3014 阅读 · 0 评论 -
使用shadowmap实现软阴影效果
在实时阴影渲染中shadowmap是一种颇具潜力的算法,相比shadow volume算法具有实现简单、适应范围广的优点,而且shadowmap是基于图像的算法,在实现软阴影上具有先天优势,下面我们就来看看如何用shadowmap实现软阴影效果。通常的shadowmap算法产生的转载 2011-07-23 10:21:58 · 4175 阅读 · 0 评论 -
判断点是否处于多边形内的三种方法
1. 叉乘判别法(只适用于凸多边形)想 象一个凸多边形,其每一个边都将整个2D屏幕划分成为左右两边,连接每一边的第一个端点和要测试的点得到一个矢量v,将两个2维矢量扩展成3维的,然后将 该边与v叉乘,判断结果3维矢量中Z分量的符号是否发生变化,进而推导出点是否处于凸多边形内外。这转载 2011-07-18 17:21:19 · 2155 阅读 · 0 评论 -
Packing Lightmaps (整合光照贴图)
Pop Quiz: You have 765,618 lightmaps for a scene and very few of them have power of 2 dimensions, what do you do? If your answer was to rescale them and call CreateTexture 765,618 times please slap yo转载 2011-11-24 16:33:25 · 2004 阅读 · 0 评论 -
常用运动轨迹的算式
闲着无聊,于是也来发一个教程吧……新手向的,关于常用运动轨迹的算式……这里只讨论算式,不讨论多人化、排泄以及应用……1.直线运动:单位沿ang度的方向移动速度为(b/触发器周期)(最基础的运动方式)算法1事件时间 - 每当游戏逝去0.03秒条件动作设置 point1 = (从((马甲)的位置)开始,距离为b,方向为ang度的位移处)单位 - 设置(马转载 2012-08-18 07:48:24 · 10027 阅读 · 3 评论 -
辐射度算法的CUDA实现
1. 简介辐射度算法是一种经典的全局光照算法,它可以解决光线跟踪等直接照明方法中所不能表现的真实世界中的照明现象问题。虽然渲染的结果表现力强,但是问题之一就是算法的耗费较大,由于其原理就是对各个多边形面片进行着色,而且常常需要较多的迭代次数才能达到比较理想的效果,因此算法原理虽然比较简单,但效率就成为一个重要的瓶颈。 2. 辐射度算法原理辐射度算法的原理就是模拟真实世界中的光照原理转载 2012-09-02 05:10:33 · 1549 阅读 · 0 评论 -
全局光照中辐射度(Radiosity)算法的CUDA实现
http://blog.youkuaiyun.com/BugRunner/article/details/5366692 1. 简介辐射度算法是一种经典的全局光照算法,它可以解决光线跟踪等直接照明方法中所不能表现的真实世界中的照明现象问题。虽然渲染的结果表现力强,但是问题之一就是算法的耗费较大,由于其原理就是对各个多边形面片进行着色,而且常常需要较多的迭代次数才能达到比较理想的效果,因此转载 2012-09-02 04:51:51 · 3024 阅读 · 0 评论 -
辐射度算法
Hugo Elias 何咏 译声明:本文原文由Hugo Elias撰写,由何咏翻译。本文仅供学习交流之用。任何人未经本人同意不得私自转载,任何人不得将本文用于任何商业活动。 简介:这篇文章是一个经典的辐射度算法的教程,详细的讲述了如何通过辐射度算法为静态场景计算光照贴图。这也是大多数游戏所采用的技术。现在很多的论文和书籍都讨论了如何在实时渲染中应用光照贴图来产生逼真的光转载 2012-09-02 05:43:00 · 7371 阅读 · 0 评论 -
Photoshop图层混合模式的计算公式
Photoshop中,图层混合模式和图层不透明度都是被广泛应用的功能之一。这篇PS教程提供了各种图层混合模式以及图层不透明度的数学计算公式,了解这些公式,可以更好的掌握这些功能。 文章来源于网络,向作者致敬。 注释:1.混合模式的数学计算公式,另外还介绍了不透明度。2.这些公式仅适用于RGB图像,对于Lab颜色图像而转载 2012-11-30 07:20:34 · 3909 阅读 · 0 评论 -
ps图层模式详解带计算公式
正常模式是Photoshop默认的模式。这种模式的特点是混合色图层(当前图层)的不透明度及填充都是100%的时候,我们看不到基色图层(背景图层)。我们需要降低混合色图层的不透明度才能显示基色图层,这时候混合色就会与基色混合形成结果色。结果色跟混合色的不透明度有很多关系,她们的换算关系:结果色=混合色 * 混合色不透明度值 +基色 * (100% -混合色不透明度值)。溶解模转载 2012-11-30 07:22:57 · 2870 阅读 · 0 评论 -
图层的混合模式全解析-Photoshop照片处理叠图基础教程
文/设计:刘京燕(兰草青幽) 图片提供:上海冰点影像坊对于很多Photoshop用户来说,图层混合的叠图模式并不陌生,在使用过程中,为了找到最佳的表现效果,我们会不自然的将图层混合模式的选项逐个尝试,随之会反复琢磨得到与之相符的理想效果。那么,本篇将详尽介绍Photoshop图层混合模式中图层互叠所产生的效果原理。常见的图层互叠有两个图层或者两个以上的图层,一般来讲,两个图层的互叠比较好控制而转载 2012-11-30 07:29:39 · 2607 阅读 · 0 评论 -
Photoshop PS图层混合模式详解
Photoshop 7.0的图层混合选项中增添了“线性加深”模式、“线性减淡”模式、“亮光”模式、“线性光”模式和“点光”模式,这样在制作一些效果时更为方便。 这里我们便以中文版Photoshop 7.0为例来介绍一下Photoshop “图层混合模式”,除了新增的少许混合模式,其他混合模式和低版本的Photoshop是一样的。我们将同时给出中英文关键词,以方便使用英文版Photoshop转载 2012-11-30 07:30:55 · 2186 阅读 · 0 评论 -
Hermite 与 Bezier 曲线的绘制
发信人: william@cis_nctu (何陋居主), 信区: programming 标 题: [转载] Hermite 与 Bezier 曲线的绘制 发信站: 交大资科_BBS (May 25 00:32:41 1995) 转信站: cis_nctu转载 2013-01-15 17:07:51 · 6038 阅读 · 0 评论 -
游戏程序开发OCCLUSION CULLING算法
对于通用场景来说我以前介绍的区间扫描线Z缓冲器算法可以剔除大部分的不可见物体,但是在基于heightmap的大规模地形场景下会发现作用不是太大,区间扫描线Z缓冲器算法需要在场景中手工指定occluder,occluder必须为规则物体,而在地形场景中这种occluder非常少,也就是场景中的建筑物之类的物体。实际上地形场景中最适合作为occluder的是连绵起伏的丘转载 2013-10-20 12:25:44 · 2609 阅读 · 0 评论 -
[HSR算法-Occlusion Culling]
作者:Siney现在的HSR算法基本上可以分为四种:backface culling、frustum culling、portal culling、occlusion culling。它们的作用分别如下:backface culling用于剔除mesh背面的triangle,frustum culling用于剔除屏幕之外的物体,portal culling用于剔除不能通过portal看到的转载 2013-10-20 12:27:17 · 4647 阅读 · 0 评论 -
基于实时3D引擎计算角度的基本方法
最近给单位做几何算法时,突然发现单位以前做的图形核心算法,和我以前做过的算法。真的很不一样。不过如果我以前没做过计算角度的话,那么我现在肯定要花很多时间去研究几何算法。而现在是轻车熟路了。细想一下,计算角度要算一个算法领域的大门槛,自己如果不能很好的理解和运用角度知识,那么随便什么图形引擎都是用不好的。如果你算过角度。那么我提醒一点,我指的是图形上的角度标准定义,和自己的角度标准定义,转载 2013-10-20 12:52:57 · 1698 阅读 · 0 评论 -
一种高效的基于大规模地形场景的OCCLUSION CULLING算法
来源:中国IT实验室收集整理 作者:CC 时间:2011-3-23 10:08:17 隐藏面剔除算法的出现是基于以下的现实,在游戏场景中你不必每帧都将所有的物体渲染到屏幕上,它的作用主要有两个:一个是减少GPU的屏幕填充率,另一个是减少CPU和GPU的传输带宽。根据当前的硬件现状GPU的填充率已经不存在任何问题,而现在唯一的限制位于转载 2013-10-20 12:21:01 · 1855 阅读 · 0 评论 -
逐象素的Spot Light的实现
先得到象素到光源的向量, 与光源方向, 求夹角, 然后在平滑的插值作为强度了返回,CG代码如下:float InSpot(float3 LightPos, float3 LightVec, float3 PixelPos){ float3 vec1 = normalize(PixelPos - LightPos); float cosangle = dot(转载 2013-10-20 12:41:43 · 2029 阅读 · 0 评论 -
关于实时 Ambient Occlusion 一点猜想
实现 Ambient Occlusion 一般需要预计算,如果物体间的相对位置发生了改变,就需要重新计算,其实这样并不是一种真正意义上的realtime.因为PRT需要生成一张ambient map所以过程十分缓慢,不能移动到渲染循环中进行。我想如果要进行实时的 Ambient Occlusion, 就只能进行顶点级别的处理,然后把所计算出来的Ambient值写入顶点。转载 2013-10-20 12:42:51 · 1876 阅读 · 0 评论 -
游戏开发中的经典算法集锦
算法是程序设计的精髓,程序设计的实质就是构造解决问题的算法,将其解释为计算机语言。 算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。 一个算法应该具有以下五个重要的特征: 有穷性: 一个算法必须保证执行有限步之后结束;转载 2013-10-20 12:22:24 · 2199 阅读 · 0 评论 -
[贝塞尔曲线(Bezier Curves) 2d实现]
如有转载,请注明:http://www.azure.com.cn/回忆下绘制直线的过程, 它是个从起点运动到终点的过程,这里我们就需要用到线性插值算法.线性插值的伪代码如下:Linear Interpolation procedure draw_line(point1, point2)loop t from 0 to 1 in ste转载 2013-10-20 12:29:48 · 2906 阅读 · 0 评论 -
游戏引擎中的各种剔除算法
在引擎中最影响渲染效率的是场景管理,剔除算法又是其中的最主要的内容。这里简单总结一下各种流行的遮挡剔除的算法,只是为了我的游戏引擎而做的一点功课。1。bsp。Binary space partition。优势在于这种算法的数据结构十分简单(二叉树),而且在效率方面非常好,因为强调了离线计算(即场景保存为bsp的数据格式,在渲染前就加载生成bsp树)。比较麻烦的是它的实现非常的复杂,而且用dx来转载 2013-10-22 20:35:40 · 2483 阅读 · 0 评论 -
max的贴图烘焙技术简易流程
贴图烘焙技术也叫Render To Textures,简单地说就是一种把max光照信息渲染成贴图的方式,而后把这个烘焙后的贴图再贴回到场景中去的技术。这样的话光照信息变成了贴图,不需要CPU再去费时的计算了,只要算普通的贴图就可以了,所以速度极快。由于在烘焙前需要对场景进行渲染,所以贴图烘焙技术对于静帧来讲意义不大,这种技术主要应用于游戏和建筑漫游动画里面,这种技术实现了我们把费时的光能传递计算应转载 2013-11-02 18:54:42 · 11182 阅读 · 0 评论 -
光照贴图生成中的精度问题
http://blog.youkuaiyun.com/bugrunner/article/details/5400411 使用全局光照贴图对场景进行渲染,首先就需要对场景进行光照贴图的生成,同时计算出场景中各个多边形的顶点所对应的纹理坐标,然后再对多边形列表的光照贴图进行合并,并进行纹理坐标的重新定位,这样就可以生成整个场景的一张光照贴图,从而实现带有光照效果的高效率渲染。理论上,在渲染时各个转载 2012-09-02 05:14:24 · 1504 阅读 · 0 评论 -
Lamport面包店算法
Lamport面包店算法是解决多个线程并发访问一个共享的单用户资源的互斥问题的算法。 由Leslie Lamport发明[1]。目录 [隐藏] 1 算法1.1 类比1.2 进入临界区1.3 非临界区2 算法实现2.1 定义2.2 伪代码2.3 讨论3 参见4 外部链接5 参考文献算法[编辑]类比[编辑]Lam转载 2013-12-29 08:13:25 · 6606 阅读 · 0 评论