0

Comments

PHP 的常数还是很有趣的。作为一个脚本语言,常数在 PHP 中成为了一种十分灵活的东西。没有细究 PHP 的文档,自己做了个实验来看看 PHP 到底时怎么处理常数的。实验代码如下:

1
2
3
4
5
6
7
8
function a($t) {
  define('T', $t);
  echo T;
}
 
a('a');
echo T;
a('b');

结果发现,输出的三个字符都是 a,而且没有报错。这说明,无论常数在哪里声明,都是全局有效的,而且定义后不可再被更改了(废话……不然还叫常数)。从定义发生的时机看,确实是第一次调用函数 a() 的时候被定义的,而后再次调用函数 a() 时没有被修改也没有报错。还真是有趣的说~
Read the rest of this entry »

< , >
0

Comments

在开源界,总是有很多不可思议的东西,在没有虚拟化技术的机子中的 Windows 下跑 Linux 可以以 Native 的速度似乎很早就已经成功了。使用的是一个叫做 coLinux 的程序,它将整个 Linux 系统当做 Windows 的一个进程,其高得惊人的执行效率伴随着是相当小的资源占用。
Read the rest of this entry »

< ,,, >
0

Comments

Ubuntu 安装完要让他好用,最重要的莫过于配置了,要把 Ubuntu 配置成一个好用的系统虽说不难,不过也并不简单。

开机的第一个感觉,就是 9.04 的启动速度确实有一定提升,而且整个系统的效率感觉也相当不错,不过这个应该很大程度是由于新装系统东西少的缘故吧……不知道像原来的系统用那么久以后能不能保持。
Read the rest of this entry »

< , >
0

Comments

虽然 Ubuntu 9.04 在4月23日就出来了,而且当天我就用 BT 下载了 9.04 的 x86 desktop 的 iso,不过我还是没有去装的。主要是考虑到上次安装 8.10 的时候诡异的不能关机的 bug,说明 Ubuntu 的新版本总是问题多多的。虽然说这个不好,不过事实是这样,说句实话,我觉得 Ubuntu 的一个正式版大概相当于 Windows 的一个 RC 什么的,而 LTS 还比较像样一点。算起来,其实时间也差不多……

闲话不说了,还是说说我的 Ubuntu 9.04 吧。

前几天用 eMule 下载了 Ubuntu 9.04 的 DVD,信息中心的老师很大方的给了我一张 DVD+R 的盘并提供刻录机。说实话,这是我第一次刻录 DVD,在 Windows 下用 Nero 刻录的,刻录过程相当顺利,比我第一次刻 CDR 还顺利,几分钟就好了。我很早就在校内上的状态说5月再装 9.04。不过显然我是那种耐不住性子的人,不过一言既出驷马难追,所以还是等到今天——5月的第一天,就迫不及待的安装了。

昨晚花了很长时间把主目录下的资料备份到新买的移动硬盘里。我这次完全重装的很大原因也是因为第一次装不懂,结果就分了一个区挂载在根文件夹,这是非常不好的,也因此我不得不找一个移动硬盘来备份。高达 7GB 多的资料拷了近两个小时!昨晚关机的时候,我就在想:这个系统见不到明天的太阳了。
Read the rest of this entry »

< >
4

Comments

原来一直以为只有自己的机子安装了 LaTeX、dvips 等等这些软件才能显示 LaTeX 公式。

今天上网查找了一下,发现不是这样的,原来比较基本的 LAMP 空间也可以这样了,这完全得益于一个叫做 mimeTeX 的开源软件。虽然这个软件生成的没有 LaTeX 生成的漂亮,不过还是比 Word 的公式编辑器生成的漂亮,最重要的是可以在网站上使用!
Read the rest of this entry »

< , >
1

Comments

myballs在对光照和面的消除以及碰撞检测进行了些许研究后,改进的 3D Demo 再次出炉。

这次的立体感更强了,因为加入了光照去掉了混合并加上了深度测试。不过开始的时候,因为去掉了混合,不能搞半透明了,本来想直接判断视角然后不绘制立方体相应的面,结果后来无意中发现一个叫做 glCullFace 的东西可以直接去掉某一个平面的一个面(变成透明),于是就把它施在了那个立方体上。(当时参考的资料找不到了……)这样就有了这一个效果:你总是看到你本来看不到的面。

接着就是加光照。不用 CullFace 的情况下,光照没问题,可是一开就变得十分黯淡,不懂得为什么……开始觉得是不是这两个会冲突,但想想又觉得这两个没道理冲突啊……后来终于想到了——法线,因为法线是为外面的面设置的(朝向立方体外),我把所有法线掉一个头,瞬间效果就出来了……

