物体运动中的三个数学问题。。
赛车类游戏中,什么最贵。运行速度!如何快速的对用户的操作做出反应,并且实时的表现在用户的屏幕上是我们一直追求的!一下是我们使用的一些小的提速技术,别看简单,可以大大提高游戏速度~~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;
}
来计算。。。。
[[i] 本帖最后由 ericfocus 于 2007-12-19 22:00 编辑 [/i]] 感谢楼主对本版块的支持 版主客气客气~~ 楼上的是liubin? yep~~ 我楼上是猪~
页:
[1]