前日に続き、シューティングのあたり判定云々の話です。
円と線分が交差(?)しているかどうかの判定アルゴリズムを色々考えてみたのですが…結局のところ一番最初に考えたアプローチに落ち着きそうです。^^;
バカなりに、一生懸命いろいろ考えてみたんですが、結局はバカはバカでしかなかったというところでしょうかねー orz
で、考え方としては、「円の中心と、線分に対して垂直に交わる線分の距離を求める」という、誰もが普通に思いつく方法にしてみました。
計算の仕方は、連立方程式で解いていくことになりますね。なんちゅーか、連立方程式自体を、超久々に扱いましたよ…
みたいな。実に懐かしい…小学校の頃を思い出します。(笑
y = 2x
y = -1/2x + 2
で、考え方はまとまったので、本腰のコードに直接書いていってもいいのですが……当然ながら自分のコードには自信が無いわけで、視覚的にわかりやすい状態で本当にあっているかを確認できるようなプログラムを作りたいなぁ〜 とか思ってみたわけです。
ちゅーわけで、C#プログラミングの勉強を兼ねて作ってみました。
"おとうさま、当たっているか確認するね" アプリケーション!
直線に垂直で、円の中心までの線分の長さを求めて、その長さが半径より短かったら「当たり」とするプログラムですね。なんとか考え方はあっていたようで、正常動作しているようです。ちょっと一安心と言ったところ。
ただ、現状floatを使いまくりの状態なので、私的にはさほど納得行っていない状態です。ゲーム中で使うとなると、浮動小数点演算は出来るだけ控えたいので(特に何百回と演算するところになりますし)、もうちょっとコードの見直しが必要っぽいです。
…それにしても…
C# での GUIプログラミング楽すぎ…。GUIだけだったら、30分以内で出来るよこれ…。Win32に戻りたくなくなってきたわ…