この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
正弦(sin)と余弦(cos)のプログラムを自作する
某タブレット端末のアプリを作成するときに、三角関数の命令がなかったため自作したので紹介します。プログラム言語はjavaで、角度は0度~360度を基準に作成しています。
サンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
// サインテーブル 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() |