摘要: 原文请查看:http://www.ibaiyang.org/2013/05/20/introduced-a-3d-geometric-interpolation-algorithm/这原本是我 毕业设计 所做的事,但是看到如此的神奇,打算来介绍一下它,你会看到如此清晰,简单的逻辑思维如何来解决实际问题的。我深深的被这些算法折服。维基百科解释说,插值(interpolation)是一种利用已知离散的数据集产生新的数据集的方法,一般有能通过 曲线拟合 和 回归分析等方法实现,最长见的莫过于 线性插值。那3D几何插值是怎么回事呢?以上图片的最左,最右一列分别是源网格,目标网格,那么3D插值的目的就是 阅读全文
posted @ 2013-05-24 15:46 把酒泯恩仇 阅读(1769) 评论(9) 推荐(0) 编辑
摘要: 看过非常多的不靠谱suffix tree介绍后,本文是我在网上发现至今最好的一篇,通过三个规则讲述了整棵后缀树的构建过程,图形结合,非常容易理解,并且本文尊重原作者Ukkonen的论文术语,清楚的讲解了出现在suffix tree中的每一个概念,花时3个小时翻译之,共勉,部分有修改和抛弃。正文如下:接下来我将通过一个简单的字符串(不包含重复的字符)来试着分析Ukkonen算法,接着来讲述完整的算法框架。首先,一点简单的事前描述1. 我们构建的是一个简单的类似搜索字典类(search trie)结构,所以存在一个根节点(root node)。树的边(edges)指向一个新的节点,直到叶节点。2. 阅读全文
posted @ 2013-01-06 18:40 把酒泯恩仇 阅读(3999) 评论(0) 推荐(1) 编辑
摘要: 原文查看:http://www.ibaiyang.org/2013/01/04/python-decorator-introduction/本文章的代码没有高亮,请查看原文,格式比较好。本篇文章将介绍python中的decorator,中文翻译为 装饰器 魔法。在这篇文章中我们将熟悉decorator使用的基本方式和基本使用例子,并利用decorator来实现一个高级的例子—缓存系统(cache system)。Decorator已某种方式可以简化编码量,并增加了代码的可读性,这也是为何python中引入了 装饰器 魔法。我们可以看看如下例子:def foo(self):passfoo = c 阅读全文
posted @ 2013-01-05 10:57 把酒泯恩仇 阅读(2317) 评论(2) 推荐(1) 编辑
摘要: 原文查看http://www.ibaiyang.org/2012/12/27/a-opengl-like-implementatio/学过openGL人知道,openGL状态机的设计着实令人印象深刻。每一种状态都会一直持续影响后面物体的绘制,直到改变此状态。openGL中维护了二套矩阵,模式视图矩阵,投影矩阵,这二套矩阵完成了所有的从三维到二维的几何变化,包括旋转,缩放,平移和投影。同时openGL还维护了二个栈,一个存储模式视图矩阵,一个存储投影矩阵。千万不要小看这个栈的设计,我们可以举一个例子。 draw_object(1) rotate(1) translate(1) pu... 阅读全文
posted @ 2012-12-27 22:05 把酒泯恩仇 阅读(1034) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.ibaiyang.org/2012/08/03/parsing-expression-by-precedence-climbing/摘自Eli Bendersky’s website就此问题,我之前讨论过使用递归下降解析器(recursive descent parsers),特别是当一门语言有多级运算优先级时。有很多方法可以解决这个问题。在维基百科上的一篇文章提到了三种算法:Shunting Yard, top-down operator precedence (TDOP) and 优先爬山(precedence climbing)。今天的主题就是讲解一下第三 阅读全文
posted @ 2012-12-12 21:47 把酒泯恩仇 阅读(1847) 评论(0) 推荐(3) 编辑
摘要: 原文:http://www.ibaiyang.org/2011/11/24/encoding/BIG ENDIAN AND LITTLE ENDIANBig Endian和Little Endian涉及到了数据的存储格式。它本身是由于CPU的设计不同导致的。对于一个长度的字符来说,二者毫无差别,主要是在有理数的表示有差别而已。例如,读写整数时,计算机从文件读入的数据是分别按地址从低到高存储在内存中,而将数据从内存写入文件时,也是从文件地址地位到高位。例如:整数7 = 0×00000111如果你的电脑的CPU属于Big Endian,那么数据在内存的存储如下:内存地址0×40 阅读全文
posted @ 2012-12-12 18:32 把酒泯恩仇 阅读(2556) 评论(0) 推荐(1) 编辑
摘要: 话说二战的时候,美国轰炸机每次执行任务,除了满载着威力强大的炸弹以外,还常常要装配一台计算机,飞机飞行方向和投弹的抛物线的计算都离不开这台机器。可是世界上第一台电子计算机在二战结束后才发明,轰炸机上当时携带着的“计算机”其实就是个装有一大堆齿轮的大箱子,这台笨重的箱子计算能力还远远比不上今天的手里拿着的casio计算器,用起来也就比算盘好一些吧。这些机械计算机设计者最为担心的问题是里面的一大堆齿轮零件哪天不高兴掉下来一两个,整台机器或许就玩不转了,飞机迷失航向,炸弹误扔到自己的阵地上就要出大麻烦了。在轰炸机飞来飞去的时候,不断的晃动会不会让机器失灵成了很多人心头的忧虑。可这家伙真上了飞机,人们 阅读全文
posted @ 2012-12-10 12:36 把酒泯恩仇 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 这一个月是最苦逼的日子,因为在深圳先进研究院的最后实习的日子里,我和我导师在为了siggraph奋斗着,也希望能在本科阶段发上一篇论文,哈哈。空闲之余,来分享一下研究过程中用到的一个树的算法吧。本算法的目的非常简单,就是剔除树的中间节点,保留分支节点。如下图要求:转化如下以上图是由http://www.graphviz.org/doc/info/lang.html生成附上代码:view plaincopy to clipboardprint?defreduced_graph(subtree,v,graph):n=graph[subtree]iflen(n)==0:v[subtree]=[]re 阅读全文
posted @ 2012-12-09 20:22 把酒泯恩仇 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 感觉在面试中,总是被问及转换类型问题,所以在大面试来临之前,复习一下,其实之前也没有怎么区分,因为实际中,特别是编一个小程序,我不是经常在用。以下是C++的四种转换机制:view plaincopy to clipboardprint?const_cast<T>(expression)dynamic_cast<T>(expression)reinterpret_cast<T>(expression)static_cast<T>(expression)const_cast通常被用来将对象的常量性质转除。它也是唯一有此功能的C++-Style转型操作 阅读全文
posted @ 2012-12-08 21:45 把酒泯恩仇 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 很久很久以前,那还是大一下,苦逼的学习了openGL,也算踏进了图形学领域吧,如今在中科院的工作也和图形学的相关,一切的偶然加上本人也喜欢图形学的缘故,在这条路走的还那么算回事,基本的知识差不多还是掌握了,也对openGL比较熟悉。可是以后的工作却和图形学一点都不搭边,本来也确实想放弃在这个领域浪费时间了,可是不知道为何又舍不得,所以,心里也暗自说,不管怎样,还是坚持一点点的学习图形学吧,正如乔布斯所说,你学习的任何东西,抑或改变你的一身,原话貌似不是这样啦。结合项目要求,研究了三维点的拾取,其实老早就想写一篇类似的文章了,但是比较偷懒,没有做,也不想发一篇很水的文章。接吻在充满三维物体的游戏 阅读全文
posted @ 2012-12-07 21:39 把酒泯恩仇 阅读(1908) 评论(0) 推荐(0) 编辑