public void TurnTowardsPoint(double DestinationX, double DestinationY)
{
int distX = (int) (DestinationX - x);
int distY = (int) (DestinationY - y);
double angleRadians = Math.atan2(distY, distX);
int angleDegrees = (int)Math.toDegrees(angleRadians);
//angleDegrees = Math.abs(angleDegrees);
Log.w("Angle", Integer.toString(angleDegrees));
Log.w("Degrees", Integer.toString((int) this._degrees));
if((this._degrees) - 360 != angleDegrees)
{
if(this._degrees >= 0)
{
RotateItem(true);
}
else
{
RotateItem(false);
}
}
}
RotateItem(trueは時計回りのfalseは反復で、それ以外の場合は0にリセットされますが、これは変更可能です)。角度と度からより低い回転値を得る
私が達成しようとしているのは、角度の起点を指すときに&も回転する最短の方法を得ることです。
私はこれで2,3時間前から問題を抱えていましたが、私は学校で三角法を学んだことがありませんでしたので、ときには何を使うのか理解しているコンセプトに苦しんでいます。 (私はそれを読んでいる)。
どうすればよいですか?私はオンラインで何かを見つけることができないので、最終的にあきらめなければならず、2時間紙を見つめてどこにいなくても頼んだことがあります。
注:右舷側は360/0Dです。 船がその地点のすぐ下にある場合、それは-90です。船が右にある場合は180Dです。
問題は2 if文にあります。最初のifステートメントは、角度を指しているときに回転を停止する必要があり、2番目のステートメントは、どの方法が最短であるかを決定すると考えられます。それら2つのステートメントは間違っています。
問題はこの部分である:
if((this._degrees) - 360 != angleDegrees)
{
if(this._degrees >= 0)
{
RotateItem(true);
}
else
{
RotateItem(false);
}
}
いいえ、値にはどのような値がありますか?通常は0から360までです。この場合、360から減算すると常に<= 0になります – L7ColWinters
直面度が360の場合も、角度は180度を超えることはありません.180度から180度のようです。船は-90°の直下にあったか、それ以上は角度で+90°になります。 –