Archive

Archive for the ‘程序/算法’ Category

Kinect Demo for Grandpa SDK

June 24th, 2011 4 comments

微软刚发布了Kinect for Windows SDK,玩了两天,捣鼓出一个Demo

这一版SDK貌似只支持全身骨架识别,所以还不太适合pc游戏,因为要求的距离太远,还得站着玩,屏幕都看不清了

期待面部表情和手势识别的官方支持

Categories: 程序/算法 Tags: , , ,

Ragdoll Demo for Grandpa SDK

May 17th, 2011 2 comments

应用了开源的tokamak物理引擎,如果换成别的物理引擎应该也不会有太大差别。调整参数花了一些时间,例如每个部位的尺寸大小,质量,关节方向,角度限制等等。比较麻烦的是躯干,因为其他的rigid body比如胳膊,腿什么的都是和骨骼一一对应的,但是躯干上一般会有好几节脊椎。目前只用一整个rigid body表示躯干,所以一旦进入ragdoll状态,后背的弯曲程度就不能再改变了,否则肩关节看起来就会“脱臼”。

ragdoll还是需要一个好用的编辑器才能大规模应用。

Categories: 程序/算法 Tags: , ,

Grandpa SDK 0.81 发布

May 11th, 2011 No comments

下载Grandpa SDK 0.81 for Windows

访问Grandpa主页

主要修改:

  • 添加通用样条曲线采样器,支持float, Vector2, Vector3, Vector4, Quaternion等数据类型的样条插值
  • 完善DemoCamera类,支持左手系或右手系坐标,支持z轴向上或y向上
  • 添加摄像机动画演示工程CameraDemo
  • 整理完善数学库

Categories: 程序/算法 Tags: , ,

北京车牌摇号的概率计算

March 25th, 2011 No comments

根据“北京小客车指标调控管理信息系统”,也就是著名的北京缓解拥堵(或者北京还将拥堵)网站上公布的数据,11年1月至3月实际获得参与摇号资格的人数人别为11714页,18268页和24847页(每页16人),之所以只能精确到“页”是因为这个系统只告诉我们有多少页,我们只能一页一页翻到最后,看到最后一页有多少人才知道一共确切有多少人,我想这么干大概会耗尽我的鼠标的点击次数寿命,所以放弃了尝试的念头。

不过没关系,我们都用页来计算好了,也不需要太精确。前两个月中签的都是1100页,有理由相信后面每个月也都是这个数字。有意思的是2月和3月新增的参与摇号人数分别是18268-11714=6554和24847-18268=6579,这两个数字相差只有0.38%,看来非常符合等差数列的特点(如果不是有意控制人数的话),也就是说可以认为每月新增的摇号人数是固定的。

代码大概是这样的:

 

 

 

 

 

Read more…

Categories: 程序/算法 Tags:

Grandpa SDK 0.8发布

March 20th, 2011 No comments

下载Grandpa SDK 0.8 for Windows

访问Grandpa主页

主要修改:

  • 添加Viewer(模型查看器)工程
  • cpu蒙皮效率提升约35%
  • Vector4现在派生于Vector3,Vector3派生于Vector2
  • 支持动画随模型一起加载( 默认为第一次播放时加载)
  • 支持attachment模型和主体模型动画同步
  • 提高Xml加载效率
  • 加入DemoCamera类,替换原来的DXUTCamera
  • IModel接口分解为IPartFunctions,IAnimationFunctions和ILodFunctions

 

Categories: 程序/算法 Tags: , ,

zpack:一个简单的文件打包格式

January 18th, 2011 5 comments

最近实现了一个简单的文件打包格式

一向很喜欢简单高效的东西,所以非必要的加密,压缩功能一概欠奉。反正也开源了,用户很容易自行添加。

文件以文件名的hash作为检索,为了防止hash冲突的情况,除了用来建立hash table的主hash以外,索引表里还另外保存了两个用不同算法算出来的hash值。这样一来,读取包内文件时并不需要原始的文件名信息,只要根据输入的文件名算出来的3个hash值都和hash table里保存的相应值一致,就基本可以认定是用户所需要的。当然,对于32bit的hash来说冲突的情况实际上很少,而计算hash也有一定开销(虽然和磁盘io相比基本可以忽略),如果包内文件又很少,可以只比较两个,甚至一个hash值。 Read more…

Categories: 程序/算法 Tags:

D3D9的Pixel和Texel(续)

December 13th, 2010 No comments

前一篇只说了屏幕坐标和纹理坐标一一对应,也就是说没有缩放的情况。实际上有时候会需要把图素进行缩放后渲染,举个例子,把3×3像素的纹理(注意,不是整张纹理3×3,而是取一张纹理上3×3大小的一部分)渲染成屏幕上的4×4像素大小,如下图。和以前一样,红色的线框代表纹理像素的边界,灰色线框代表屏幕像素的边界,由于纹理被放大了,所以只有在图素边界处二者才是重合的。

这里有个不容易觉察到的问题,估计已经让很多程序员抓狂过,也就是放大后的图素的边界像素上会多出一些来历不明的颜色,放大倍数越大就越明显。实际上,这是采样到边界以外的纹理像素了。

Read more…

Categories: 程序/算法 Tags: ,

如何实现一个STL的allocator(内存分配器)

December 12th, 2010 1 comment

注意,这里只是讲如何实现一个“能用的 ”allocator,而不是如何实现一个很高级很牛的allocator。当然,你可以回头自己把它变的很高级很牛。

这里假设你已经知道STL的allocator是做什么用的,如果不知道的话随便打开一个STL容器的代码看一看也能很容易猜到。

话说如果我们只想要一个能工作allocator,那就直接使用STL自带的默认实现好了,但是万一想要自己定制一个,你可能会不知道如何下手,而且你又不想去翻阅c++标准文档,也不想去啃如天书般的STL源码,那就走这条捷径——照抄下面的代码,不需要问为什么。

Read more…

Categories: 程序/算法 Tags: