javaで三角関数(sin/cos)のプログラムを自作する

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

正弦(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()