Zdravím, dlouho jsem tu nepsal :). (Jedná se o bonusový úkol, nicméně je povinnej).
Tohle je předloha už naimplementovaná.
public static void main(String[] args) {
Vertex2D[] vert1 = {
new Vertex2D(-100,-100),
new Vertex2D( -40, 10),
new Vertex2D( 50, 20),
new Vertex2D( 10, -20),
new Vertex2D( 60, -40)
};
Vertex2D[] vert2 = {
new Vertex2D( 50, 20),
new Vertex2D( 10, -20),
new Vertex2D( 60, -40),
new Vertex2D(-100,-100),
new Vertex2D( -40, 10)
};
Vertex2D[] vert3 = {
new Vertex2D( -40, 10),
new Vertex2D(-100,-100),
new Vertex2D( 60, -40),
new Vertex2D( 10, -20),
new Vertex2D( 50, 20)
};
Vertex2D[] vert4 = {
new Vertex2D( -40, 10),
new Vertex2D(-100,-100),
new Vertex2D( 50, 20),
new Vertex2D( 10, -20),
new Vertex2D( 60, -40)
};
if (!new ArrayPolygon(vert1).compare(new ArrayPolygon(vert1))) {
System.out.println("Chyba implementace compare() - prvni a prvni polygon jsou stejne");
} else if (!new ArrayPolygon(vert1).compare(new ArrayPolygon(vert2))) {
System.out.println("Chyba implementace compare() - prvni a druhy polygon jsou stejne");
} else if (!new ArrayPolygon(vert1).compare(new ArrayPolygon(vert3))) {
System.out.println("Chyba implementace compare() - prvni a treti polygon jsou stejne");
} else if (new ArrayPolygon(vert1).compare(new ArrayPolygon(vert4))) {
System.out.println("Chyba implementace compare() - prvni a ctvrty polygon nejsou stejne");
} else {
System.out.println("GRATULUJEME - Zda se, ze metoda compare() je spravne");
}
}
Mám za úkol porovnat, jestli se daný polygon rovná druhému.
public boolean compare(ArrayPolygon pol) {
Vertex2D[] vert1 = {
new Vertex2D(-100,-100),
new Vertex2D( -40, 10),
new Vertex2D( 50, 20),
new Vertex2D( 10, -20),
new Vertex2D( 60, -40)
};
//vert1 tam nemá být, dal jsem si ho tam ručně pro kontrolu, ale i tak to
píše, že se nerovnají, ikdyž se rovnají :D
if(new ArrayPolygon(vert1) == pol) {
return true;
} else if(new ArrayPolygon(vert1) == move()) {
return true;
} else if(new ArrayPolygon(vert1) == invert()) {
return true;
} else if(new ArrayPolygon(vert1) == invertAndMove()) {
return true;
} else {
return false;
}
}
/*
dále metodu move, kterou si před stavuji, že porovná polygon, když se nerovná
tak se vertex posune o jeden a znova zkontroluje a takhle až se buď najde nebo
proběhne celé kolečko
*/
public ArrayPolygon move() {
for(int i = 0; i < getNumVertices()/*5*/; i++) {
}
}
/*
když ani to se nebude rovnat zkusí se invert
*/
public ArrayPolygon invert() { // teď je to mechanické a špatně
return new ArrayPolygon(new Vertex2D[] {getVertex(2), getVertex(1), getVertex(0)});
}
/*
a nakonec, když ani to se nebude rovnat, tak se to spojí¨
1) invertuje se polygon
2) bude se posouvat vertexy
když ani jedno nevyjde, prohlásí se, že se nerovná
*/
/*
Nebo mě teď ještě napadlo, posunout vertex a když nevyjde zkusit
ho rovnou z invertovat a přejít na další vertex v případě neúspěchu
tím bych měl předejít jednomu kroku
*/
Nevím jak to efektivně naprogramovat.
Ručně psané pro teorii.