0

誰かがこれを説明できますか?

double distance( int x1, int y1, int x2, int y2 )
{
    //Return the distance between the two points
    return sqrt( pow( x2 - x1, 2 ) + pow( y2 - y1, 2 ) );
}
bool check_collision( Circle &A, Circle &B )
{
    //If the distance between the centers of the circles is less than the sum of their radii
    if( distance( A.x, A.y, B.x, B.y ) < ( A.r + B.r ) )
    {
        //The circles have collided
        return true;
    }

    //If not
    return false;
}

このコードのビットがどうなるかわかりません

//Return the distance between the two points
return sqrt( pow( x2 - x1, 2 ) + pow( y2 - y1, 2 ) );

2 つの円の間の距離を返します。コードはhttp://lazyfoo.net/SDL_tutorials/lesson19/index.phpからのものです。

4

5 に答える 5

6

これ

sqrt( pow( x2 - x1, 2 ) + pow( y2 - y1, 2 ) )

円の中心間のユークリッド距離を返します。式として、この距離は単純です

sqrt((a1-b1)^2 + (a2-b2)^2)

ここで、(a1,a2) と (b1,b2) は 2 つの円の中心です。

于 2012-09-21T18:41:43.757 に答える
3

円の間の距離を返すのではなく、単純な古いカルテシアン距離の計算で「2点間の距離を返す」と言うことを行います。次に、プログラマーは2つの円の中心を通過します。

次に、プログラマーは両方の半径を差し引いて、円の間の距離を取得します。彼は衝突と非衝突の決定にのみ関心があるので、実際に差し引くのではなく、単に比較するだけです。

于 2012-09-21T18:39:53.683 に答える
2

原点と点(x、y)の間のユークリッド距離は、次のように定義されます。

d = (x2 + y2)(1/2)

したがって、2つの円の中心点p 1 =(x 1、y 1)とp 2 =(x 2、y 2 )の間の距離は、1つの中心点が原点になるようにシステム全体を変換することによって与えられ、もう一方までの距離が計算されます。これを行うには:

d = |p2 - p1|2
  = ((x2-x1)2 + (y2-y1)2)(1/2)

C ++では、これは通常次のようになります。

return sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) );

ただし、この場合、作成者は最初の引数を取り、それを2番目の引数の累乗で累乗して。を取得するpow(b, e)関数を使用しているように見えます。bebe

于 2012-09-21T18:39:36.943 に答える
1

円の中心間の距離を返します。と仮定すると、は中心Circle.xCircle.y表します。これは、衝突をチェックするための残りの計算で使用されます。

于 2012-09-21T18:40:17.147 に答える
1

2 点間の距離は、直角三角形に関する Pithagroas の定理を使用して推測できます。デカルトの座標系では、2 つの点 P1(x1, y1) と P2(x2, y2) を定義すると、それらの間に直角三角形ができます。

^ y
|
|
|
|
+ ---------x P1(x1, y1) = (12, 8)
|          |
|          | 
|          | 
+----------x-I-------x P2(x2, y2) = (24, 4)
|          |         |
|          |         |
|          |         |
+------------------------------------------------> x

これで、P1, P2, I三角形はその点で直角になりますI。したがって、ピタゴラスの定理は次のように適用されます。

c ^ 2 = a ^ 2 + b ^ 2
distance ^ 2 = (x1 - x2) ^ + (y2 - y1) ^ 2
since n ^ 2 equals (-n) ^ 2 we can finally write:
distance = sqrt((x1 - x2) ^ 2 + (y1 - y2) ^ 2)

それが理由です。

于 2012-09-21T18:48:47.447 に答える