发新话题
打印

[原创] 物体运动中的三个数学问题。。

本主题由 紫光山人 于 2007-12-31 09:02 解除高亮

物体运动中的三个数学问题。。

赛车类游戏中,什么最贵。运行速度!如何快速的对用户的操作做出反应,并且实时的表现在用户的屏幕上是我们一直追求的!一下是我们使用的一些小的提速技术,别看简单,可以大大提高游戏速度~~
1,为提高计算速度,采用定点小数计算的方法。CPU与编译器无法处理定点数,他们把他作为整数来参与运算。要知道整数的运算是毫不费力的!但是在处理两个定点数相乘的时候需要一些小小的处理!即乘出来的结果应该适当的调小(比如右移~~)右移位数等于小数点所在位数~~
定点数与整数相乘不用处理,可是当他与整数相加或者相除时问题又一次出现了,不过只要把整数放大问题就解决了~~
小的负定点数与正数相乘时使用负数判断:
if(value<0)
value=-(((-value)*a)>8);
else
value=(value*a)>8;
2,三角函数的运算坚决不用math.c里的,因为运算时间真够长的!可以自建一张精度足够(游戏中精度要求不是很高)的三角函数表,自己做一个宏来进行查表工作:
#define _SIN32(a) (sincos32[(a)&0xff])  //表中有256个项
#define _COS32(a) (sincos32[((a)&0xff+64)])
3,计算中的所有根号分之一问题使用
float InvSqrt(float x)
{
float xhalf = 0.5f*x;
int i = *(int*)&x;
i = 0x5f375a86- (i>>1);
x = *(float*)&i;
x = x*(1.5f-xhalf*x*x);
return x;
}
来计算。。。。

[ 本帖最后由 ericfocus 于 2007-12-19 22:00 编辑 ]
本帖最近评分记录
  • 紫光山人 威望 +3 鼓励原创,,, 2007-12-19 22:04

TOP

感谢楼主对本版块的支持
Perfection is impossible, but pursuance is necessary!

TOP

版主客气客气~~

TOP

楼上的是liubin?

TOP

yep~~

TOP

我楼上是猪~
“客官您里边请”

TOP

发新话题
本功能由奇虎问答实现

相关主题

标题 作者 最后发表
给何院士、方学者、张教授之人免费启蒙 shihan139 2006-12-23
点击阅读更多关于的相关帖子  更多相关主题