2012-04-06 13 views
0

2つのセクションがあり、各セクションには2つのポイントが含まれ、各ポイントにはXとYがあります。 これらの2つのセクションのオーバーラップを見つける最良の方法は? (ここに関連するXのみ)2つのセクションのオーバーラップを見つけるためのAlogritm

public class section 
{ 
    double leftPoint; 
    double rightPoint; 
} 
+0

「dpuble」とは何ですか? – 11684

+0

間違い........ –

+0

私はそれを疑っていますが、OOPではいつも自分で定義したクラス/オブジェクトを持つことができます! – 11684

答えて

0

ここでは、その方法を示すコード例を示します。私は2つのセクションが(a_from、a_to)と(b_from、b_to)であると仮定し、結果のセクションを(res_from、res_to)に設定します。また、私はあなたが望むものと思われるので、x軸上の区間だけを交差させます。考え方は、結果は2つの開始の後半から開始し、2つの終了の早い方で終了するということです。 res_to.x < res_from.x場合は全く交差がありませんことを

Point a_from, a_to; 
Point b_from, b_to; 
Point res_from = new Point(); 
Point res_to = new Point(); 
res_from.SetX(Math.max(a_from.getX(), b_from.getX())); 
res_to.SetX(Math.min(a_to.getX(), b_to.getX())); 

注意。

また、ここでは、a_from.xと仮定しています。< = a_to.xとb_from.x < = b_to.xです。必ずしもそうでない場合もあります。そうでない場合は、res_from.xを計算する必要がありますMath.max(Math.min(a_from.getX(), a_to.getX()), Math.min(b_from.getX(), b_to.getX()))

+0

各セクションには2ポイントがあり、各ポーイングにはgetX()、getY() –

+0

があります。セクションクラスを定義すると、必要なものに近い答えが得られます。また、両方のセクションのx座標が非減少であると仮定してもよいでしょうか? –

+0

私の更新を見て、それぞれのポイントはgetX()とgetY()メソッド –

3

矩形クラスにはこのためのメソッドがありますか? 2つの矩形を作成した場合(それらの「セクション」と同じ大きさで配置されます)、intersection()を使用してそれらを比較すると、重複領域の矩形が返されます。

+0

のようです: 'rectangle1.intersection(rectangle2);' – 11684

関連する問題