设为首页收藏本站

中国膜结构网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

膜结构车棚
膜结构车棚膜结构资质国产膜材 膜结构网中国膜结构协会
查看: 410|回复: 0

最小外接矩形思路以及实现

[复制链接]
  • TA的每日心情
    开心
    2021-6-23 14:19
  • 签到天数: 1543 天

    [LV.Master]伴坛终老

    发表于 2020-11-24 22:31 | 显示全部楼层 |阅读模式
    1. 计算流程
    2. 旋转基础算法实现

    3. 旋转点基础
    4. /**
    5.      * 旋转点
    6.      *
    7.      * @param point 被旋转的点
    8.      * @param center 旋转中心
    9.      * @param angle 角度
    10.      * @return 旋转后坐标
    11.      */
    12.     public static Coordinate get(Coordinate point, Coordinate center, double angle) {
    13.         double cos = Math.cos(angle);
    14.         double sin = Math.sin(angle);
    15.         double x = point.x;
    16.         double y = point.y;
    17.         double centerX = center.x;
    18.         double centerY = center.y;
    19.         return new Coordinate(centerX + cos * (x - centerX) - sin * (y - centerY),
    20.                 centerY + sin * (x - centerX) + cos * (y - centerY));
    21.     }
    22. 凸包算法实现

    23. Geometry hull = (new ConvexHull(geom)).getConvexHull();
    24. 获得结果

    25. public static Polygon get(Geometry geom, GeometryFactory gf) {
    26.         Geometry hull = (new ConvexHull(geom)).getConvexHull();
    27.         if (!(hull instanceof Polygon)) {
    28.             return null;
    29.         }
    30.         Polygon convexHull = (Polygon) hull;
    31.         System.out.println(convexHull);

    32.         // 直接使用中心值
    33.         Coordinate c = geom.getCentroid().getCoordinate();
    34.         System.out.println("==============旋转基点==============");
    35.         System.out.println(new GeometryFactory().createPoint(c));
    36.         System.out.println("==============旋转基点==============");
    37.         Coordinate[] coords = convexHull.getExteriorRing().getCoordinates();

    38.         double minArea = Double.MAX_VALUE;
    39.         double minAngle = 0;
    40.         Polygon ssr = null;
    41.         Coordinate ci = coords[0];
    42.         Coordinate cii;
    43.         for (int i = 0; i < coords.length - 1; i++) {
    44.             cii = coords[i + 1];
    45.             double angle = Math.atan2(cii.y - ci.y, cii.x - ci.x);
    46.             Polygon rect = (Polygon) Rotation.get(convexHull, c, -1 * angle, gf).getEnvelope();
    47.             double area = rect.getArea();
    48. //            此处可以将 rotationPolygon 放到list中求最小值
    49. //            Polygon rotationPolygon = Rotation.get(rect, c, angle, gf);
    50. //            System.out.println(rotationPolygon);
    51.             if (area < minArea) {
    52.                 minArea = area;
    53.                 ssr = rect;
    54.                 minAngle = angle;
    55.             }
    56.             ci = cii;
    57.         }

    58.         return Rotation.get(ssr, c, minAngle, gf);
    59.     }
    60. 测试类

    61.   @Test
    62.     public void test() throws Exception{
    63.         GeometryFactory gf = new GeometryFactory();
    64.         String wkt = "POLYGON ((87623.0828822501 73753.4143904365,87620.1073981973 73739.213216548,87629.1690996309 73730.4220136646,87641.882531493 73727.3112803367,87643.0997749692 73714.8683470248,87662.0346734872 73725.0120426595,87669.0676357939 73735.1557382941,87655.9484561064 73735.9672339449,87676.9120937514 73747.4634223308,87651.8909778525 73740.8362078495,87659.4649372597 73755.4431295634,87644.4522677204 73748.680665807,87645.5342619215 73760.7178512935,87635.2553170117 73750.9799034842,87630.5215923822 73760.3121034681,87623.0828822501 73753.4143904365))";
    65.         Polygon read = (Polygon) new WKTReader().read(wkt);
    66.         Polygon polygon = MinimumBoundingRectangle.get(read, gf);

    67. //        System.out.println(polygon);
    68. //        System.out.println(polygon.getArea());

    69.    
    复制代码
    回复


    http://www.mjgw.org/ 专业从事膜结构设计、制作加工、施工安装的膜结构工程服务,能够为客户提供专业的膜结构整体解决方案。做中国最好的膜结构综合服务平台。欢迎大家联系电话:198-7840-1958,QQ:463017170.
    相关关键词:膜结构车棚,膜结构车棚覆盖,膜结构车棚公司,膜结构车棚多少钱,膜结构车棚厂家,膜结构车棚价格,社区膜结构车棚,膜结构车棚膜布厂家 ,膜结构车棚哪家好,膜结构车棚多少钱一米,膜结构车棚报价,膜结构车棚哪里有,膜结构车棚定制,膜结构车棚安装,膜结构车棚设计,膜结构车棚电话,膜结构车棚加工,膜结构车棚膜布价格,膜结构车棚批发,膜结构车棚制造商,膜结构车棚生产厂家,膜结构车棚设计,膜结构车棚施工,膜结构车棚多少钱一平米,膜结构车棚订制,张拉膜车棚,张拉膜车棚覆盖,张拉膜车棚公司,张拉膜车棚多少钱,张拉膜车棚厂家,张拉膜车棚价格,社区张拉膜车棚,张拉膜车棚膜布厂家 ,张拉膜车棚哪家好,张拉膜车棚多少钱一米,张拉膜车棚报价,张拉膜车棚哪里有,张拉膜车棚定制,张拉膜车棚安装,张拉膜车棚设计,张拉膜车棚电话,张拉膜车棚加工,张拉膜车棚膜布价格,张拉膜车棚批发,张拉膜车棚制造商,张拉膜车棚生产厂家,张拉膜车棚设计,张拉膜车棚施工,张拉膜车棚多少钱一平米,张拉膜车棚订制,常用膜材品牌:德国杜肯、法国法拉利、德国海德斯、德国米乐、日本平岗、韩国秀博、比利时希运、美国赫虏伯、中国科宝、上海慧遥。

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    推荐膜材品牌上一条 /6 下一条

    进口膜材 国产膜材 pvdf膜材ptfe膜材ETFE膜材
    最好的膜结构公司 一级膜结构资质 膜结构一级资质
    膜结构设计-膜结构十大品牌-etfe设计-充气膜结构
    诺科膜结构
    遨都膜结构设计
    中国膜结构网
    中国空间膜结构

    QQ|申请友链|手机版|中国膜结构论坛