三角関数のテーブル化について悩んでいます。
for(i=0;i<360;i++)Sin=sin(PI/180*i); //cosの計算時に[/url]内を+90する
のようにしましたが問題点として、
1、Sinを呼ぶときにiは整数なので、ラジアンの場合(実数)困る。具体的には龍神録では角度をatan2で求めて
いるのでうまくいかない。atan2に180/πをかけてint型にしたけれど、あまり良くない・・・
2、atan2のテーブル化がわからない
簡単にまとめると配列よりもポインタでやる方がいいのだけれど、やり方がわかりません。教えてください。
Googleで調べてもよくわかりませんでした・・・
三角関数のテーブル化
Re:三角関数のテーブル化
> atan2に180/πをかけてint型にしたけれど、あまり良くない・・・
あまりよくないとは?
満足いかないということですか?
正当な方法かとは思いますが。
> atan2のテーブル化
sinのテーブル化同様にすればよいのでは?
っといっても、|±PI/2|になるのは無限大なので、ある値を超えたら
PI/2とするように調節する(有限長でテーブル化する)事が必要でしょうね。
> 配列よりもポインタでやる方がいいのだけれど
この一文がとても不可解です。
もう少し追記をよろしくお願いします。
あまりよくないとは?
満足いかないということですか?
正当な方法かとは思いますが。
> atan2のテーブル化
sinのテーブル化同様にすればよいのでは?
っといっても、|±PI/2|になるのは無限大なので、ある値を超えたら
PI/2とするように調節する(有限長でテーブル化する)事が必要でしょうね。
> 配列よりもポインタでやる方がいいのだけれど
この一文がとても不可解です。
もう少し追記をよろしくお願いします。
Re:三角関数のテーブル化
>ラジアンの場合(実数)困る
ラジアンな角度をX倍してから整数化すればいいのでは?
Xが幾つなのは、テーブルがどれだけあるのかで変わってきますが。
あと、今の段階で言っても詮無いことですが、工夫すればテーブルは1周360度分ではなく
90度分だけあれば足りますよ。
ラジアンな角度をX倍してから整数化すればいいのでは?
Xが幾つなのは、テーブルがどれだけあるのかで変わってきますが。
あと、今の段階で言っても詮無いことですが、工夫すればテーブルは1周360度分ではなく
90度分だけあれば足りますよ。