X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FSegment.java;h=fa303d1d19fb9f98bdcd876bf08e26f499397a74;hp=5f460517d92c54a90f4bfffc55592fe77ad601dc;hb=de2400d58116bd995e73baf7a429e22def1e4067;hpb=9668f77ce3eeed3a393345c357818e1f85b3a637 diff --git a/src/edu/berkeley/qfat/geom/Segment.java b/src/edu/berkeley/qfat/geom/Segment.java index 5f46051..fa303d1 100644 --- a/src/edu/berkeley/qfat/geom/Segment.java +++ b/src/edu/berkeley/qfat/geom/Segment.java @@ -25,8 +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); } + /** 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) { - throw new RuntimeException("not yet implemented"); + Line line = getLine(); + Point proj = line.projection(p); + if (proj.distance(p1)+proj.distance(p2) > length()) + return Math.min(p1.distance(p), + p2.distance(p)); + return proj.distance(p); } }