X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2FGeom.java;h=3a5f4a6117790443d6766387b28c4538d13fc428;hp=558332de03ffdd4cb68c74da8e061fc418ef16d0;hb=895456322db6e2b117fc2188683f91304165b72d;hpb=207c278791e5d7b53cdb099cb67bb5df713e59d9 diff --git a/src/Geom.java b/src/Geom.java index 558332d..3a5f4a6 100644 --- a/src/Geom.java +++ b/src/Geom.java @@ -179,17 +179,13 @@ public class Geom implements Iterable { public String toString() { return ""+name; } //{ return "("+x+","+y+","+z+")"; } public V norm() { - /* - if (t==null) throw new Error("attempt to get vertex normal for point which does not belong to any triangles"); - T ti = t; V norm = new V(0, 0, 0); + E e = this.e; do { - norm = norm.plus(ti.norm().times((float)ti.angle(this))); - ti = ti.nextT(this); - } while(ti != t); + norm = norm.plus(e.t.norm().times((float)e.prev.angle())); + e = e.pair.next; + } while(e != this.e); return norm.norm(); - */ - throw new Error(); } } @@ -239,6 +235,13 @@ public class Geom implements Iterable { return t; } + /** angle between this half-edge and the next */ + public double angle() { + V v1 = next.p2.minus(p2); + V v2 = this.p1.minus(p2); + return Math.acos(v1.norm().dot(v2.norm())); + } + public void makeAdjacent(E e) { if (this.next == e) return; if (p2 != e.p1) throw new Error("cannot make adjacent -- no shared vertex"); @@ -415,14 +418,8 @@ public class Geom implements Iterable { else if (p == e3.shared(e1)) return e1; else throw new Error("triangle " + this + " does not own point " + p); } - - // returns the angle at point p - public double angle(P p) { - V v1 = nextE(p).other(p).minus(p); - V v2 = prevE(p).other(p).minus(p); - return Math.acos(v1.norm().dot(v2.norm())); - } */ + }