さて、最初に、あなたは条項を持っているのを忘れましたelse
:
public boolean checkCircleCollision(float x1, float y1, float r1,
float x2, float y2, float r2) {
if (Math.sqrt(((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)) <= (r1 + r2)){
return true;
} else {
return false;
}
}
他の誰かがすでにこれを次のように短縮できることを指摘しました:
public boolean checkCircleCollision(float x1, float y1, float r1,
float x2, float y2, float r2) {
return Math.sqrt(((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)) <= (r1 + r2);
}
(それらを指摘するためにそれらを賛成することを忘れないでください:-)
ただし、コードはまだ間違っています。
ここで述べたように、Javaの^
演算子は、べき乗ではなく、排他的なビット単位のOR用です。たぶんあなたが欲しいMath.pow()
ですか?
最初の引数の値を2番目の引数の累乗で返します。
public boolean checkCircleCollision(float x1, float y1, float r1,
float x2, float y2, float r2) {
return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)) <= (r1 + r2);
}
または、自分Math.hypot
でロールするのではなく、単に使用することもできます!
中間のオーバーフローまたはアンダーフローなしでsqrt(x ^ 2 + y ^ 2)を返します。
public boolean checkCircleCollision(float x1, float y1, float r1,
float x2, float y2, float r2) {
return Math.hypot(x2 - x1, y2 - y1) <= (r1 + r2);
}