G
GGaasstt
Gast
Hallo.
Ich habe zwei Rechtecke, welche parralel zu den Achsen liegen.
Ein Rechteck sieht z.b. so aus:
Dabei gibt rec[0] den 'upper-left'-point und rec[1] den 'lower-right'-point an.
Mein Ziel war es jetzt, eine funktion zu schreiben, die die Punkte eines Rechtecks zurückgiebt, welche nicht überlappt sind. Leider funktioniert das nicht:
Ich hoffe ich konnte mich verständlich machen.
GGaasstt
Ich habe zwei Rechtecke, welche parralel zu den Achsen liegen.
Ein Rechteck sieht z.b. so aus:
Code:
int[][] rec = new int[]{new int[]{3,8},new int[]{5,10}};
Mein Ziel war es jetzt, eine funktion zu schreiben, die die Punkte eines Rechtecks zurückgiebt, welche nicht überlappt sind. Leider funktioniert das nicht:
Java:
public class TestF {
public static void main(String[] args) {
int[][] rec1 = new int[2][2];
int[][] rec2 = new int[2][2];
rec1[0] = new int[] { 1, 1 };
rec1[1] = new int[] { 4, 4 };
rec2[0] = new int[] { 2, 2 };
rec2[1] = new int[] { 5, 5 };
List<int[]> a = getInverseOverlapping(rec1, rec2);
System.out.printf("Rec 1{ x: %d, y: %d, x2: %d, y2: %d}\n", rec1[0][0],
rec1[0][1], rec1[1][0], rec1[1][1]);
System.out.printf("Rec 2{ x: %d, y: %d, x2: %d, y2: %d}\n", rec2[0][0],
rec2[0][1], rec2[1][0], rec2[1][1]);
for (int[] po : a)
System.out.printf("x: %d, y: %d\n", po[0], po[1]);
}
private static List<int[]> getInverseOverlapping(int[][] oldRec,
int[][] newRec) {
List<int[]> oldR = getA(oldRec);
List<int[]> newR = getA(newRec);
List<int[]> back = new Vector<int[]>();
for (int[] po : newR)
if (!oldR.contains(po))
back.add(po);
return back;
}
private static List<int[]> getA(int[][] rec) {
List<int[]> points = new Vector<int[]>();
for (int x = rec[0][0]; x <= rec[1][0]; ++x)
for (int y = rec[0][1]; y <= rec[1][1]; ++y)
points.add(new int[] { x, y });
return points;
}
}
Ich hoffe ich konnte mich verständlich machen.
GGaasstt