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