diff options
Diffstat (limited to 'src/de/gamezock/metacraft/data/IndexedTriangle.java')
-rw-r--r-- | src/de/gamezock/metacraft/data/IndexedTriangle.java | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/de/gamezock/metacraft/data/IndexedTriangle.java b/src/de/gamezock/metacraft/data/IndexedTriangle.java new file mode 100644 index 0000000..9a999d6 --- /dev/null +++ b/src/de/gamezock/metacraft/data/IndexedTriangle.java @@ -0,0 +1,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; + } +} |