配列リストをループして四角形の 4 辺を比較するカスタム関数を作成しようとしています。それぞれの側を 1 対 1 で比較するだけで済みますが、それらをループする正しい方法を理解できないようです。以下に添付した図を作成しましたが、やりたいことを実行するための正しいループを実装できないようです。getSide(1-4) メソッドを使用して側面 1:North,2:East,3:South,4:West を取得するテスト用に、Bounds クラスの簡易バージョンを作成しました。今のところ、テスト用に側面を印刷したいだけです。すなわち (1 -> 11, 1 -> 11, 2 -> 8, 2 -> 12... など)
編集:最小の数字が、アルゴリズムを通過させようとしている順序であることに言及するのを忘れていました。また、おそらくツリーは私が望んでいたほど明確ではありません。基本的に、クワッドの両側と反対側を比較すると、線が下がっています。したがって、最初のシーケンスは次のようになります: 長方形 1: 1 -> 7、次に 1 -> 11、次に東側に移動し、それを西側と比較するなど、すべての側面を通過するまで繰り返します。
/* Program I'm using to test my algorithm */
public static void test()
{
BoundTest a,b,c,d,e,f;
a = new BoundTest("Rectangle 1","A","B","C","D");
b = new BoundTest("Rectangle 2","E","F","G","H");
c = new BoundTest("Rectangle 3","I","J","K","L");
ArrayList<BoundTest> x = new ArrayList();
x.add(0,a);
x.add(1,b);
x.add(2,c);
System.out.println(x.size());
for(int i = 0; i <= (x.size() - 2); i++)
{
System.out.println(x.get(i).getName());
}
}
/* Bounding Class */
public class BoundTest
{
private String north,east,south,west,name;
public BoundTest(String name,String a,String b,String c,String d)
{
this.name = "Name:" + name;
this.north = "North:" + a;
this.east = "East: " + b;
this.south = "South:" + c;
this.west = "West: " + d;
}
/* Get side */
public String getSide(int a)
{
String returnName;
switch(a)
{
case 1:
returnName = this.north;
break;
case 2:
returnName = this.east;
break;
case 3:
returnName = this.south;
break;
case 4:
returnName = this.west;
break;
default:
returnName = this.north;
break;
}
return returnName;
}
}