Java中两个形状/区域之间的距离?
如果我有两个Java中两个形状/区域之间的距离?,java,distance,shape,area,Java,Distance,Shape,Area,如果我有两个java.awt.geom.Area,由各种简单形状(多边形和椭圆)的并集而成,是否有一种方法可以找到两个区域之间的距离(即最近距离) 澄清一下:假设我有两个任意区域,每个区域都是由任意形状的并集创建的: //Define the first area Area a = new Area(new Ellipse2D.Double(50, 50, 100, 100)); a.add(new Area(new Rectangle2D.Double(100, 100, 100, 100))
java.awt.geom.Area
,由各种简单形状(多边形和椭圆)的并集而成,是否有一种方法可以找到两个区域之间的距离(即最近距离)
澄清一下:假设我有两个任意区域,每个区域都是由任意形状的并集创建的:
//Define the first area
Area a = new Area(new Ellipse2D.Double(50, 50, 100, 100));
a.add(new Area(new Rectangle2D.Double(100, 100, 100, 100)));
//Define the second area
Area b = new Area(new Ellipse2D.Double(200, 300, 100, 100));
b.add(new Area(new Ellipse2D.Double(250, 250, 100, 100)));
我想要的是一个方法getDistance(区域a,区域b)
,它给我一个表示区域a中任意点和区域b中任意点之间最短距离的双精度。这是上面两个区域的图像,蓝色线条表示我感兴趣的距离:
有没有办法做到这一点?如果没有,我该如何实现一个呢?似乎没有一个方法能够做到这一点;但是,使用
PathIterator
s,您应该能够沿形状轮廓逐点比较,并手动查找距离
描述如何有效地实现此功能,以避免二次明显的实现。使用Hausdorff距离 请查看关于如何使用hausdorff距离的清晰说明:
谢谢!到目前为止,PathIterator在我看来运行良好,尤其是平坦路径迭代器。