X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FVec.java;h=56b357e018cd44cf4b607c024ff82ed8920a4756;hp=c331d392fe78d981435822d43cc25e72cee62eed;hb=162b76f92f5adaf80b312bee2a6bcd5b7ba2eabd;hpb=1cb56f053dc0a26302e777b2f82aa043ee780950 diff --git a/src/edu/berkeley/qfat/geom/Vec.java b/src/edu/berkeley/qfat/geom/Vec.java index c331d39..56b357e 100644 --- a/src/edu/berkeley/qfat/geom/Vec.java +++ b/src/edu/berkeley/qfat/geom/Vec.java @@ -15,4 +15,18 @@ public final class Vec { public Vec times(float mag) { return new Vec(x*mag, y*mag, z*mag); } public Vec div(float mag) { return new Vec(x/mag, y/mag, z/mag); } public String toString() { return "<"+x+","+y+","+z+">"; } + + /** fundamental error quadric for the plane with this normal passing through p */ + public Matrix fundamentalQuadric(Point p) { + Vec n = this; + if (mag() != 1) n = norm(); + float a = n.x; + float b = n.y; + float c = n.z; + float d = (-a * p.x) + (-b * p.y) + (-c * p.z); + return new Matrix(a*a, a*b, a*c, a*d, + a*b, b*b, b*c, b*d, + a*c, b*c, c*c, c*d, + a*d, b*d, c*d, d*d); + } }