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在我看来运行良好,尤其是平坦路径迭代器。