/** * MyTriangle2D * rappresenta un triangolo nel piano cartesiano * * @author Adriano Luchetta * @version 30-Ott-2006 * @see MyPoint2D.java * */ public class MyTriangle2D { private MyPoint2D p1; // vertice 1 private MyPoint2D p2; // vertice 2 private MyPoint2D p3; // vertice 3 /** costruttore @param q1 il primo vertice del triangolo @param q2 il secondo vertice del triangolo @param q3 il terzo vertice del triangolo @throws IllegalArgumentException se uno dei parametri vale null */ public MyTriangle2D(MyPoint2D q1,MyPoint2D q2,MyPoint2D q3) { if (q1 == null || q2 == null || q3 == null) throw new IllegalArgumentException(); p1 = q1; p2 = q2; p3 = q3; } /** costruttore @param x1 ascissa del primo vertice @param y1 ordinata del primo vertice @param x2 ascissa del secondo vertice @param y2 ordinata del secondo vertice @param x3 ascissa del terzo vertice @param y3 ordinata del terzo vertice */ public MyTriangle2D(double x1, double y1, double x2, double y2, double x3, double y3 ) { p1 = new MyPoint2D(x1, y1); p2 = new MyPoint2D(x2, y2); p3 = new MyPoint2D(x3, y3); } /** restituisce i vertici del triangolo @return un array di punti di lunghezza 3 contenente i vertici del triangolo */ public MyPoint2D[] getVertices() { MyPoint2D[] v = {p1, p2, p3}; return v; } /** trasla il triangolo @param dx traslazione lungo l'asse x @param dy traslazione lungo l'asse y @return il triangolo traslato */ public MyTriangle2D translate(double dx, double dy) { MyPoint2D s1 = p1.translate(dx, dy); MyPoint2D s2 = p2.translate(dx, dy); MyPoint2D s3 = p3.translate(dx, dy); return new MyTriangle2D(s1, s2, s3); } /** ruota il triangolo con centro di rotazione nel baricentro @param alpha angolo di rotazione @return il triangolo ruotato */ public MyTriangle2D rotate(double alpha) { MyPoint2D baricentro = getBarycentre(); return rotate(alpha, baricentro); } /** ruota il triangolo con centro di rotazione nel punto r @param alpha angolo di rotazione @param r il punto di rotazione @return il triangolo ruotato */ public MyTriangle2D rotate(double alpha, MyPoint2D r) { MyPoint2D s1 = p1.rotate(alpha, r); MyPoint2D s2 = p2.rotate(alpha, r); MyPoint2D s3 = p3.rotate(alpha, r); return new MyTriangle2D(s1, s2, s3); } /** restituisce il baricentro del triangolo @return il baricentro del triangolo */ public MyPoint2D getBarycentre() { MyPoint2D m = p1.middlePoint(p2); double mx = m.getX(); double my = m.getY(); double bx = mx + (p3.getX() - mx) / 3; double by = my + (p3.getY() - my) / 3; return new MyPoint2D(bx, by); } /** genera la descrizione testuale del triangolo @return descrizione testuale */ public String toString() { return "triangolo[" + p1 + ", " + p2 + ", " + p3 + "]"; } }