/**
* Description
* @author chenkang
* @param scope 第一个圈的所有坐标点
* @param scope2 第一个圈的所有坐标点
* date 11:04 2024/1/18
* return
*/
private Boolean intersect(List<Point2D.Double> scope,List<Point2D.Double> scope2){
for (int i = 0; i < scope.size(); i++) {
Point2D.Double p1 = scope.get(i);
//i后面的一个点 %size 是为了判断首尾相连 最后一个点和第一个点对比
Point2D.Double p2 = scope.get((i + 1) % scope.size());
for (int j = 0; j < scope2.size(); j++) {
Point2D.Double p3 = scope2.get(j);
Point2D.Double p4 = scope2.get((j + 1) % scope2.size());
double x1 = p1.x, y1 = p1.y;
double x2 = p2.x, y2 = p2.y;
double x3 = p3.x, y3 = p3.y;
double x4 = p4.x, y4 = p4.y;
double ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1));
double ub = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / ((y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1));
if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {
return true;
}
}
}
return false;
}
电子围栏 围栏重叠判断
于 2024-01-18 11:07:43 首次发布