/** * MyTetragon.java * rappresenta un quadrilatero convesso. Realizza l'interfaccia Polygon.java. * @author A. Luchetta * @version 18-Nov-2006 */ public class MyTetragon extends MyPolygon { /** costruttore @param p array contenente i vertici del quadrilatero */ public MyTetragon(MyPoint2D[] p) { super(p); } /** costruttore @param p1 primo vertice del quadrilatero @param p2 secondo vertice del quadrilatero @param p3 terzo vertice del quadrilatero @param p4 quarto vertice del quadrilatero */ public MyTetragon(MyPoint2D p1, MyPoint2D p2, MyPoint2D p3, MyPoint2D p4) { super(new MyPoint2D[] {p1, p2, p3, p4}); } /** calcola l'area del quadrilatero @return l'area del quadrilatero */ public double area() { MyPoint2D[] p = getPoints(); MyTriangle t1 = new MyTriangle(p[0], p[1], p[2]); MyTriangle t2 = new MyTriangle(p[0], p[2], p[3]); return t1.area() + t2.area(); } /** verifica se e' un rettangolo @return true se e' un rettangolo, false alttrimenti */ public boolean isRectangle() { double[] p = getLines(); return approxEquals(p[0], p[2]) && approxEquals(p[1], p[3]); } /** verifica se e' un quadrato @return true se e' un quadrato, false alttrimenti */ public boolean isSquare() { double[] p = getLines(); return approxEquals(p[0], p[1]) && approxEquals(p[0], p[2]) && approxEquals(p[0], p[3]); } /* verifica se due numeri double sono uguali con approssimazione */ private static boolean approxEquals(double p, double q) { final double EPSILON = 1.E-14; return Math.abs(p - q) <= EPSILON * Math.max(Math.abs(p), Math.abs(q)); } }