dabocaiqq 2020-08-02 10:36 采纳率: 63.2%
浏览 359
已结题

高分悬赏:Java语言怎么获得一个多边形的最小外接圆的圆心坐标和半径呢

高分悬赏:Java语言怎么获得一个多边形的最小外接圆的圆心坐标和半径呢
高分悬赏:Java语言怎么获得一个多边形的最小外接圆的圆心坐标和半径呢

  • 写回答

1条回答

  • wd369 2020-08-02 16:16
    关注

    有函数包:JTS Topology Suite
    https://github.com/locationtech/jts
    https://sourceforge.net/projects/jts-topo-suite/
    这两者是新旧关系,接口名不同,但函数用法是一样的,

    获得一个多边形的最小外接圆的圆心坐标和半径,调用其中的JTS's MinimumBoundingCircle 即可。

    完整的例子代码:https://www.javatips.net/api/JT-master/jts-master/modules/core/src/test/java/org/locationtech/jts/algorithm/MinimumBoundingCircleTest.java#

    接口细节说明:https://docs.geotools.org/stable/userguide/library/jts/geometry.html

    多边形的初始化 方法1:

    
    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
    
    Coordinate[] coords  =
       new Coordinate[] {new Coordinate(4, 0), new Coordinate(2, 2),
                         new Coordinate(4, 4), new Coordinate(6, 2), new Coordinate(4, 0) };
    
    LinearRing ring = geometryFactory.createLinearRing( coords );
    LinearRing holes[] = null; // use LinearRing[] to represent holes
    Polygon polygon = geometryFactory.createPolygon(ring, holes );
    

    多边形的初始化 方法2 WKT:

    GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory( null );
    
    WKTReader reader = new WKTReader( geometryFactory );
    String wtkdata = "POLYGON((20 10, 30 0, 40 10, 30 20, 20 10))";
    Polygon polygon = (Polygon) reader.read(wtkdata);
    
    

    调用其中的JTS's MinimumBoundingCircle

                    MinimumBoundingCircle circle = new MinimumBoundingCircle( polygon);  
                    Coordinate co=circle.getCentre();
            double ra = circle.getRadius();
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog