苏州网站定制,黄浦网站建设,公司做网站大概多少钱,网址转换成短链接使用Python计算平面多边形间最短距离#xff0c;数据需要从excel表格中导入#xff0c;
* 多边形种类包括#xff08;圆形、矩形、六边形、五边形、跑道形/胶囊形#xff09;#xff0c;
* Python代码需要使用gjk算法进行判断两个多边形间是否重叠#xff0c;
* 如果未重… 使用Python计算平面多边形间最短距离数据需要从excel表格中导入
* 多边形种类包括圆形、矩形、六边形、五边形、跑道形/胶囊形
* Python代码需要使用gjk算法进行判断两个多边形间是否重叠
* 如果未重叠计算最短距离 package controller.com.codermart.controller;import java.util.ArrayList;
import java.util.Comparator;
import java.util.Random;/*** Created by Lenovo on 2023/10/16.*/
public class PythonAlgorithm {public static void main(String[] args) {int testVar1;switch (testVar){case 1:break;case 2:break;}}/*** 使用Python计算平面多边形间最短距离数据需要从excel表格中导入* 多边形种类包括圆形、矩形、六边形、五边形、跑道形/胶囊形* Python代码需要使用gjk算法进行判断两个多边形间是否重叠* 如果未重叠计算最短距离* param shapeFir* param shapeSec* return*/public static Double getShapeDistance(Shape shapeFir,Shape shapeSec){if (shapeFirnull){return null;}if (shapeFir.getShapeWindowsCordination()null){return null;}if (shapeFir.getShapeWindowsCordination().isEmpty()){return null;}if (shapeSecnull){return null;}if (shapeSec.getShapeWindowsCordination()null){return null;}if (shapeSec.getShapeWindowsCordination().isEmpty()){return null;}// String name ShapeEnum.CIRCLER.getName();String shapeWindowsCordination shapeFir.getShapeWindowsCordination();String shapeWindowsCordination1 shapeSec.getShapeWindowsCordination();StringBuilder stringBuilder new StringBuilder();for (int i 0; i shapeWindowsCordination.length(); i) {char c shapeWindowsCordination.charAt(i);if (Character.isDigit(c)){stringBuilder.append(Integer.valueOf(c));}else if (,.equals(c)){stringBuilder.append( );continue;}}String s stringBuilder.toString();String[] split s.split(\\s);ArrayListInteger integers new ArrayList();for (int i 0; i split.length; i) {integers.add(Integer.valueOf(split[i]));}StringBuilder stringBuilder1 new StringBuilder();for (int i 0; i shapeWindowsCordination1.length(); i) {char c shapeWindowsCordination.charAt(i);if (Character.isDigit(c)){stringBuilder1.append(Integer.valueOf(c));}else if (,.equals(c)){stringBuilder.append( );continue;}}String s1 stringBuilder1.toString();String[] split1 s1.split(\\s);ArrayListInteger integers1 new ArrayList();for (int i 0; i split1.length; i) {integers1.add(Integer.valueOf(split1[i]));}Integer integer integers.get(0);Integer integer1 integers1.get(1);int i integer * integer1;Integer integer2 integers.get(0);Integer integer3 integers1.get(1);int i1 integer2 * integer3;int i20;if (ii1){i2 i - i1;}else {i2 i1 - i;}double sqrtDistance Math.sqrt(i2);return sqrtDistance;}public static Double getShortestDistance(Shape shapeFir, Shape shapeSec){if (shapeFirnull){return null;}if (shapeFir.getShapeWindowsCordination()null){return null;}if (shapeFir.getShapeWindowsCordination().isEmpty()){return null;}if (shapeSecnull){return null;}if (shapeSec.getShapeWindowsCordination()null){return null;}if (shapeSec.getShapeWindowsCordination().isEmpty()){return null;}//Random random new Random(); //获取图形中的随机点ArrayListDouble doubles new ArrayList();int count0;while (true){Double shapeDistance getShapeDistance(shapeFir, shapeSec); // 计算随机点的两个坐标之间的距离doubles.add(shapeDistance);if (count1000000){break;}count;}doubles.sort(new ComparatorDouble() {Overridepublic int compare(Double o1, Double o2) {if(o1o2){return -1;}else if(o1o2){return 1;}else {return 0;}}});Double minDistance doubles.get(0);return minDistance;}
}/*** 圆形、矩形、六边形、五边形、跑道形/胶囊形*/
enum ShapeEnum{CIRCLER(1,圆形,),RECTANGLE(2,矩形,),SIXEDGESHAQUARE(3,六边形,),FIVEEDGESHAPE(4,五边形,),RUNNINGCIRCLE(5,跑道形,);ShapeEnum(int index, String name, String desc) {this.index index;this.name name;this.desc desc;}private int index;private String name;private String desc;public int getIndex() {return index;}public void setIndex(int index) {this.index index;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc desc;}
}
class Windows{private String id;private String windowsCordination; // 所定义的视窗窗口windows的坐标位置 (*,*)public String getId() {return id;}public void setId(String id) {this.id id;}public String getWindowsCordination() {return windowsCordination;}public void setWindowsCordination(String windowsCordination) {this.windowsCordination windowsCordination;}
}class Shape{private String id;private String name; //图形的形状private String shapeWindowsCordination; // 图形的形状放在视窗windows中的相对坐标 (1,3) , 视窗矩形的坐标private String windows_id;public String getId() {return id;}public void setId(String id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getWindows_id() {return windows_id;}public void setWindows_id(String windows_id) {this.windows_id windows_id;}public String getShapeWindowsCordination() {return shapeWindowsCordination;}public void setShapeWindowsCordination(String shapeWindowsCordination) {this.shapeWindowsCordination shapeWindowsCordination;}
}