public static class Angolo { public final double angolo; // costruttore con gradi primi e secondi public Angolo(double gradi, double primi, double secondi) { this.angolo = gradi + primi / (double) 60 + secondi / (double) 3600; } // costruttore con gradi public Angolo(double angolo) { this(angolo, 0, 0); } public double inRadianti() { return Math.toRadians(angolo); } public double seno() { return Math.sin(inRadianti()); } public double coseno() { return Math.cos(inRadianti()); } // somma due angoli public Angolo somma(Angolo altro) { return new Angolo(this.angolo + altro.angolo); } // sottrazione di angoli public Angolo sottrazione(Angolo altro) { return new Angolo(this.angolo - altro.angolo); } @Override public String toString() { return String.valueOf(angolo); } @Override public boolean equals(Object altro) { if(altro == null) return false; else if(!(altro instanceof Angolo)) return false; else { Angolo angolo = (Angolo) altro; return this.angolo == angolo.angolo; } } }