| | |
| | | package com.yssh.utils; |
| | | |
| | | import java.awt.geom.Point2D; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | |
| | | */ |
| | | 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 |