From a029fc8ee6d45bf165aaa8469cea034cc8e45c22 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Mon, 1 May 2006 04:50:32 +0000 Subject: [PATCH] Implementa clase Angulo completa (punto 2). --- src/Angulo.java | 137 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 src/Angulo.java diff --git a/src/Angulo.java b/src/Angulo.java new file mode 100644 index 0000000..2abe424 --- /dev/null +++ b/src/Angulo.java @@ -0,0 +1,137 @@ + +interface OperAng { + + public Angulo mas(Angulo f); + + public Angulo menos(Angulo f); + +} + +interface ComparaAng { + + public int compareTo(Angulo f); + +} + +class Angulo implements OperAng, ComparaAng { + + private int signo; + private int grados; + private int minutos; + private int segundos; + + public int getSigno() { + return signo; + } + + public int getGrados() { + return grados; + } + + public int getMinutos() { + return minutos; + } + + public int getSegundos() { + return segundos; + } + + public void setSigno(int s) { + if (s < 0) + signo = -1; + else + signo = 1; + } + + public void setGrados(int g) { + setSigno(g); + grados = Math.abs(g % 360); + } + + public void setMinutos(int m) { + minutos = Math.abs(m % 60); + } + + public void setSegundos(int s) { + segundos = Math.abs(s % 60); + } + + public Angulo() { + setGrados(0); + setMinutos(0); + setSegundos(0); + } + + public Angulo(int g, int m, int s) { + setGrados(g); + setMinutos(m); + setSegundos(s); + } + + public Angulo(double radianes) { + fromRadianes(radianes); + } + + public Angulo(Angulo a) { + setGrados(a.getGrados()); + setMinutos(a.getMinutos()); + setSegundos(a.getSegundos()); + } + + public String toString() { + return ((getSigno() < 0) ? "-" : "") + getGrados() + " " + getMinutos() + + "' " + getSegundos() + "\""; + } + + public double toRadianes() { + return Math.toRadians(getGrados() + getMinutos() / 60.0 + + getSegundos() / 3600.0) * getSigno(); + } + + public void fromRadianes(double rad) { + rad = Math.toDegrees(rad); + setGrados((int)Math.floor(rad)); + rad -= Math.floor(rad); + rad *= 60; + setMinutos((int)Math.floor(rad)); + rad -= Math.floor(rad); + rad *= 60; + setSegundos((int)Math.round(rad)); + } + + public Angulo mas(Angulo a) { + return new Angulo(toRadianes() + a.toRadianes()); + } + + public Angulo menos(Angulo a) { + return new Angulo(toRadianes() - a.toRadianes()); + } + + public int compareTo(Angulo a) { + if (toRadianes() > a.toRadianes()) + return 1; + if (toRadianes() < a.toRadianes()) + return -1; + return 0; + } + + // Test + public static void main(String args[]) { + Angulo a1 = new Angulo(2, 10, 20); + System.out.println("a1 = " + a1 + " (" + a1.toRadianes() + ")"); + System.out.println("a1 + a1 = " + a1.mas(a1) + " (" + a1.mas(a1).toRadianes() + ")"); + Angulo a2 = new Angulo(-500, 4, 40); + System.out.println("a2 = " + a2 + " (" + a2.toRadianes() + ")"); + Angulo a3 = a1.menos(a2); + System.out.println("a3 = a1 - a2 = " + a3 + " (" + a3.toRadianes() + ")"); + Angulo a4 = a2.mas(a1); + System.out.println("a4 = a2 + a1 = " + a4 + " (" + a4.toRadianes() + ")"); + System.out.println("a2 comparado a a1 = " + a2.compareTo(a1)); + System.out.println("a3 comparado a a1 = " + a3.compareTo(a1)); + System.out.println("a3 comparado a a4 = " + a3.compareTo(a4)); + //System.out.println("Java esta roto en el manejo de excepciones!!!"); + } + +} + +// vim: set et sw=4 sts=4 : -- 2.43.0