游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3064|回复: 6

游戏开发关于数学知识大家帮我解释下这2个方法要表达

[复制链接]

19

主题

57

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
发表于 2011-8-27 01:37:00 | 显示全部楼层 |阅读模式
/**
**  Convert direction to heading.
**
**  @param delta_x  Delta X.
**  @param delta_y  Delta Y.
**
**  @return         Angle (0..255)
*/
int DirectionToHeading(int delta_x, int delta_y)
{
        //
        //  Check which quadrant.
        //
        if (delta_x > 0) {
                if (delta_y < 0) { // Quadrant 1?
                        return myatan((delta_x * 64) / -delta_y);
                }
                // Quadrant 2?
                return myatan((delta_y * 64) / delta_x) + 64;
        }
        if (delta_y>0) { // Quadrant 3?
                return myatan((delta_x * -64) / delta_y) + 64 * 2;
        }
        if (delta_x) { // Quadrant 4.
                return myatan((delta_y * -64) / -delta_x) + 64 * 3;
        }
        return 0;
}

myatan 方法如下

/**
**  Fast arc tangent function.
**
**  @param val  atan argument
**
**  @return     atan(val)
*/
static int myatan(int val)
{
        static int init;
        static unsigned char atan_table[2608];

        if (val >= 2608) {
                return 63;
        }
        if (!init) {
                for (; init < 2608; ++init) {
                        atan_table[init] =
                                (unsigned char)(atan((double)init / 64) * (64 * 4 / 6.2831853));
                }
        }

        return atan_table[val];
}

特别是第二个方法做什么用的!谢谢...

1

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2011-8-27 13:18:00 | 显示全部楼层

Re:游戏开发关于数学知识大家帮我解释下这2个方法要表达

查表法算arctan函数用的。。。函数里写得挺清楚啊。

19

主题

57

帖子

247

积分

中级会员

Rank: 3Rank: 3

积分
247
 楼主| 发表于 2011-8-27 13:27:00 | 显示全部楼层

Re: Re:游戏开发关于数学知识大家帮我解释下这2个方法要

??b我心: Re:游戏开发关于数学知识大家帮我解释下这2个方法要表达的意思..

查表法算arctan函数用的。。。函数里写得挺清楚啊。


他的作用是什么啊!

9

主题

75

帖子

112

积分

注册会员

Rank: 2

积分
112
发表于 2011-11-16 11:31:00 | 显示全部楼层

Re:游戏开发关于数学知识大家帮我解释下这2个方法要表达

啊尔括谈见起!!这都不懂啊。。。你初中老师要哭了

0

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2012-3-11 08:48:00 | 显示全部楼层

Re:游戏开发关于数学知识大家帮我解释下这2个方法要表达

Ps:我忽然也看不懂!!反三角我们就没有学得太深!!为我自己悲哀!!

0

主题

41

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2012-3-20 12:58:00 | 显示全部楼层

Re:游戏开发关于数学知识大家帮我解释下这2个方法要表达

顶一下~~~

15

主题

38

帖子

38

积分

注册会员

Rank: 2

积分
38
发表于 2012-3-20 21:26:00 | 显示全部楼层

Re:游戏开发关于数学知识大家帮我解释下这2个方法要表达

Fast arctan(val).....

作用就是快速求 acrtan

做了个表,查表求

if (!init) {
for (; init < 2608; ++init) {
atan_table[init] =
(unsigned char)(atan((double)init / 64) * (64 * 4 / 6.2831853));
}

初始化向量

return atan_table[val] 返回向量中对应索引的值

当val > 2068 角度 当作 arctan 当作 63/64处理

注意,调用的时候 角度要乘以64
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-9 15:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表