Friday, December 26, 2008
纪念毛泽东诞辰115周年
纪念毛泽东诞辰115周年
12月26日是毛泽东同志诞辰115周年。毛泽东在领导中国革命和建设的漫长征程中,以旁人难以比肩的远见卓识,运筹帷幄,高瞻明断,创造了一个又一个令人难以置信的奇迹,为中国革命从胜利走向胜利,为中国社会摆脱半殖民地半封建的悲惨屈辱命运开辟了道路。
Wednesday, December 24, 2008
Tuesday, December 23, 2008
在android平台下载和编译源代码
android的源代码下载的官方网站是:http://source.android.com
源代码的下载说明页面是:http://source.android.com/download
其实英文好的朋友大可不必看偶在此罗嗦,直接follow google的说明就行了,一切都很简单。
下面就把android platform在slackware 12.0上面的下载、编译过程汇总一下:
(1)当然了,需要安装slackware 12.0或者更高版本的linux发行版,直接选择“full”模式,完全安装。
(2)确认环境是否达到了要求,你可以在linux下面建立一个账户,然后在账户的目录下面查看是否满足如下的要求:
a)git (1.5.4或者以上版本,slackware 12.0本身就是1.5.5的)
b)python (2.4或者以上的版本,slackware 12.0本身应该是2.5的)
c)jdk5.0以上的版本,这个slackware 12.0没有,slackware只有java的运行环境而已,于是登录:
http://java.sun.com/javase/downloads
下载一个即可,我下载的是jdk5.0 update 10的版本,理论上应该越高越好吧。
然后,就用chmod a+x jdkxxxxxxx.bin,然后运行,安装到你的机器上即可。
(注:当然了,也可以直接su成root把安装包弄到/usr/local目录下面去)
然后有一个网络方面的设置需要注意,运行如下程序:
/usr/local/jdk-xxxxxxx/bin/ControlPanel
选择在network里面选择setting,然后把连接类型设置为Direct Connection。
(3)创建工作目录,进入工作目录,创建bin目录:
mkdir ~/works
mkdir ~/works/android_dev
cd ~/works/android_dev
mkdir bin
(4)下载安装repo版本管理工具
curl http://android.git.kernel.org/repo > ~/works/android_dev/bin/repo
cd bin
chmod a+x repo
(5)开始准备下载android
cd ~/works/android_dev
./bin/repo init -u git://android.git.kernel.org/platform/manifest.git
通常情况下会出现error提示(如果是以前没有创建过repo账户的话),这个不要紧,忽略掉它好了。
(6)配置repo账户
git config --global user.email "[email=xxxxx@xxxxxxx]xxxxx@xxxxxxx[/email]"
git config --global user.name "xxxxxx"
(7)开始下载android platform的源代码
repo sync
这个操作会持续一段时间,看网速了;google上面说的源代码占用2.1G的硬盘空间,但似乎没有那么大,只有900M左右。
(8)好了,现在准备一下环境变量
最好在.bashrc或者在/etc/profile文件中添加环境变量定义:
export ANDROID_JAVA_HOME=$JAVA_HOME
需要logout,再login一下,然后用:
echo $ANDROID_JAVA_HOME
命令来确认一下环境变量是否已经生效
(9)修改一个小“bug”
理论上在ubuntu上面可以直接开始编译了,但是在slackware上似乎还需要手工修改一个编译脚本上的bug,找到如下文件:
~/works/android_dev/external/sqlite/dist/Android.mk
找到下面这一行:
ifneq ($(strip $(have_readline)),)
LOCAL_LDLIBS += -lreadline
endif
这里只有一个-lreadline,对于slackware来说就不够了,编译的时候会出现 libreadline.so:undefinedreference 'PC'之类的错误。修正的方法很简单,就是直接在这一句的后面加上-lncurses,改正后应该是这个样子的:
LOCAL_LDLIBS += -lreadline -lncurses
好了,然后就可以开始放手编译了。
(10)编译
make
好了,然后就可以出去晃晃,喝杯咖啡了(足够你喝很多很多杯的咖啡)。
编译完毕以后,会发现在代码目录下多了一个目录:
~/works/android_dev/out
这就是生成的结果了,此时不要着急,需要先再设置一下环境变量方法同(8):
export ANDROID_PRODUCT_OUT=/home/wayne/works/android_dev/out/target/product/generic
设置完了以后,需要logout,再login一次才可以喔,更新环境变量。
(11)开始验证生成的结果
进入android_dev/out/host/bin/目录下,然后运行:
emulator --debug-init -skin QVGA-L [回车]
应该看到以下的画面(第一次开启的时候,应该还有一个向google反馈的一个对话框,按下确定即可):
Saturday, December 20, 2008
OpenGL中的坐标系统变换
OpenGL中从三维场景到屏幕图形要经历如下所示的变换过程:
模型坐标-〉世界坐标-〉观察坐标-〉投影坐标-〉设备坐标
其中四种坐标经常要在程序中用到:物体坐标(也叫模型坐标、局部坐标),世界坐标,眼坐标(
也叫观察坐标)和设备坐标.
物体坐标是以物体某一点为原点而建立的“世界坐标”,该坐标系仅对该物体适用,用来简化对物
体各部分坐标的描述。物体放到场景中时,各部分经历的坐标变换相同,相对位置不变,所以可视为一
个整体,与人类的思维习惯一致。
世界坐标是OpenGL中用来描述场景的坐标,Z+轴垂直屏幕向外,X+从左到右,Y+轴从下到上,是
右手笛卡尔坐标系统。我们用这个坐标系来描述物体及光源的位置。
非常重要:OpenGL中有一个坐标变换矩阵栈(ModelView),栈顶就是当前坐标变换矩阵,进入OpenGL管
道的每个坐标(齐次坐标)都会先乘上这个矩阵,结果才是对应点在场景中的世界坐标。OpenGL中的坐标
变换都是通过矩阵运算完成的,与图形学课本的描述完全一致。要注意的是变换中的矩阵乘法是左乘,
而矩阵乘法与算术乘法不同,不符合交换律(万一不明白去看矩阵代数书好了)。
将物体放到场景中也就是将物体平移到特定位置、旋转一定角度,这些操作就是坐标变换。
OpenGL中提供了glTranslate*/glRotate*/glScale*三条坐标变换命令,利用OpenGL的矩阵运算命令,
则可以实现任意复杂的坐标变换。
glTranslate*(x,y,z):平移,参数为各轴向的移动量。
glRotate(d,x,y,z):旋转,第一个参数为转动的度数,后三个参数表明是否绕该轴旋转。通常
x,y,z中只有一个为1,其余为0,用连续几条旋转命令完成复杂旋转。由于矩阵运算的左乘特点,旋转
命令的顺序与旋转动作的顺序正好相反。
眼坐标是以视点为原点,以视线的方向为Z+轴正方向的坐标系中的方向。OpenGL管道会将世界坐
标先变换到眼坐标,然后进行裁剪,只有在视线范围(视见体)之内的场景才会进入下一阶段的计算。
同样的,有投影变换矩阵栈(Projection),栈顶矩阵就是当前投影变换矩阵,负责将场景各坐标
变换到眼坐标,由所得到的结果是裁剪后的场景部分,称为裁剪坐标。前面提到过的视见体设定其实就
是在建立该矩阵。
OpenGL的重要功能之一就是将三维的世界坐标经过变换、投影等计算,最终算出它在显示设备上
对应的位置,这个位置就称为设备坐标。在屏幕、打印机等设备上的坐标是二维坐标。值得一提的是,
OpenGL可以只使用设备的一部分进行绘制,这个部分称为视区或视口(viewport)。投影得到的是视区内
的坐标(投影坐标),从投影坐标到设备坐标的计算过程就是设备变换了。
矩阵栈切换:glMatrixMode(GL_MODELVIEWING或GL_PROJECTION);本命令执行后参数所指矩阵栈就
成为当前矩阵栈,以后的矩阵栈操纵命令将作用于它。
矩阵栈操纵命令:
glPushMatrix(); 当前矩阵入栈,这时矩阵栈将栈顶值压入栈。
glPopMatrix(); 栈顶出栈,通常与上一条命令配合使用。
glLoadIdentity(); 将栈顶设为不变矩阵(就是对角线全为1其它为0的那个)。
glMultMatrix(M);将栈顶T设为M·T。
opengl中的坐标变换
坐标变换是OpenGL最基本功能之一,然而却不容易讲清楚,网上已有的教程好象都没有做到这一点。
其实弄懂坐标变换的关键是理解什么是“眼睛坐标系”(eye coordinate system) 和“目标坐标系”(object coordinate system),以及各个API函数使用的是哪套坐标:是“眼睛坐标”还是“目标坐标”。
所谓“眼睛坐标系”就是“全局坐标系”,可以这样设想:以窗口中心为原点,水平向右为+x轴,竖直向上为+y轴,垂直于屏幕指向我们为+z轴。长度单位这样来定:
窗口范围按此单位恰好是(-1,-1)-(1,1)。
所谓“目标坐标系”就是“局部坐标系”。在下面我们简称眼睛坐标系为ECS,目标
坐标系为OCS。点的“眼睛坐标”为EC, “目标坐标”为OC。
任何时候OpenGL都保存着一个当前的OCS,在初始条件下,OCS与ECS是重合的,但
我们可以对“目标坐标系”作各种变换: 平移、伸缩、旋转。经过这些变换之后, OCS与ECS不再重合。
非常重要的一点:glVertex3f所用的坐标是OC而不是EC。
为什么要这样设计API呢?因为我们一般习惯于在一个合适的局部坐标系中作图, 然后把它通过坐标变换放到合适的位置或者转到合适的角度。
比如我们要在(xc,yc)-(xc+dx,yc+dy)这样一个框子里画一条正弦曲线,我们更喜欢先在(0,0)-(1,1)范围内画这条曲线,然后把它先伸缩到(0,0)-(dx,dy)的范围, 再平移(xc,yc)。这个过程如果用ECS和OCS的观点来看,平移和伸缩的顺序正好反过来:
(1)开始时,调用glLoadIdentity(),OCS0与ECS重合
(2)调用glTranslatef(xc,yc,0),OCS0平移,变成OCS1
(3)调用glScalef(dx,dy,0),OCS1伸缩,变成OCS2
(4)调用glBegin(),glVertex3f(),glEnd(),在OCS2中作图
OpenGL坐标变换详解
三维观察原理类似于拍一张照片的过程。(类似于red book )
系列框图的左右对照来看,
照相的第一步是将照相机调整位置置于三角架上;
第二步是将物体调整位置放在相机的视野当中。实际上,相机和三维物体是相对位置,相机移动位置也可以理解为物体反向移动位置,因此这两步可以理解为一步,即调整三维物体和视点的位置,将世界坐标系下的物体变换到观察坐标系下。在计算机图形学中,定义模型矩阵(Modeling Matrix)实现了三维图形的几何变换,即平移、旋转和缩放。
第三步相机进行调焦以便看清楚物体,并按下快门将三维物体投影在二维胶片上;在计算机图形学中,定义相应的投影矩阵(ProjectionMatrix),进行投影变换,把三维物体从观察坐标系转换到投影坐标系中。
第四步是胶片的冲洗和裁剪。相应计算机图形学中,定义视口矩阵(ViewingMatrix),进行视口变换和裁剪,决定二维图象的大小。将物体从二维投影坐标系下转换到设备坐标系下。
这样,一个三维空间里的物体被投影到二维平面上了,也就能在二维的计算机屏幕上正确显示了。这样的过程
叫做三维观察流水线。
根据三维观察的过程,可以总结出三维变换流水线,
三维物体坐标的变换过程:
首先是模型坐标转换到世界坐标,
然后转换到观察坐标,
再到投影坐标,
再到设备坐标。
2008北京奥运会必备法语词汇
发展体育运动,增强人民体质 Développer les sports, fortifier la constitution physique du peuple
增进友好往来 Multiplier les contacts amicaux
加强友谊, 交流球艺 Renforcer l’amitié et confronter les techniques
互相学习, 交流经验 Apprendre les uns auprès des autres et confronter les experiences
奥林匹克运动会 Jeux olympiques
奥林匹克体育中心 stade central olympique
开幕式 cérémonie d’ouverture
入场式 cérémonie d’entrée
闭幕式 cérémonie de clôture
正式比赛 compétition officielle
预赛 matches de qualification ; préliminaires
比赛规程 règlements de compétition ; règle de jeu
比赛时间 durée du jeu
程序表 programme
报名 inscription
分组 répartition en groupes
弃权 se déclarer forfait
团体项目 épreuves par équipe
个人项目 épreuves individuelles
男子团体 épreuves par équipe masculine
女子团体 épreuves par équipe féminine
男子双打 double-messieurs
女子双打 double-dames
混合双打 double-mixte
男子单打 simple-messieurs
复赛、半决赛 demi-finale
决赛 finale
女子单打 simple-dames
前半场 première mi-temps
后半场 seconde mi-temps
暂停 temps mort
休息 repos
换边 changer de coté
犯规 faute ; infraction
国际奥委会 Le Comité International Olympique (CIO)
为奥运史增添了光辉的一章 Ajouter un chapitre splendide à l’histoire des Jeux Olympiques (JO)
中国的奥运梦终于实现了 Le rêve des JO des Chinois est enfin réalisé!
奥运村 Le Village olympique
我们的强项 Nos points forts
Friday, December 19, 2008
OpenGL 简介
OpenGL是个专业的3D程序接口,是一个功能强大,调用方便的底层3D图形库。OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。
OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。由于 OpenGL是3D图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD、3DS等 3D图形设计软件制作的DFX和3DS模型文件转换成OpenGL的顶点数组。
在OpenGL的基础上还有Open Inventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。其中,Open Inventor应用最为广泛。该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。
OpenGL的发展一直处于一种较为迟缓的态势,每次版本的提高新增的技术很少,大多只是对其中部分做出修改和完善。1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了Windows NT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用。1995年OpenGL的1.1版本面市,该版本比1.0的性能有许多提高,并加入了一些新的功能。其中包括改进打印机支持,在增强元文件中包含OpenGL的调用,顶点数组的新特性,提高顶点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等等。OpenGL 1.5又新增了“OpenGL Shading Language”,该语言是“OpenGL 2.0”的底核,用于着色对象、顶点着色以及片断着色技术的扩展功能。
OpenGL 2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3Dlabs。2.0版本首先要做的是与旧版本之间的完整兼容性,同时在顶点与像素及内存管理上与DirectX共同合作以维持均势。OpenGL 2.0将由OpenGL 1.3的现有功能加上与之完全兼容的新功能所组成(如图一)。借此可以对在ARB停滞不前时代各家推出的各种纠缠不清的扩展指令集做一次彻底的精简。此外,硬件可编程能力的实现也提供了一个更好的方法以整合现有的扩展指令。
目前,随着DirectX的不断发展和完善,OpenGL的优势逐渐丧失,至今虽然已有3Dlabs提倡开发的2.0版本面世,在其中加入了很多类似于DirectX中可编程单元的设计,但厂商的用户的认知程度并不高,未来的OpenGL发展前景迷茫。
Open GL现状
Open GL仍然是唯一能够取代微软对3D图形技术的完全控制的API。它仍然具有一定的生命力,但是Silicon Graphics已经不再以任何让微软不悦的方式推广Open GL,因而它存在较高的风险。游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用Open GL。因此,硬件开发商正在设法加强对它的支持。Direct3D目前还不能支持高端的图形设备和专业应用; Open GL在这些领域占据着统治地位。最后,开放源码社区(尤其是Mesa项目)一直致力于为任何类型的计算机(无论它们是否使用微软的操作系统)提供Open GL支持。
高级功能
OpenGL被设计为只有输出的,所以它只提供渲染功能。核心API没有窗口系统、音频、打印、键盘/鼠标或其它输入设备的概念。虽然这一开始看起来像是一种限制,但它允许进行渲染的代码完全独立于他运行的操作系统,允许跨平台开发。然而,有些整合于原生窗口系统的东西需要允许和宿主系统交互。这通过下列附加API实现:
* GLX - X11(包括透明的网络)
* WGL - Microsoft Windows
另外,GLUT库能够以可移植的方式提供基本的窗口功能。
Tuesday, December 9, 2008
Friday, December 5, 2008
一个80年生人的回忆
一个80年生人的回忆
晨风带来希望,就像阳光送来温暖。繁星带去陈迹,如同黑夜带走记忆。漠然的忙碌,混沌的思索,遮挡不住曾闪耀的光辉。
我们无比骄傲,我们完整的走过,由古老迈向现代。从幼稚成为经典,一个时代的变迁。我们背叛了生活,背叛了信仰,却无法背叛童年,无法背叛曾经的纯真,80年代是怀旧的一代,只因那日新月异,生机盎然,色彩缤纷的岁月。只因那曾经蔚蓝的天空
有时候 ,停下脚步,也是一种前进。
人生
人生吧,0岁出场,10岁快乐成长;20为情彷徨;30基本定向;40拼命打闯;50回头望望;60告老还乡;70搓搓麻将;80晒晒太阳; 90躺在床上;100挂在墙上...生的伟大,死得凄凉!能牵手的时候,请别只是肩并肩,能拥抱的时候,请别只是手牵手,能在一起的时候,请别轻易分开! 当大部分人都在关注你飞得高不高时,只有少部分人关心你飞得累不累--这就是友情,再忙也要照顾好自己,朋友虽不常联系却一直惦念!世界好友周快乐! 08新概念 一个中心:一切以健康为中心。 两个基本点: 遇事潇洒一点,看事糊涂一点。 三个忘记: 忘记年龄,忘记过去,忘记恩怨。四个拥有: 无论你有多弱或多强,一定要拥有真正爱你的人,拥有知心朋友,拥有向上的事业,拥有温暖的住所。 五个要: 要唱,要跳,要俏,要笑,要苗条。六个不能: 不能饿了才吃,不能渴了才喝,不能困了才睡,不能累了才歇,不能病了才检查,不能老了再后悔!太透彻了 !
Thursday, December 4, 2008
神經學測試
This is a REAL Neurological Test. ( 神經學測試) |
阿兹海默病(Alzheimer's disease,简称AD)又称老人痴呆症,全世界有2400万病患,是一种持续性神经功能障碍。疾病的成因未明,目前没有准确诊断和有效治疗的方法。阿兹海默病又称老年失智症,是失智症中最普遍的成因。最显著的早期症状为健忘,通常表现为逐渐增加的短期记忆缺失,而长期记忆则相对不受病情的影响。随着病情的加重,病人的语言能力,空间辨别能力,认知能力会逐步衰退。受AD影响的神经功能通常与大脑的额叶(frontal lobe)联系紧密,这反映了疾病的病理学过程。
阿兹海默病主要有以下两种类型:
* 家族性阿兹海默病(Familial AD; FAD):阿兹海默病中较罕见的类型。常染色体优性的门德尔法则的遗传规律、多发病于30至60岁之间。
* 阿兹海默老年痴呆症(Senile dementia with Alzheimer's type; SDAT):占阿兹海默病中的绝大多数。通常在老年期(60岁以上)发病。
Tuesday, December 2, 2008
电脑征婚
一位女子,开出征婚条件有两点
1.要帅
2.要有车
电脑去帮她搜寻 结果~~~~~~~象棋
这位女子,不服搜出的结果又输入
1.要有漂亮的房子
2.要有很多钱
电脑去帮她再次搜寻的结果~~~~~~~~~~~~~~~~~~~银行
此女子仍然不失望,继续输入条件
1要长得酷
2又要有安全感
结果搜出的结果是~~~~~~~~~~~~~~~~~~~~~~~~奥特曼
此女子仍然不失望,还继续输入条件
1.要帅
2.要有车
3.要有漂亮的房子
4.要有很多钱
5要长得酷
6又要有安全感
电脑去帮她再次搜寻的结果~~~~~~~奥特曼在银行里下象棋