J2ME中查表法使用三角函数

文章指出CLDC和MIDP未提供三角函数,CLDC1.0无浮点数,可采用查表法,给出了使用8位定点数的sin和cos表代码,该实现实用且效率高。但项目需开三次方计算公式时此方法不适用,非CLDC1.1以上环境模拟实现功能有难度,后续文章将介绍具体实现。

作者:开发视界 文章来源:http://www.sf.org.cn

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

}

虽然这是一个简单的实现,但确非常实用,从效率来说,要比模拟浮点计算的效率高很多。但是现在项目中需要使用一个带有开三次方的计算公式,这时这个东西就帮不上忙了。^-^

因此,在非CLDC1.1以上的开发环境中,需要自己模拟实现这种功能并不简单,但也并不是没有办法,具体实现请关注作者的后续原创文章。(这篇不是原创,来自网络)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值