Diskuze: Iterace 02
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Vždyť to počítáš jenom s jedním bodem Ten druhý bod je přece ten point
co tam máš jako parametr té funkce, k jeho souřadnicím přistoupíš ve
funkci distance pomocí
point.getX();
point.getY();
takže celý ten výpočet vzdálenosti by měl vypadat nějak takto:
dist = Math.sqrt((Math.pow(point.getX()-this.getX(),2) + (point.getY()-this.getY(),2))
(nezkoušel jsem to, tak je možné že tam mám chaos v závorkách, ale myslím, že pro pochopení to stačí)
Díky moc. Už mi to funguje. Ale sekl jsem se dál -.-
package cz*;
/**
*
* @author Tomas Bednar
*/
public class Triangle {
private final Vertex2D a;
private final Vertex2D b;
private final Vertex2D c;
private boolean divide = false;
private Triangle subA = null;
private Triangle subB = null;
private Triangle subC = null;
/**
* Set vertices triangle
* @param a side a
* @param b side b
* @param c side c
*/
public Triangle(Vertex2D a, Vertex2D b, Vertex2D c) {
this.a = a;
this.b = b;
this.c = c;
}
/**
* Check if triangle was divided to sub triangle
* @return If triangle was divided then return true else false
*/
public boolean isDivided() {
return(divide);
}
/**
* Check the number i and if was divided, then return tuple of sub triagle
* @param i number of sub triangle (0 - 2)
* @return sub triangle
*/
public Triangle getSubTriangle(int i) {
if(isDivided()){
switch(i) {
case 0: return subA;
case 1: return subB;
case 2: return subC;
default: return null;
}
}
return null;
}
/**
* From big triangle count three sub triangles and sets them vertices
* @return true or false depend if triangle was divided to sub triangle
*/
public boolean divide() {
if(isDivided()) {
return false;
} else {
Vertex2D middleOfAB = new Vertex2D(((a.getX() + b.getX()) / 2), ((a.getY() + b.getY()) / 2));
Vertex2D middleOfAC = new Vertex2D(((a.getX() + c.getX()) / 2), ((a.getY() + c.getY()) / 2));
Vertex2D middleOfBC = new Vertex2D(((b.getX() + c.getX()) / 2), ((b.getY() + c.getY()) / 2));
subA = new Triangle(a, middleOfAB, middleOfAC);
subB = new Triangle(middleOfAB, b, middleOfBC);
subC = new Triangle(middleOfAC, middleOfBC, c);
divide = true;
return true;
}
}
public Vertex2D getVertexA() {
return a;
}
public Vertex2D getVertexB() {
return b;
}
public Vertex2D getVertexC() {
return c;
}
/**
* Check if triangle is equilateral
* @return true if is equilateral or false
*/
public boolean isEquilateral() {
double pointA;
double pointB;
double pointC;
pointA = a.getX() + a.getY();
pointB = b.getX() + b.getY();
pointC = c.getX() + c.getY();
if(Math.abs(pointA - pointB) < 0.001 && Math.abs(pointA - pointC) < 0.001 && Math.abs(pointB - pointC) < 0.001) {
return true;
}
return false;
}
@Override
public String toString() {
return "Triangle: vertices=" + getVertexA() + " " + getVertexB() + " " + getVertexC();
}
}
// Test
@Test public void task02() {
Triangle tri = new Triangle(new Vertex2D(-1,0), new Vertex2D(1,0), new Vertex2D(0,1));
assertTrue("Konstruktor Triangle", tri.getVertexA().getX() == -1.0 && tri.getVertexA().getY() == 0.0);
BasicRulesTester.testRedundantMethod(Triangle.class, "setVertexA", Vertex2D.class);
BasicRulesTester.testRedundantMethod(Triangle.class, "setVertexB", Vertex2D.class);
BasicRulesTester.testRedundantMethod(Triangle.class, "setVertexC", Vertex2D.class);
assertTrue("isEquilateral()", new Triangle(new Vertex2D(-1.2, 0), new Vertex2D(1.2, 0), new Vertex2D(0, 2.07846097)).isEquilateral());
assertFalse("isEquilateral()", new Triangle(new Vertex2D(-1.2, 0), new Vertex2D(1.2, 0), new Vertex2D(0, 5.0)).isEquilateral());
try {
Triangle ntri = new Triangle(null, null, null);
assertEquals("toString vraci spatny vystup pokud je nektery z vrcholu prazdny", "INVALID TRIANGLE", ntri.toString());
} catch(NullPointerException ex) {
fail("toString neosetruje situaci, kdy je nektery z vrcholu prazdny");
}
}
V testování, jestli je trojúhelník rovnostranný. Jelikož jsou čísla reálná nejde použit ==, ale přes math.abs .. jenže, když to zkompiluji tak mi to vypíše error, ale nenapíše, kde přesně.
Zobrazeno 4 zpráv z 4.