projects
/
anneal.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a75c872
)
better error checking in Mesh.java
author
megacz
<adam@megacz.com>
Sat, 28 Feb 2009 23:34:02 +0000
(15:34 -0800)
committer
megacz
<adam@megacz.com>
Sat, 28 Feb 2009 23:34:02 +0000
(15:34 -0800)
src/edu/berkeley/qfat/Mesh.java
patch
|
blob
|
history
diff --git
a/src/edu/berkeley/qfat/Mesh.java
b/src/edu/berkeley/qfat/Mesh.java
index
032457b
..
2e68c17
100644
(file)
--- a/
src/edu/berkeley/qfat/Mesh.java
+++ b/
src/edu/berkeley/qfat/Mesh.java
@@
-971,8
+971,11
@@
public class Mesh implements Iterable<Mesh.T> {
}
public T newT(Point v1, Point v2, Point v3, Vec norm) { return newT(v1, v2, v3, norm, 1); }
public T newT(Point v1, Point v2, Point v3, Vec norm, int colorclass) {
}
public T newT(Point v1, Point v2, Point v3, Vec norm) { return newT(v1, v2, v3, norm, 1); }
public T newT(Point v1, Point v2, Point v3, Vec norm, int colorclass) {
+ if (v1.equals(v2)
+ || v2.equals(v3)
+ || v3.equals(v1))
+ throw new Error("attempt to make a triangle with a length-zero side");
if (coalesce) {
if (coalesce) {
-
for(Vertex v : vertices) { if (v1.distance(v.p) < EPSILON) { v1 = v.p; break; } }
for(Vertex v : vertices) { if (v2.distance(v.p) < EPSILON) { v2 = v.p; break; } }
for(Vertex v : vertices) { if (v3.distance(v.p) < EPSILON) { v3 = v.p; break; } }
for(Vertex v : vertices) { if (v1.distance(v.p) < EPSILON) { v1 = v.p; break; } }
for(Vertex v : vertices) { if (v2.distance(v.p) < EPSILON) { v2 = v.p; break; } }
for(Vertex v : vertices) { if (v3.distance(v.p) < EPSILON) { v3 = v.p; break; } }
@@
-981,6
+984,11
@@
public class Mesh implements Iterable<Mesh.T> {
v2 = new Point(round(v2.x), round(v2.y), round(v2.z));
v3 = new Point(round(v3.x), round(v3.y), round(v3.z));
*/
v2 = new Point(round(v2.x), round(v2.y), round(v2.z));
v3 = new Point(round(v3.x), round(v3.y), round(v3.z));
*/
+ /*
+ // triangle's vertices got merged
+ if (v1.equals(v2) || v2.equals(v3) || v3.equals(v1))
+ return null;
+ */
}
if (norm != null) {
Vec norm2 = v3.minus(v1).cross(v2.minus(v1));
}
if (norm != null) {
Vec norm2 = v3.minus(v1).cross(v2.minus(v1));
@@
-991,6
+999,7
@@
public class Mesh implements Iterable<Mesh.T> {
E e12 = makeE(v1, v2);
E e23 = makeE(v2, v3);
E e31 = makeE(v3, v1);
E e12 = makeE(v1, v2);
E e23 = makeE(v2, v3);
E e31 = makeE(v3, v1);
+ if (e12==e23 || e23==e31 || e12==e31) throw new Error();
while(e12.next != e23 || e23.next != e31 || e31.next != e12) {
e12.makeAdjacent(e23);
e23.makeAdjacent(e31);
while(e12.next != e23 || e23.next != e31 || e31.next != e12) {
e12.makeAdjacent(e23);
e23.makeAdjacent(e31);