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