ページ 11

シューティングの館 21章について

Posted: 2008年5月03日(土) 12:05
by Co
Shotpattern11まではきちんと動くのですが、pattern12に入ると必ず
atan2: DOMAIN error
というエラーがでて止まってしまいます。
どういうときに上のエラーがでるのかは、調べてなんとなく分かったのですが
他のshotpatternでも使われているのになぜ12に入ったときにだけと分からなくて・・・

ソースは21章のものをコピペでそのまま使っております。

Re:シューティングの館 21章について

Posted: 2008年5月03日(土) 15:13
by Justy
>他のshotpatternでも使われているのになぜ12に入ったときにだけと分からなくて・
 21章を見てみました。
 なるほど、たしかに言われてみるとエラーになりそうな感じがしますね。
 
 多分前のフレームでの弾の位置とそのフレームでの弾の位置が一致する瞬間があり、
進行方向の角度を求めようとそれぞれ x-old_x[j]や y-old_y[j]で
移動ベクトルを出したところ、xと yの両方とも0になってしまい、
それをそのまま atan2に与えたため、内部で定義域エラー(DOMAIN Error)に
なったものと推察されます。

 atan2で定義域エラーが出るかどうかは環境次第なので、Coさんの環境では
そのエラーになったと思われます。

 他のパターンではプレイヤーの位置や弾の放出を開始した時点での敵の位置から
角度を出そうとしており、その構成上双方の座標が重なることがなかったので
発生しなかったのでしょう。

(見た感じパターン13も前のフレームから角度を出そうとしているので
同じエラーが起きるかもしれません)


 とりあえず、双方が同じ座標だったら、角度は前と同じと見なすという
処理を入れれば回避できるかと。

Re:シューティングの館 21章について

Posted: 2008年5月04日(日) 03:49
by Co
無事動きました!
Justyさんどうもありがとうございました~

Re:シューティングの館 21章について

Posted: 2008年5月04日(日) 20:11
by 管理人
>atan2で定義域エラーが出るかどうかは環境次第なので、Coさんの環境ではそのエラーになったと思われます。

そうだったのですか。すみませんでした。
私の本にはatan2はエラーが定義されていない・・と書いてあるのですが、
どこかのサイトにそのエラーについての記述は無いでしょうか?

Re:シューティングの館 21章について

Posted: 2008年5月04日(日) 20:43
by Justy
>私の本にはatan2はエラーが定義されていない・・と書いてあるのですが、
>どこかのサイトにそのエラーについての記述は無いでしょうか?

 たしかにあんまりそういう記述がある本とかサイトは見かけませんね。
 無くはないんですが。

ttp://takagi.in/modules/bwiki/index.php?%A1%E3cmath%A1%E4%A5%D8%A5%C3%A5%C0#atan2
ttp://www.bohyoh.com/CandCPP/C/Library/atan2.html



 あと他には、規格書の方にも書いてあります。

Re:シューティングの館 21章について

Posted: 2008年5月04日(日) 21:31
by 管理人
Manpageの方は見ていたのですが、bohyohの方は見ていませんでした。
規格書は持っていたほうがよさそうですね。
ありがとうございました。