SIN COS ATAN三角関数テーブル化について
Posted: 2010年4月15日(木) 20:44
こんばんは、VC++2008EE、DXライブラリで龍神録の弾幕を高速化したいと思っています。
三角関数のテーブル化で高速になるということを知りましたが、
過去ログやグーグルで調べても
角度を度数法で代入して使うやりかただけしかなくて困っております。
以下は過去ログで見つけたテーブル化のソースです。
float sincos[360];
void initSincos() {
int i;
for(i = 0;i < 360;++i)
sincos = sin(i * PI / 180);
}
#define SIN(KAKUDO) (sincos[KAKUDO % 360])
#define COS(KAKUDO) (sincos[(KAKUDO + 90) % 360])
龍神録ではsin(PI/180*20)とかcos(PI/20)
のように弾幕の角度をPI/180*20やPI/20というようにラジアンで使用しているので
上のテーブル化したSIN()とCOS()では引数が整数の度数法なので当てはまらないのです。
上記のテーブル化したSIN()とCOS()を用いて
SIN(PI/180*20)やCOS(PI/20)というように使用するには
どうすればいいでしょうか?
boss_shot.angle=40;
boss_shot.X=COS(boss_shot.angle)*speed;
boss_shot.X=SIN(boss_shot.angle)*speed;
という感じでやはり度数法でやるべきでしょうか?
三角関数のテーブル化で高速になるということを知りましたが、
過去ログやグーグルで調べても
角度を度数法で代入して使うやりかただけしかなくて困っております。
以下は過去ログで見つけたテーブル化のソースです。
float sincos[360];
void initSincos() {
int i;
for(i = 0;i < 360;++i)
sincos = sin(i * PI / 180);
}
#define SIN(KAKUDO) (sincos[KAKUDO % 360])
#define COS(KAKUDO) (sincos[(KAKUDO + 90) % 360])
龍神録ではsin(PI/180*20)とかcos(PI/20)
のように弾幕の角度をPI/180*20やPI/20というようにラジアンで使用しているので
上のテーブル化したSIN()とCOS()では引数が整数の度数法なので当てはまらないのです。
上記のテーブル化したSIN()とCOS()を用いて
SIN(PI/180*20)やCOS(PI/20)というように使用するには
どうすればいいでしょうか?
boss_shot.angle=40;
boss_shot.X=COS(boss_shot.angle)*speed;
boss_shot.X=SIN(boss_shot.angle)*speed;
という感じでやはり度数法でやるべきでしょうか?
