]> git.llucax.com Git - z.facultad/75.62/c2tp1.git/commitdiff
Implementa clase Angulo completa (punto 2).
authorLeandro Lucarella <llucare@fi.uba.ar>
Mon, 1 May 2006 04:50:32 +0000 (04:50 +0000)
committerLeandro Lucarella <llucare@fi.uba.ar>
Mon, 1 May 2006 04:50:32 +0000 (04:50 +0000)
src/Angulo.java [new file with mode: 0644]

diff --git a/src/Angulo.java b/src/Angulo.java
new file mode 100644 (file)
index 0000000..2abe424
--- /dev/null
@@ -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 :