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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Co

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

#1

投稿記事 by Co » 17年前

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

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

Justy

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

#2

投稿記事 by Justy » 17年前

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

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

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

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


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

Co

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

#3

投稿記事 by Co » 17年前

無事動きました!
Justyさんどうもありがとうございました~

管理人

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

#4

投稿記事 by 管理人 » 17年前

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

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

Justy

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

#5

投稿記事 by Justy » 17年前

>私の本には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章について

#6

投稿記事 by 管理人 » 17年前

Manpageの方は見ていたのですが、bohyohの方は見ていませんでした。
規格書は持っていたほうがよさそうですね。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る