2012-04-06 6 views
0

Ich habe 2 Abschnitte, jeder Abschnitt enthält 2 Punkte und jeder Punkt hat X und Y. Was ist der beste Weg, um die Überlappung zwischen diesen beiden Abschnitten zu finden? (nur auf dem X relevant hier)Alogritm um Überlappung zwischen 2 Abschnitten zu finden

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

was ist ein 'dpuble' ?? – 11684

+0

Fehler ........ –

+0

Ich vermutete das, aber in OOP können Sie immer selbst definierte Klassen/Objekte haben! – 11684

Antwort

0

Hier ist ein Beispielcode, um Ihnen zu zeigen, wie es geht. Ich nehme an, die beiden Abschnitte sind (a_from, a_to) und (b_from, b_to) und setzen den resultierenden Abschnitt auf (res_from, res_to). Außerdem überschneide ich nur die Intervalle auf der x-Achse, da dies scheint, was Sie wollen. Die Idee ist, dass die Ergebnisse vom späteren der beiden Anfänge ausgehen und am früheren der beiden Enden enden.

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())); 

Beachten Sie, dass, wenn res_to.x < res_from.x Es gibt keine Kreuzung überhaupt.

Auch hier nehme ich an a_from.x < = a_to.x und b_from.x < = b_to.x die möglicherweise nicht immer wahr ist. Wenn nicht, müssen Sie res_from.x berechnen als Math.max(Math.min(a_from.getX(), a_to.getX()), Math.min(b_from.getX(), b_to.getX()))

+0

jeder Abschnitt hat 2 Punkte und jeder poing hat getX(), getY() –

+0

Wenn Sie den Abschnitt Klasse definieren, werde ich eine Antwort näher an, was Sie benötigen. Kann ich auch annehmen, dass die x-Koordinaten beider Abschnitte nicht abnehmen? –

+0

siehe mein Update, jeder Punkt hat getX() und getY() Methode –

3

Hat die Rechteck-Klasse Methoden dafür? Wenn Sie zwei Rechtecks ​​(Größe und Position genau wie diese "Abschnitte") erstellen, können Sie sie mit intersection() vergleichen, was ein Rechteck des überlappenden Bereichs zurückgibt.

+0

wie: 'rectangle1.intersection (rectangle2);' – 11684

Verwandte Themen