私はクラスを作成しており、2つの円がその距離に基づいて重なっているかどうかを判断する必要があります。これは私が持っているものです:2つの円が重なっているかどうかを確認する方法
私のプロセスでは、中心の距離が半径の合計よりも小さい場合、円が重なります。
私はクラスを作成しており、2つの円がその距離に基づいて重なっているかどうかを判断する必要があります。これは私が持っているものです:2つの円が重なっているかどうかを確認する方法
私のプロセスでは、中心の距離が半径の合計よりも小さい場合、円が重なります。
の角を半径の合計のと比較しようとしています。距離を半径の合計と比較したいとします。
また、あなたはMath.sqrt
を使用する必要性を除去するであろう平方半径の和の、までの距離の平方を比較することができます。また、あなたはすでにthis
とother
は両ディスクを参照するために持っているとき、変数a
とb
を持つにはポイントがありませんことを
注意。実際には、a
とb
を両方ともother
と誤って指定しました。これは次のように修正できます。
public boolean overlaps(Disk other) {
double xDistance = getX() - other.getX();
double yDistance = getY() - other.getY();
double sumOfRadii = getRadius() + other.getRadius();
double distanceSquared = xDistance * xDistance + yDistance * yDistance;
boolean isOverlapping = distanceSquared < sumOfRadii * sumOfRadii;
return isOverlapping;
}
'a'と' b'は 'Disk other'と同じであることを指摘したいかもしれません。 –
ああ、良い点。私はそのエラーに気付かなかった。 –
変更2つの物事:
Circle a = this; // "this" instead of "other"
、あなたが探しているではないものをおそらく
Math.sqrt()
への呼び出しを削除していますが、[Eclipse2Dの](HTTPSを利用することができるかもしれません。 //docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html)交差点のチェック機能。 –