X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FSegment.java;h=db41142113b610eda284e627ec50d4d512cd250e;hb=HEAD;hp=7e6ebd62f7ceb3756ebb207fbb282c3b3ca7e371;hpb=2d6bccf0ca59bca01f2a9942e90c7ddb9399ed44;p=anneal.git diff --git a/src/edu/berkeley/qfat/geom/Segment.java b/src/edu/berkeley/qfat/geom/Segment.java index 7e6ebd6..db41142 100644 --- a/src/edu/berkeley/qfat/geom/Segment.java +++ b/src/edu/berkeley/qfat/geom/Segment.java @@ -25,6 +25,18 @@ public class Segment implements HasBoundingBox { public float getMaxZ() { return Math.max(p1.z, p2.z); } public float getMinZ() { return Math.min(p1.z, p2.z); } - public Segment glProject(GL gl) { return new Segment(p1.glProject(gl), p2.glProject(gl)); } + /** the line passing through both endpoints of this segment */ + public Line getLine() { return new Line(p1, p2); } + + public float length() { return p1.distance(p2); } + + public double distance(Point p) { + Line line = getLine(); + Point proj = line.getProjection(p); + if (proj.distance(p1)+proj.distance(p2) > length()) + return Math.min(p1.distance(p), + p2.distance(p)); + return proj.distance(p); + } }