]> git.llucax.com Git - z.facultad/75.62/c2tp1.git/blob - src/Angulo.java
Implemento Observable en Fraccion.
[z.facultad/75.62/c2tp1.git] / src / Angulo.java
1
2 public class Angulo implements OperAng, ComparaAng {
3
4     private int signo;
5     private int grados;
6     private int minutos;
7     private int segundos;
8
9     public int getSigno() {
10         return signo;
11     }
12
13     public int getGrados() {
14         return grados;
15     }
16
17     public int getMinutos() {
18         return minutos;
19     }
20
21     public int getSegundos() {
22         return segundos;
23     }
24
25     public void setSigno(int s) {
26         if (s < 0)
27             signo = -1;
28         else
29             signo = 1;
30     }
31
32     public void setGrados(int g) {
33         setSigno(g);
34         grados = Math.abs(g % 360);
35     }
36
37     public void setMinutos(int m) {
38         minutos = Math.abs(m % 60);
39     }
40
41     public void setSegundos(int s) {
42         segundos = Math.abs(s % 60);
43     }
44
45     public Angulo() {
46         setGrados(0);
47         setMinutos(0);
48         setSegundos(0);
49     }
50
51     public Angulo(int g, int m, int s) {
52         setGrados(g);
53         setMinutos(m);
54         setSegundos(s);
55     }
56
57     public Angulo(double radianes) {
58         fromRadianes(radianes);
59     }
60
61     public Angulo(Angulo a) {
62         setGrados(a.getGrados());
63         setMinutos(a.getMinutos());
64         setSegundos(a.getSegundos());
65     }
66
67     public String toString() {
68         return ((getSigno() < 0) ? "-" : "") + getGrados() + " " + getMinutos()
69             + "' " + getSegundos() + "\"";
70     }
71
72     public double toRadianes() {
73         return Math.toRadians(getGrados() + getMinutos() / 60.0
74                 + getSegundos() / 3600.0) * getSigno();
75     }
76
77     public void fromRadianes(double rad) {
78         rad = Math.toDegrees(rad);
79         setGrados((int)Math.floor(rad));
80         rad -= Math.floor(rad);
81         rad *= 60;
82         setMinutos((int)Math.floor(rad));
83         rad -= Math.floor(rad);
84         rad *= 60;
85         setSegundos((int)Math.round(rad));
86     }
87
88     public Angulo mas(Angulo a) {
89         return new Angulo(toRadianes() + a.toRadianes());
90     }
91
92     public Angulo menos(Angulo a) {
93         return new Angulo(toRadianes() - a.toRadianes());
94     }
95
96     public int compareTo(Angulo a) {
97         if (toRadianes() > a.toRadianes())
98             return 1;
99         if (toRadianes() < a.toRadianes())
100             return -1;
101         return 0;
102     }
103
104     // Test
105     public static void main(String args[]) {
106         Angulo a1 = new Angulo(2, 10, 20);
107         System.out.println("a1 = " + a1 + " (" + a1.toRadianes() + ")");
108         System.out.println("a1 + a1 = " + a1.mas(a1) + " (" + a1.mas(a1).toRadianes() + ")");
109         Angulo a2 = new Angulo(-500, 4, 40);
110         System.out.println("a2 = " + a2 + " (" + a2.toRadianes() + ")");
111         Angulo a3 = a1.menos(a2);
112         System.out.println("a3 = a1 - a2 = " + a3 + " (" + a3.toRadianes() + ")");
113         Angulo a4 = a2.mas(a1);
114         System.out.println("a4 = a2 + a1 = " + a4 + " (" + a4.toRadianes() + ")");
115         System.out.println("a2 comparado a a1 = " + a2.compareTo(a1));
116         System.out.println("a3 comparado a a1 = " + a3.compareTo(a1));
117         System.out.println("a3 comparado a a4 = " + a3.compareTo(a4));
118         //System.out.println("Java esta roto en el manejo de excepciones!!!");
119     }
120
121 }
122
123 // vim: set et sw=4 sts=4 :