球什么的还按照原来的方法加好。这次的挑战其实主要是那个碰撞检测。我想了很久,觉得要几乎真实的模拟只有通过大规模的计算进行逐个测试,于是我就这么做了……但事实证明,这样做虽然效果看起来不差,不过由于有碰撞和没碰撞时计算量差异可能非常大,以致瞬间造成“卡”的感觉,同时,我发现所有球停下来后,会叠在一起,而不会像真实那样下面的滚开让上面的下来。不过后面这个就现在的模型来说也没什么办法,因为本来就不是模拟力的,只模拟了个加速度……至于前面那个,我暂时也没想出什么好办法解决,或许可以用一些更简陋的方法来计算,以求更高的速度?

在 3D 中速度才是王道啊……

这次还加入了即时显示 fps 的东西,试用了 Google 的 DroidSans 开源字体,体积上还是相当不错的~我基本上是设置了每 0.15s 更新一次显示的 fps。

最后,因为希望整个程序结构清晰一些,把原来的一大个文件分成了好多文件,所以这次必须打包了……还因此顺便又尝试写了个比较大的 Makefile……

最最后是下载地址:myballs.rar (100.45 KB)

< >
0

Comments

test21花了几天完全自己写了个小小的 Demo,本来想把球与球之间的碰撞也写出来的,结果写的太 bug 了,就暂时算了,先发这个了……

由于这个主要在学校完成,所以就只生成了 for Windows 的版本。同时,为了稍微推广一下,还写了个前端……

编译好的版本:test2.exe
前端:test2_ui.exe
把这两个放在一个目录就可以用了……

这一次基本没再参考什么教程,不过等到我发觉我再也写不下去的时候,我才发现其实我要学的东西还很多。写这个看来要有相当好的数学和物理基础,特别是计算几何和运动学(我物理中最差的恰是运动学……)。这次的程序加入了许多控制键,模拟重力效果个人是比较满意的,显示效果等到以后学了再做得更好。

额外的,这个程序会在命令行中输出帧数,本来是用以测试一些优化是否有效的,这下也可以小试一下显卡。
Read the rest of this entry »

< >
0

Comments

screenshot-opengl今天回家本想在我的 Ubuntu 上玩玩 OpenGL,结果花了一个下午,终于研究出些东西了……

在 NeHe 的源代码中似乎有 Linux 的,不过一个是用 glut、一个是用 SDL、一个是用 GLX,原本看到 glut 是 OpenGL 官方的一个夸平台的简单窗口系统,结果发现全屏不能……于是就找到了 GLFW 这个东西,据说比较简单,不过还是研究了一个下午。

下面说一下研究成果吧,首先,想要用 g++ 编译用 GLFW 写的程序,一定要加这些编译参数: -lglfw -lGL -lGLU -lXrandr,特别是最后一个,是其官方参考中没有的!这个是我查了许多资料,然后瞎猜猜到的……再说说头文件,这次不需要引用3个库了,只有一个 #include <GL/glfw.h> 就可以了,似乎把其他的库自动引用了。另外就是,画完要用 glfwSwapBuffers(); 刷新,不然不仅什么都不会显示,而且还会死机……除此之外,还要注意那个键盘的按键,不要想当然的和 Windows 下拿去类比,根据研究发现,键盘事件交出的 key 最大可以达到 318,而且特殊键都会以这些“大值”返回,所以一定要申请好内存……

这次主要参考了:
GLFW Reference
OpenGL Tutorials – Basics
以及 NeHe 的 OpenGL 教程。
Read the rest of this entry »

< ,, >
0

Comments

test2今天又玩了玩,感觉到 OpenGL 实在太强大了!我也第一次遭到了买好显卡的重要意义:可以写 OpenGL 的程序!右边是效果图,有半透明、点光源效果。其实动起来会比较炫一点。

参考了下面教程(其实主要是抄):
OpenGL教程之纹理映射
OpenGL教程之纹理滤波方式
OpenGL教程之Alpha混合

除了教程里的功能,我还增加了按空格停止和按回车复位两个无聊功能……

整个程序也已经由上一篇的将近400行增加到了超过500行。不过和新的的优美效果比起来,这点代码似乎不算什么~
Read the rest of this entry »

< , >
0

Comments

test1今天突然心血来潮想看看 OpenGL。找了个 OpenGL 的教程,看起来不错。不过这个教程着实吓了我一跳,第一篇的代码就超过了300行!先来一个效果图~

我参考的教程有:
OpenGL教程之新手上路
OpenGL教程之第一个多边形
OpenGL教程之着色
OpenGL教程之旋转
OpenGL教程之向3D进军
Read the rest of this entry »

< , >