摘要:左递归的消除 消除回朔 提取公因式 LL分析条件 一个文法含有下列形式的产生式之一时:1)A→Aβ,A∈VN,β∈V*2)A→Bβ,B→Aα,A、B∈VN,α、β∈V*则称该文法是左递归的。然而,一个文法是左递归时,不能采取自顶向下分析法。消除左递归方法有:a)把直接左递归改写为右递归:设有文法产生式:A→Aβ|γ。其中β非空,γ不以A打头。可写为:A→γA'A'→βA'|ε一般情况下,假定关于A的产生式是:A→Aα1| Aα2|…|Aαm|β1|β2|…|βn其中,αi(1≤i≤m)均不为空,βj(1≤j≤n)均不以A打头。则消除直接左递归后改写为:A→ β1A 阅读全文
[置顶]常用字符串
2013-08-13 01:44 by 北漂男孩, 215 阅读, 0 推荐, 收藏, 编辑
摘要:#pragma comment(lib, "dxgi.lib")#pragma comment(lib, "d3d11.lib")#pragma comment(lib, "d3dx11.lib")#pragma comment(lib, "d3dx10.lib")#pragma comment(lib, "Effects11.lib")#pragma comment(lib, "Effects11d.lib") 阅读全文
[置顶]字符串
2013-08-13 00:07 by 北漂男孩, 226 阅读, 0 推荐, 收藏, 编辑
摘要:字符串逆序 // 字符串逆序void Reverse(char*a, int n){ int left =0; int right = n -1; while (left key为字符,value为字符个数。代码实现如下(只是实现,具体可以再优化):#include #include #include using namespace std;void fill(string &s, map &c2n, vector &permutations, int len);void getPermutations(string s, vector &permutation 阅读全文
[置顶]game programs
2013-08-11 18:11 by 北漂男孩, 733 阅读, 0 推荐, 收藏, 编辑
摘要:矩阵 对于XMMATRIX的初始化,可以有多种方法,一种方法是传4个XMVECTOR参数,每个XMVECTOR对应矩阵的一行;第二种方法是直接传递16个浮点数,代表整个矩阵的内容;第三种方法是用一个FLOAT型的数组,代表整个矩阵的内容。当然,这三种方法都有点麻烦,不过在实际中,自己来手动初始化矩阵的地方也不多,了解下其初始化方法即可。其次,XMMATRIX重载了()操作符,用来访问矩阵中的成员,用法跟正常矩阵访问完全一样,即传递两个参数(row, col)即可。 XMMATRIX也重载了*和*=操作符,用途很明显,用来进行矩阵的乘积。 在函数定义中,类型为XMMATRIX的形参必须用CXMM 阅读全文
[置顶]搜索目录
2013-08-11 10:34 by 北漂男孩, 265 阅读, 0 推荐, 收藏, 编辑
摘要:1、使用Camera的几个步骤 2、C++中的异常安全性 3、字符串逆序 4、数组 5、简单几何体的绘制 6、内存对齐 HLSL和c++内存对齐异同 7、this指针 存放在特定寄存器??? 阅读全文
jixia
2013-12-24 19:01 by 北漂男孩, 195 阅读, 0 推荐, 收藏, 编辑
摘要:http://www.cgjoy.com/thread-39199-1-1.html 阅读全文
插入排序
2013-09-16 20:42 by 北漂男孩, 242 阅读, 0 推荐, 收藏, 编辑
摘要:最近在复习排序算法,发现排序算法真的博大精深!我乐此不疲的在追求算法,发现算法就在我身边!以下是大熊对排序算法的理解,无私的与大家分享了! 先不讲理论,举个非常实际的例子! 不知道看这篇文章的哥子会不会打牌?……不会打的话,那你还是不要学算法了,牌里面那么高深的博弈论就这样被你忽视了!开玩笑。……我们每起一张牌的时候,都会把这张牌插入适合他的位置,比如你手上有3,5,6 三张牌,现在起了一张4,很明显你会把他插到3和5之间。这个动作就是插入排序!恭喜你你已经学会了插入排序!我们来做个实际的例子,先看一组散乱的数字,就像洗散了的牌:46 59 22 86 70 48 11 9 12 88... 阅读全文
数组循环移动
2013-09-16 16:23 by 北漂男孩, 331 阅读, 0 推荐, 收藏, 编辑
摘要:今天,又发现了一个经典算法!不得不感叹,人类真的是无比聪明的生物,在无限感慨的同时,将这个算法发表出来!与大家一起分享,还有无论你是学web开发还是java或者C++编程的,编程算法都是走向高级程序员的必经之路。就像我学PHP一样。 在编程中,我们常遇到一种数组整体移位的问题,比如:把abcdefg123456右移6位,变成123456abcdefg; 题目原型是这样,给你一个字符串数组a[999],字符串长度n,移动位数k,求移位之后的数组。通常我们会这样处理:以下代码用C++实现。/*****楚河***********************************我是分界线帅哥*... 阅读全文
java数组、List、Set、Map
2013-09-16 15:04 by 北漂男孩, 981 阅读, 0 推荐, 收藏, 编辑
摘要:数组是Java语言内置的类型,除此之外,Java有多种保存对象引用的方式。Java类库提供了一套相当完整的容器类,使用这些类的方法可以保存和操纵对象。下面分别进行讨论,在研究Java容器类之前,先了解一下Java数组的基本功能和特性。1. 数组的基本特性数组与其它种类的容器(List/Set/Map)之间的区别在于效率、确定的类型和保存基本类型数据的能力。数组是一种高效的存储和随机访问对象引用序列的方式,使用数组可以快速的访问数组中的元素。但是当创建一个数组对象(注意和对象数组的区别)后,数组的大小也就固定了,当数组空间不足的时候就再创建一个新的数组,把旧的数组中所有的引用复制到新的数组中。J 阅读全文
四叉树和八叉树概述
2013-09-14 23:59 by 北漂男孩, 3172 阅读, 0 推荐, 收藏, 编辑
摘要:四叉树和八叉树概述传统计算机图形应用--特别是的应用的需要一个实时,交互的方法来现实--通过处理一个发送到显卡的数据的最有效的图形数据子集的方法来决定图形数据的显示,而不是传送全部的数据,四叉树,八叉树,Bsp树,背面剔出,pvs集合很多其他方法都是针对这个目的而提出的。流行的计算机图形卡近些年在处理能力和处理方法上程指数增长,当前的状态揭示出很多时候应该更好的和快速的找到一个好的数据集把它们送到显卡里,而不是把精力放在努力的找到一个最好的数据集。这样的数据集是一个近似的最好的数据集并且能经常发现它都有十分有效的算法,因此手头上的任务因此就变成了回顾已经存在的技术和算法并且尝试找到最快的选择, 阅读全文
图形学2
2013-09-14 22:33 by 北漂男孩, 860 阅读, 0 推荐, 收藏, 编辑
摘要:像素(pixel或pel,是picture element的简写):每个屏幕点称为一个像素。像素信息从应用程序转换并放入帧缓冲区的过程称之为扫描转换过程。走样:光栅扫描的图形显示器是画点设备,绘制图形时只能用尽可能靠近图形的像素点集来近似表示图形,因而会产生失真。这种失真称为走样。程序2-1 OpenGL绘图矩形的简单例子#include void Initial(void){glClearColor(1.0f, 1.0f, 1.0f, 1.0f); //设置窗口背景颜色为白色glMatrixMode(GL_PROJECTION); //设置投影参数gluOrtho2D(0.... 阅读全文
图形学笔记整理
2013-09-14 20:27 by 北漂男孩, 623 阅读, 0 推荐, 收藏, 编辑
摘要:如何计算有N个顶点(P1,P2,P3,……Pn)定义的平面多边形的面积?多边形面积的计算公式如下:设有n个点(x[1],y[1])(x[2],y[2]),...(x[n],y[n])围成一个没有边相交的多边形,则其围成的闭合多边形面积|S|为:S=∑y[i]*(x[i+1]-x[i-1]),其中i=1,2,...n,且当i与j除以n的余数相同的时候,x[i]=x[j],y[i]=y[j]。该公式用于凸凹多边形均可。如何判别一个点Q是否落在该多边形内部?交点计数检验法:从点Q作一射线至无穷远X=X0+u(u≥0)Y=Y0求射线与多边形边的交点个数。若交点个数为奇数,则点在多边形内;否则,点在多边 阅读全文
Terrain size
2013-08-21 11:02 by 北漂男孩, 202 阅读, 0 推荐, 收藏, 编辑
摘要:Terrain sizeThis is the resulting size of the level with the eeeqqquuuaaatttiiiooonnn ooofff (((HHHeeeiiiggghhhtttmmmaaappp RRReeesssooollluuutttiiiooonnn))) xxx (((MMMeeettteeerrrsss PPPeeerrrunit). Here are some examples of the results you will see (m = meter s):(128x128) x 4m = 512x512m(512x512) 阅读全文
常量引用
2013-08-20 17:11 by 北漂男孩, 616 阅读, 0 推荐, 收藏, 编辑
摘要:#include void disp(const int &a){ coutvoid disp(const int &a){ cout<<a<<endl;}void main(){ int x=1; disp(x);} 总结:如果要求实参随形参的改变而改变,则用一般的引用,如果实参随形参的改变而改变则使用常量引用,类的复制函数正是利用了这一点实现对象之间的复制。 main(){ int x=10; int *p;p=&x; 把x的地址赋值给指针p,使p指向x printf("%d",*p); 、、10}分析:可以看出通过指针访 阅读全文
渲染过程
2013-08-19 12:18 by 北漂男孩, 203 阅读, 0 推荐, 收藏, 编辑
摘要:1\大概就是我们把顶点和贴图数据写到内存中去,然后调用D3D或者OpenGL的API,API的开发商(D3D的是微软,OpenGL是谁我……突然想不起来了)要求显卡的开发商在驱动程序中支持这组API,然后数据被扔到显存里面,控制指令也通过AGP或者PCI-E总线被扔给显卡,显卡把这些数据拼在一起然后通过硬件的渲染管道流水线算出最终要推到VGA口上的数据,显示到屏幕上。 关键在于3D渲染可以通过软件实现,不过那样负担被交给了CPU,而硬件渲染的时间则仅仅是实现功能所需要的门电路的时间,是很猛的优化。 真正意义上的“渲染”不是D3D或者OpenGL的任务,而是显卡硬件的任务。 阅读全文