diff options
Diffstat (limited to 'src/jogl/classes/com/jogamp/graph/geom')
-rw-r--r-- | src/jogl/classes/com/jogamp/graph/geom/SVertex.java | 17 | ||||
-rw-r--r-- | src/jogl/classes/com/jogamp/graph/geom/Triangle.java | 39 | ||||
-rw-r--r-- | src/jogl/classes/com/jogamp/graph/geom/Vertex.java | 2 |
3 files changed, 39 insertions, 19 deletions
diff --git a/src/jogl/classes/com/jogamp/graph/geom/SVertex.java b/src/jogl/classes/com/jogamp/graph/geom/SVertex.java index beac908d4..d13607d71 100644 --- a/src/jogl/classes/com/jogamp/graph/geom/SVertex.java +++ b/src/jogl/classes/com/jogamp/graph/geom/SVertex.java @@ -36,9 +36,9 @@ import com.jogamp.opengl.math.VectorUtil; */ public class SVertex implements Vertex { private int id; - protected final float[] coord = new float[3]; protected boolean onCurve; - private final float[] texCoord = new float[2]; + protected final float[] coord = new float[3]; + private final float[] texCoord = new float[3]; static final Factory factory = new Factory(); @@ -78,13 +78,13 @@ public class SVertex implements Vertex { this.id = src.getId(); System.arraycopy(src.getCoord(), 0, coord, 0, 3); setOnCurve(src.isOnCurve()); - System.arraycopy(src.getTexCoord(), 0, texCoord, 0, 2); + System.arraycopy(src.getTexCoord(), 0, texCoord, 0, 3); } public SVertex(final int id, final boolean onCurve, final float[] texCoordsBuffer) { this.id = id; this.onCurve = onCurve; - System.arraycopy(texCoordsBuffer, 0, texCoord, 0, 2); + System.arraycopy(texCoordsBuffer, 0, texCoord, 0, 3); } public SVertex(final float x, final float y, final float z, final boolean onCurve) { @@ -102,7 +102,7 @@ public class SVertex implements Vertex { public SVertex(float[] coordsBuffer, float[] texCoordsBuffer, boolean onCurve) { this.id = Integer.MAX_VALUE; System.arraycopy(coordsBuffer, 0, coord, 0, 3); - System.arraycopy(texCoordsBuffer, 0, texCoord, 0, 2); + System.arraycopy(texCoordsBuffer, 0, texCoord, 0, 3); setOnCurve(onCurve); } @@ -189,7 +189,7 @@ public class SVertex implements Vertex { final Vertex v = (Vertex) obj; return this == v || isOnCurve() == v.isOnCurve() && - VectorUtil.isVec2Equal(getTexCoord(), 0, v.getTexCoord(), 0, FloatUtil.EPSILON) && + VectorUtil.isVec3Equal(getTexCoord(), 0, v.getTexCoord(), 0, FloatUtil.EPSILON) && VectorUtil.isVec3Equal(getCoord(), 0, v.getCoord(), 0, FloatUtil.EPSILON) ; } @@ -199,9 +199,10 @@ public class SVertex implements Vertex { } @Override - public final void setTexCoord(float s, float t) { + public final void setTexCoord(float s, float t, float p) { texCoord[0] = s; texCoord[1] = t; + texCoord[2] = p; } @Override @@ -221,6 +222,6 @@ public class SVertex implements Vertex { public String toString() { return "[ID: " + id + ", onCurve: " + onCurve + ": p " + coord[0] + ", " + coord[1] + ", " + coord[2] + - ", t " + texCoord[0] + ", " + texCoord[1] + "]"; + ", t " + texCoord[0] + ", " + texCoord[1] + ", " + texCoord[2] + "]"; } } diff --git a/src/jogl/classes/com/jogamp/graph/geom/Triangle.java b/src/jogl/classes/com/jogamp/graph/geom/Triangle.java index de629dfc4..33e53f3ed 100644 --- a/src/jogl/classes/com/jogamp/graph/geom/Triangle.java +++ b/src/jogl/classes/com/jogamp/graph/geom/Triangle.java @@ -27,6 +27,8 @@ */ package com.jogamp.graph.geom; +import com.jogamp.opengl.math.VectorUtil; + import jogamp.graph.geom.plane.AffineTransform; public class Triangle { @@ -35,31 +37,29 @@ public class Triangle { private boolean[] boundaryVertices = null; private int id; - public Triangle(Vertex v1, Vertex v2, Vertex v3) { + public Triangle(final Vertex v1, final Vertex v2, final Vertex v3, final boolean[] boundaryVertices) { id = Integer.MAX_VALUE; vertices[0] = v1; vertices[1] = v2; vertices[2] = v3; + this.boundaryVertices = boundaryVertices; } - public Triangle(Triangle src) { + public Triangle(final Triangle src) { id = src.id; vertices[0] = src.vertices[0].clone(); vertices[1] = src.vertices[1].clone(); vertices[2] = src.vertices[2].clone(); System.arraycopy(src.boundaryEdges, 0, boundaryEdges, 0, 3); - boundaryVertices = src.boundaryVertices; + boundaryVertices = new boolean[3]; + System.arraycopy(src.boundaryVertices, 0, boundaryVertices, 0, 3); } private Triangle(final int id, final boolean[] boundaryEdges, final boolean[] boundaryVertices){ this.id = id; System.arraycopy(boundaryEdges, 0, this.boundaryEdges, 0, 3); - this.boundaryVertices = boundaryVertices; - /** - if( null != boundaryVertices ) { - this.boundaryVertices = new boolean[3]; - System.arraycopy(boundaryVertices, 0, this.boundaryVertices, 0, 3); - } */ + this.boundaryVertices = new boolean[3]; + System.arraycopy(boundaryVertices, 0, this.boundaryVertices, 0, 3); } /** @@ -73,6 +73,22 @@ public class Triangle { return tri; } + /** + * Returns true if all vertices are on-curve, otherwise false. + */ + public final boolean isOnCurve() { + return vertices[0].isOnCurve() && vertices[1].isOnCurve() && vertices[2].isOnCurve(); + } + + /** + * Returns true if all vertices are lines, i.e. zero tex-coord, otherwise false. + */ + public final boolean isLine() { + return VectorUtil.isVec2Zero(vertices[0].getTexCoord(), 0) && + VectorUtil.isVec2Zero(vertices[1].getTexCoord(), 0) && + VectorUtil.isVec2Zero(vertices[2].getTexCoord(), 0) ; + } + public int getId() { return id; } @@ -108,6 +124,9 @@ public class Triangle { @Override public String toString() { - return "Tri ID: " + id + "\n\t" + vertices[0] + "\n\t" + vertices[1] + "\n\t" + vertices[2]; + return "Tri ID: " + id + ", onCurve "+isOnCurve()+"\n\t" + + vertices[0] + ", bound "+boundaryVertices[0]+"\n\t" + + vertices[1] + ", bound "+boundaryVertices[1]+"\n\t" + + vertices[2] + ", bound "+boundaryVertices[2]; } } diff --git a/src/jogl/classes/com/jogamp/graph/geom/Vertex.java b/src/jogl/classes/com/jogamp/graph/geom/Vertex.java index fc9590ae7..e9c8dd193 100644 --- a/src/jogl/classes/com/jogamp/graph/geom/Vertex.java +++ b/src/jogl/classes/com/jogamp/graph/geom/Vertex.java @@ -69,7 +69,7 @@ public interface Vertex extends Vert3fImmutable, Cloneable { float[] getTexCoord(); - void setTexCoord(float s, float t); + void setTexCoord(float s, float t, float p); /** * @see System#arraycopy(Object, int, Object, int, int) for thrown IndexOutOfBoundsException |