Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
99 lines (73 loc) · 2.37 KB

File metadata and controls

99 lines (73 loc) · 2.37 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
import org.joml.Vector3f;
import logic.Ponto;
public class Objeto3D {
ArrayList<ArrayList<Ponto>> faces; // vetor de faces
int nFaces; // Variavel que armazena o numero de faces do objeto
ArrayList<Ponto> normais;
public Objeto3D()
{
this.faces = new ArrayList<ArrayList<Ponto>>();
this.normais = new ArrayList<Ponto>();
nFaces = 0;
}
public int getNFaces()
{
return nFaces;
}
public ArrayList<ArrayList<Ponto>> getFaces()
{
return faces;
}
public void LeObjeto (String nome)
{
File arquivo = new File(nome);
Scanner scan = null;
try {
scan = new Scanner(arquivo);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
scan.nextLine();
nFaces = Integer.parseInt(scan.nextLine());
scan.nextLine();
for(int i = 0; i < nFaces; i++){
ArrayList<Ponto> face = new ArrayList<Ponto>();
Ponto p1 = new Ponto(scan.nextFloat(),scan.nextFloat(),scan.nextFloat());
Ponto p2 = new Ponto(scan.nextFloat(),scan.nextFloat(),scan.nextFloat());
Ponto p3 = new Ponto(scan.nextFloat(),scan.nextFloat(),scan.nextFloat());
face.add(p1);
face.add(p2);
face.add(p3);
normais.add(calculaNormal(p1, p2, p3));
scan.next();
faces.add(face);
}
}
public static Ponto prodVetorial (Ponto v1, Ponto v2)
{
Ponto vresult = new Ponto(v1.y * v2.z - (v1.z * v2.y),v1.z * v2.x - (v1.x * v2.z),v1.x * v2.y - (v1.y * v2.x));
return vresult;
}
public static Ponto vetUnitario(Ponto vet)
{
double modulo;
modulo = Math.sqrt(vet.x * vet.x + vet.y * vet.y + vet.z * vet.z);
vet.x /= modulo;
vet.y /= modulo;
vet.z /= modulo;
return vet;
}
public static Ponto calculaNormal(Ponto p1, Ponto p2, Ponto p3){
Ponto x = new Ponto(p2.x - p1.x, p2.y-p1.y, p2.z-p1.z);
Ponto y = new Ponto(p3.x - p1.x, p3.y-p1.y, p3.z-p1.z);
return vetUnitario(prodVetorial(x, y));
}
public Ponto getNormal(int index){
return normais.get(index);
}
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.