この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
正弦(sin)と余弦(cos)のプログラムを自作する
某タブレット端末のアプリを作成するときに、三角関数の命令がなかったため自作したので紹介します。プログラム言語はjavaで、角度は0度~360度を基準に作成しています。
サンプルプログラム
// サインテーブル
static private volatile int nSinTbl[] =
{
0, 17, 34, 52, 69, 87, 104,121,139,156, // 0~9
173,190,207,224,241,258,275,292,309,325, //10~19
342,358,374,390,406,422,438,453,469,484, //20~29
500,515,529,544,559,573,587,601,615,629, //30~39
642,656,669,681,694,707,719,731,743,754, //40~49
766,777,788,798,809,819,829,838,848,857, //50~59
866,874,882,891,898,906,913,920,927,933, //60~69
939,945,951,956,961,965,970,974,978,981, //70~79
984,987,990,992,994,996,997,998,999,999, //80~89
1000, //90
};
//======================================================================================
// * 正弦(sin)を求める
// * 入力:nAngle .. 角度
// * 出力:整数部8bitの固定小数点で表現された正弦
// * 備考:無し
//======================================================================================
int GetSin( int nAngle)
{
while( ( 0 > nAngle) || ( nAngle >= 360))
{
nAngle %= 360;
if( nAngle < 0) nAngle += 360;
}
if( nAngle > 270) return( -nSinTbl[ 360 - nAngle]);
if( nAngle > 180) return( -nSinTbl[ nAngle - 180]);
if( nAngle > 90) return( nSinTbl[ 180 - nAngle]);
return( nSinTbl[ nAngle]);
} //GetSin()
//======================================================================================
// * 余弦(cos)を求める。
// * 入力:nAngle .. 角度
// * 出力:整数部8bitの固定小数点で表現された余弦
// * 備考:無し
//======================================================================================
int GetCos( int nAngle)
{
return( GetSin( nAngle + 90));
} //GetCos()

