|
|
发表于 2005-4-5 22:06:00
|
显示全部楼层
Re:菜鸟向大虾们求助,欢迎大虾们指点,3Q......
.............对不起哦,本来回帖时就该写点代码的,失职失职!
无奈今天生物节律全部最低点,头都晕了,呵呵,不入流的借口!
现在马上补上代码!
还是先说说理论吧!要不我自己也晕了!那我就说一个任意角度的模型!
先努力回想一下屏幕坐标系!左上为0,向右下延展!显然是个90度的坐标系!
我们要考虑方向问题,就是360度的,根据原有坐标系平移,我们最容易得到一个
x轴正方向朝右,y轴正方向向下的二维坐标系!这显然和数学上不符,可是这种
只需要平移的坐标系是最不容易出错的,不习惯的话,将y轴乘 -1就好了!
我们要解决的就是一个方向问题!所有的向量都被简化成一个从坐标原点向坐标的射线!
但是向量表示的方向是2维化的,我们需要一个一维化的方向来和我们的图标序列对应起来!
这靠向量本身是无法作到的,我们需要一个对照向量A,以我们的方向向量和A的夹角来描述这个一维化方向!选某个轴作为对照向量吧!这样就能偷懒了,会简化掉很多计算!
再来总结一下,我们要解决一个方向问题,将移动方向转化成一个一维数据,然后将他和图标序列对应,只要用 目的坐标 - 现在坐标 = 预计偏移量
或者用 现在坐标 - 上次坐标 = 偏移量 ,这完全取决于你的移动细节处理方式!
这个偏移量,就是我们在新坐标系中的移动方向,我们的二维向量(如果你要乘-1换坐标系,就现在)
然后找个对应的向量,就(1,0)吧,这个最简单,可以偷很多懒!
然后就用偏移量的 y/x 好了,关键问题都解决了!
还是再解释一下,偏移量的y,就是偏移坐标到对照向量的投影长度,就是我们所求角度的对边,x是邻边,y/x是正切,用反正切函数求出角度!
如果x<0,就将角度结果+180,如果结果小于0,就将角度结果+360
我们会得到以x轴正方向(右)为零,顺时针增加的从0-360度的角度值,如果你只需要8方向,除以45!
|
|