游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5035|回复: 9

VB查表三角函数,怎么做比较好??

[复制链接]

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2007-2-24 19:57:00 | 显示全部楼层 |阅读模式
如题 [em24] [em24] [em24]

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-2-24 20:27:00 | 显示全部楼层

Re:VB查表三角函数,怎么做比较好??

VB查表三角函数??什么东西??

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2007-2-24 20:28:00 | 显示全部楼层

Re: VB查表三角函数,怎么做比较好??

程序

sf_2007224202817.rar

1.46 KB, 下载次数:

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
 楼主| 发表于 2007-2-24 20:43:00 | 显示全部楼层

Re:VB查表三角函数,怎么做比较好??

就是预先计算出三角函数的值,到了游戏中要用到三角函数的时候就直接查表,不用再算了

不是楼上那种……

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-2-24 20:54:00 | 显示全部楼层

Re:VB查表三角函数,怎么做比较好??

根据需要精度计算输出到文件,使用时从文件读入数组。

187

主题

6490

帖子

6491

积分

论坛元老

团长

Rank: 8Rank: 8

积分
6491
发表于 2007-2-24 21:00:00 | 显示全部楼层

Re:VB查表三角函数,怎么做比较好??

精度要求低的可以在程序开始时计算然后存入数组,要是精度很高计算时间超过从文件读入的话还是从文件读入好。

怎么快怎么做,可以吗??

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
 楼主| 发表于 2007-2-24 21:08:00 | 显示全部楼层

Re:VB查表三角函数,怎么做比较好??

文件的话应该不必了,内存里还是放的下的,主要是想了解写数据怎么组织和怎样查表比较好一点……

29

主题

224

帖子

224

积分

中级会员

Rank: 3Rank: 3

积分
224
QQ
发表于 2007-2-24 22:30:00 | 显示全部楼层

Re:VB查表三角函数,怎么做比较好??

装数组里行不?应该不大

9

主题

688

帖子

688

积分

高级会员

Rank: 4

积分
688
发表于 2007-2-24 22:40:00 | 显示全部楼层

Re:VB查表三角函数,怎么做比较好??

数组加线性插值

21

主题

182

帖子

192

积分

注册会员

Rank: 2

积分
192
发表于 2007-2-25 16:18:00 | 显示全部楼层

Re:VB查表三角函数,怎么做比较好??

CLDC和MIDP都没有提供三角函数,而且CLDC1.0中也没有浮点数,所以我们的选择是查表。使用8位定点数的sin和cos表。下面是wtk自带demo中的代码,只提供了有限的几个角度,实际使用时根据需要细化角度值。

// sines of angles 0, 10, 20, 30, 40, 50, 60, 70, 80, 90,    all *256
    private static final int[] SINES =
        { 0, 44, 88, 128, 165, 196, 222, 241, 252, 256 };

    // angle is in degrees/10, i.e. 0..36 for full circle
    private static int sineTimes256(int angle)
    {
        angle %= 36;    // 360 degrees
        if (angle <= 9)          // 0..90 degrees
        {
            return SINES[angle];
        }
        else if (angle <= 18)    // 90..180 degrees
        {
            return SINES[18-angle];
        }
        else if (angle <= 27)    // 180..270 degrees
        {
            return -SINES[angle-18];
        }
        else                     // 270..360 degrees
        {
            return -SINES[36-angle];
        }
    }

    // angle is in degrees/10, i.e. 0..36 for full circle
    private static int cosineTimes256(int angle)
    {
        return sineTimes256(angle + 9);     // i.e. add 90 degrees
    }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 11:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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