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()))
was ist ein 'dpuble' ?? – 11684
Fehler ........ –
Ich vermutete das, aber in OOP können Sie immer selbst definierte Klassen/Objekte haben! – 11684