最近距离 已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,距离最近的两个点间的最小距离

来源:互联网 发布:java缓存博客园 编辑:程序博客网 时间:2024/05/19 14:17
package file;import java.util.ArrayList;import java.util.List;/*

最近距离

已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,距离最近的两个点间的最小距离
*/class MyPoint {private double x; // 横坐标private double y; // 纵坐标public MyPoint(double x, double y) {this.x = x;this.y = y;}public static double distance(MyPoint p1, MyPoint p2) {double dx = p1.x - p2.x;double dy = p1.y - p2.y;return Math.sqrt(dx * dx + dy * dy);}/* * lst中含有若干个点的坐标 返回其中距离最小的点的距离 */public static double getMinDistance(List<MyPoint> lst) {if (lst == null || lst.size() < 2)return Double.MAX_VALUE;double r = Double.MAX_VALUE;MyPoint p0 = lst.remove(0);for (int i = 0; i < lst.size(); i++) {MyPoint p = lst.get(i);double d = MyPoint.distance(p0, p);if (d < r)r=d;}double d2 = getMinDistance(lst);return d2 < r ? d2 : r;}}public class MyTest{public static void main(String[] args) {List<MyPoint> list = new ArrayList<MyPoint>();list.add(new MyPoint(12.3,34.5));list.add(new MyPoint(2.3,3.5));list.add(new MyPoint(172.3,74.5));list.add(new MyPoint(16.3,23.5));list.add(new MyPoint(122.3,324.5));double d=MyPoint.getMinDistance(list);System.out.println(d);}}

原创粉丝点击