JAVA区分曲线和直线

JAVA distinguish curved line from straight line

我遇到一个问题,我不确定如何判断给定的 (com.esri.arcgis.geometry.Polyline) 多段线是否笔直。我的代码适用于直线但不适用于曲线。我的问题是我不确定如何从多段线中获取点列表,也不确定在获取此点列表后如何检查直线是否笔直。代码如下:

 else if (shape instanceof Polyline) {
                    Polyline line = (Polyline) shape;
                    Point lowerLeft = (Point) line.getEnvelope().getLowerLeft();
                    Point upperRight = (Point) line.getEnvelope().getUpperRight();
                    Point midpoint = GeometryUtil.getMidpoint(lowerLeft, upperRight);
                    midpoint.setSpatialReferenceByRef(ActiveMapContainer.getInstance()
                                                              .getMapBean().getSpatialReference());
                    GeometryUtil.projectLatLong(midpoint);

您可以使用"getLength()" 方法获取折线上的点数。 您可以使用"getPoint(int i)"方法获得每个点。

可能有更好的方法,但我会检查线是否笔直: 1. 计算第一个点和最后一个点之间的距离。 2. 将它与整个折线的长度进行比较。如果两者相等(可能使用某种可接受的长度差异 - "delta"),则假设该线是直的。如果它们的差异大于 "delta",则假设这条线不直。