2010-11-23 11 views
1

ok私はプールゲームをC#/ javaに入れようとしています。プール/ビリヤードトリグ

  • start =プールキューのバックプールキュー(x、y)の(X、Y)
  • end =正面
  • circles =ボール(X、Y、R)
のリスト

あなたはマウスを動かすたびにstartendを更新し、交差している場合は「円のチェック」をループします。それから私は交差点で打ったときにボールで何が起こるかを理解する必要があるのが私の問題です。

どうすればいいですか?私はgoogleでいくつかの例を見たが、彼らはベクトルとその方法で私の頭の上でそれをした例を見つけることができた....

私の最初の思考は、同じ角度を描いていますが何らかの理由でそれが間違っています。キューを表す線の間a

Math.ASin(a/r) 

最小距離と:それは

public Point GetEnd(Point start, double angle, int len) 
    { 
     double y = start.Y + (len * Math.Sin(angle)); 
     double x = start.X + (len * Math.Cos(angle)); 

     return new Point((int)x, (int)y); 
    } 
+13

この種の物理学は常にベクトルによってモデル化されます。基本的な線形代数を学ぶのに少し時間を費やすと、必要なものはそれほど難しくありません。 – Donnie

+0

私はこの段階で角度だけが本当に速度や摩擦やそのどれかを必要としないことを望んでいます... – Pintac

+0

この記事はおそらくかなり助けになるでしょう。 http://www.codeproject.com/KB/game/CSharpSnooker.aspx – Terrance

答えて

0
私はキューポイントとボールが動く方向との間の角度があると思い

GetEnd機能かもしれませんボールの中心、rボールの半径。

aを取得するには、lamdaをa^2 = (Cue.Position+Cue.Direction*Lamda-Ball.Position)^2に最小化し、その式の平方根を計算します。

しかし、私はベクトルを使わずにその表現を再構成するのは面倒です。