私は長方形の点をチェックしています。私は(以下のコードでif番号2のif文をチェックする)コードを追加することによって、コードがそれがない場合よりも多くの誤った返品をもたらすことを理解できません。誰かがこのコードの動作を理解するのを手伝ってもらえますか?結果が誤っているかどうかを再度確認すると、より誤った結果につながることはありますか?
私は、このif文をfalse returnの数と同じかそれより少ない数にすることを期待していました。代わりに、イプシロンの
if (p.x <= center.x + halfWidth && p.x >= center.x - halfWidth
&& p.y <= center.y + halfHeight && p.y >= center.y - halfHeight)
{
return true;
}
else
{
//Check number # 2
if (((p.x <= center.x + halfWidth && p.x >= center.x - halfWidth)
|| (p.x - center.x + halfWidth < 0.0001)||(p.x - center.x - halfWidth) < 0.0001)
&& ((p.y <= center.y + halfHeight && p.y >= center.y - halfHeight)
|| p.y - center.y + halfHeight < 0.0001 || p.y - center.y - halfHeight < 0.0001))
{
return true;
}
return false;
}
私は(0.0001)を使用していますことを無視してください
変更が – Fureeish
どこから来るのか確認するために、あなたのデバッガを使用して、あなたの「真」を返すの数は、万が一、チェック機能が呼び出された回数に影響機能していますか? –
テストに使用するデータを含めることができますか?この関数は再帰的に使用され、出力はp値を変更しますか?チェック#1は冗長であるため、チェック#2ではA && Bの場合をカバーするので、チェック#1では冗長であるため、チェック#2では偽を返すのが奇妙です。 –