3

ここでは、アクターとタッチ ポイントの間の角度を計算し、この角度を回転角度としてアクターに渡します。アクターが指のタッチまたは指のドラッグ方向を指すようにします (指のタッチとドラッグで道路上のバスを引っ張っていると考えてください)。

float degrees = (float) ((Math.atan2(touchPoint.x - crocodile.position.x, -(touchPoint.y - crocodile.position.y)) * 180.0d / Math.PI));

その計算度はきちんと。時々、それが少し異なる程度を与えているだけです。そのため、結果が予想と実際に異なる場合、私のアクターは変動しています。

私が印刷した結果は次のとおりです。

引用符

    degree is :: 141.93233
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 158.61426
    degree is :: 90.0
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 90.0
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93057
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93306
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93257
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93134
    degree is :: 141.93257
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93134
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93306
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93257
    degree is :: 180.0
    degree is :: 141.93134
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93257
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93257
    degree is :: 180.0
    degree is :: 141.93134
    degree is :: 180.0
    degree is :: 141.93257
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93008
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93306
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93257
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 141.93134
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 180.0
    degree is :: 180.0

さて、180 と 141 はなぜそれらの値で変動しているのか。上記の式で変更する必要があるのは、常に 141 または 180 であると予想しています。

4

2 に答える 2

5

最初のパラメーターは y で、2 番目のパラメーターは x でなければなりません。

double atan2(double y, double x)

Atan2 は実際に指定された y/x の逆正接関数です

そのため、通常、最初のパラメーターは y になります。

また、x<0 や y<0 のような一部の境界線では、スワップされているかどうかは問題にならないため、x と y をスワップすると適切な次数を得ることができます。

詳しい説明はこちら

于 2015-03-26T18:48:13.607 に答える