summaryrefslogtreecommitdiffstats
path: root/src/de/gamezock/metacraft/data/IndexedTriangle.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/gamezock/metacraft/data/IndexedTriangle.java')
-rw-r--r--src/de/gamezock/metacraft/data/IndexedTriangle.java51
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;
+ }
+}