0

2D フットボール ゲームを実装しています。私のパス アルゴリズムでは、通行人と受信者の間の勾配を次の式で計算します。m = (y2-y1)/(x2-x1)

一部の条件では、 とが等しくなり、ゼロ除算の例外が発生します。この場合、どうすればよいですか?x2x1

これはプログラミングの質問であるため、 math.stackexchange.com ではこの質問をしませんでした。

4

2 に答える 2

4

たまたま遭遇したという理由だけで、この種の操作に線の傾きを使用しないでください。代わりに、通行人から通行人への線の角度を使用します。少し三角法を適用します。その小さな三角法があなたを超えている場合は、この質問を削除し、何らかの作業を行ってから、再び行き詰ったときに再度投稿してください.

編集

三角法を使用することをお勧めする理由は 2 つあります。

  1. 同じ x 座標を持つ 2 点間の直線の傾きは不定だからです。はい、他の答えが示唆するように、x 座標が同じ場合、いじって勾配を非常に大きな値にすることができますが、x 座標と y 座標が何であれ角度を生成する三角法の場合、これは不必要な妥協です。利用可能。
  2. 三角法は、通行人から通行人への角度の値を自然に解釈します。90 度の角度 (pi/2 ラジアン、多くのサッカー選手やファンが試合中に角度をラジアンで考えているかどうかはわかりませんが) のパスは、クロスフィールド パスを意味します (あなたの y 軸が一直線に並んでいると仮定しています)ピッチの長軸で)、180 度の角度でのパスはバック パスなどです。
于 2012-07-26T11:04:07.027 に答える
1

Trig アプリケーションをスキップしたい場合は、チェックしてください。if(x1 != x2) //whatever math needs to be done

このようにして、x が等しい場合、else ステートメントで「フラット パス」に独自の値を設定でき、ゼロ除算の例外について再び心配する必要がなくなります。

どのルートを選んでも頑張ってください!(Trig を学習する時間があれば (必要な場合)、Trig を使用することをお勧めします)

于 2012-07-26T11:14:25.770 に答える