-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathForma.java
More file actions
70 lines (52 loc) · 2.21 KB
/
Copy pathForma.java
File metadata and controls
70 lines (52 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package formageometrica;
import java.util.ArrayList;
import java.util.Arrays;
public abstract class Forma {
private ArrayList<Ponto2D> pontos;
public Forma() {
this.pontos = new ArrayList<>();
}
public Forma(ArrayList<Ponto2D> pontos) {
this.pontos = pontos;
}
public ArrayList<Ponto2D> getPontos() {
return pontos;
}
public boolean adicionarPonto(Ponto2D x) {
return this.pontos.add(x);
}
public static Forma geraForma(ArrayList<Ponto2D> pontos) {
if(pontos.size() == 3) {
if (verificaTriangulo(pontos)) {
return new Triangulo(pontos);
}
} else if (pontos.size() == 4) {
if(gerarQuadrado(pontos)) {
return new Quadrado(pontos);
}
} else if (pontos.size() == 2) {
return new Circulo(pontos);
}
System.out.println("Os pontos nao formam nenhuma forma valida!");
return null;
}
private static boolean verificaTriangulo(ArrayList<Ponto2D> pontos) {
double d1 = pontos.get(0).calcularDistancia(pontos.get(1));
double d2 = pontos.get(1).calcularDistancia(pontos.get(2));
double d3 = pontos.get(0).calcularDistancia(pontos.get(2));
return (d1 + d2) > d3 && (d2 + d3) > d1 && (d1 + d3) > d2;
}
private static boolean gerarQuadrado(ArrayList<Ponto2D> pontos) {
double[] distancia = new double[6];
distancia[0] = pontos.get(0).calcularDistancia(pontos.get(1));
distancia[1] = pontos.get(0).calcularDistancia(pontos.get(2));
distancia[2] = pontos.get(0).calcularDistancia(pontos.get(3));
distancia[3] = pontos.get(1).calcularDistancia(pontos.get(2));
distancia[4] = pontos.get(1).calcularDistancia(pontos.get(3));
distancia[5] = pontos.get(2).calcularDistancia(pontos.get(3));
Arrays.sort(distancia);
return distancia[0] == distancia[1] && distancia[1] == distancia[2] && distancia[2] == distancia[3];
}
public abstract double calcularArea();
public abstract double calcularPerimetro();
}