燕山石化溯源三维电子沙盘-【后端】-服务
13693261870
2023-06-23 89942aaecd6c78ba0468496d853b0a49b164137f
添加根据距离和角度获取目标点方法
已修改1个文件
29 ■■■■■ 文件已修改
src/main/java/com/yssh/utils/CalculateUtils.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yssh/utils/CalculateUtils.java
@@ -1,5 +1,6 @@
package com.yssh.utils;
import java.awt.geom.Point2D;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -268,13 +269,39 @@
     */
    public static List<Coordinate> calcRect(double x, double y) {
        double buffer = 10;
        double dis = round6(Math.sqrt(Math.pow(buffer / 2, 2) * 2));
        List<Coordinate> list = new ArrayList<>();
        //
        list.add(getPointByDisAndAngle(x, y, 315, dis));
        list.add(getPointByDisAndAngle(x, y, 45, dis));
        list.add(getPointByDisAndAngle(x, y, 135, dis));
        list.add(getPointByDisAndAngle(x, y, 225, dis));
        return list;
    }
    /**
     * 根据距离和角度获取目标点
     */
    private static Coordinate getPointByDisAndAngle(double x, double y, double angle, double dis) {
        try {
            DirectPosition2D p1 = new DirectPosition2D(x, y);
            GeodeticCalculator gc = new GeodeticCalculator();
            gc.setStartingGeographicPoint(p1);
            gc.setDirection(angle, dis);
            Point2D dest = gc.getDestinationGeographicPoint();
            double newX = round6(dest.getX());
            double newY = round6(dest.getY());
            return new Coordinate(newX, newY);
        } catch (Exception ex) {
            return new Coordinate();
        }
    }
    /**
     * @param @return 参数
     * @return Double 返回类型
     * @throws