summaryrefslogtreecommitdiffstats
path: root/src/de/gamezock/metacraft/data/IndexedTriangle.java
blob: 9a999d6dad9156e78059253203fc18c578e1480c (plain)
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
package de.gamezock.metacraft.data;

import javax.vecmath.Point3f;
import javax.vecmath.Vector3f;

public class IndexedTriangle {
  private VertexBuffer buffer;
  
  private int[] indices;
  private Vector3f normal;
  
  public IndexedTriangle(VertexBuffer buffer, int v1, int v2, int v3) {
    this.buffer = buffer;
    
    indices = new int[3];
    indices[0] = v1;
    indices[1] = v2;
    indices[2] = v3;
    
    Vector3f edge1 = new Vector3f(), edge2 = new Vector3f();
    
    Point3f p1 = buffer.getVertex(v1), p2 = buffer.getVertex(v2), p3 = buffer.getVertex(v3);
    
    edge1.sub(p1, p2);
    edge2.sub(p3, p2);
    
    normal = new Vector3f();
    normal.cross(edge1, edge2);
    normal.normalize();
  }
  
  public VertexBuffer getBuffer() {
    return buffer;
  }
  
  public int getIndex(int i) {
    return indices[i];
  }
  
  public Point3f getVertex(int i) {
    return buffer.getVertex(indices[i]);
  }
  
  public Vector3f getVertexNormal(int i) {
    return buffer.getNormal(indices[i]);
  }
  
  public Vector3f getNormal() {
    return normal;
  }
}