|
@@ -123,8 +123,8 @@ export default class EdgeService {
|
|
|
|
|
|
let road2 = dataService.getRoad(roadId2);
|
|
|
this.computerDefaultEdge(roadId2);
|
|
|
- // let startPoint2 = dataService.getPoint(road2.startId);
|
|
|
- // let endPoint2 = dataService.getPoint(road2.endId);
|
|
|
+ let startPoint2 = dataService.getPoint(road2.startId);
|
|
|
+ let endPoint2 = dataService.getPoint(road2.endId);
|
|
|
let leftEdge2 = dataService.getEdge(road2.leftEdgeId);
|
|
|
let rightEdge2 = dataService.getEdge(road2.rightEdgeId);
|
|
|
let lineLeft2 = this.getLine(leftEdge2);
|
|
@@ -150,12 +150,26 @@ export default class EdgeService {
|
|
|
} else {
|
|
|
newEdgePoint1 = mathUtil.getIntersectionPoint(lineLeft1, lineRight2);
|
|
|
newEdgePoint2 = mathUtil.getIntersectionPoint(lineLeft2, lineRight1);
|
|
|
+ }
|
|
|
+
|
|
|
+ mathUtil.clonePoint(leftEdge1.start, newEdgePoint1);
|
|
|
+ mathUtil.clonePoint(rightEdge1.start, newEdgePoint2);
|
|
|
+
|
|
|
+ mathUtil.clonePoint(rightEdge2.start, newEdgePoint1);
|
|
|
+ mathUtil.clonePoint(leftEdge2.start, newEdgePoint2);
|
|
|
+
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(leftEdge1.vectorId, rightEdge2.vectorId);
|
|
|
+ dataService.deleteControlPoint(rightEdge1.vectorId, leftEdge2.vectorId);
|
|
|
+ } else {
|
|
|
points.push(startPoint1);
|
|
|
points.push(endPoint1);
|
|
|
- points.push(newEdgePoint1);
|
|
|
+ points.push(endPoint2);
|
|
|
if (mathUtil.isClockwise(points)) {
|
|
|
//需要考虑控制点ControlPointService
|
|
|
controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
startPoint1,
|
|
|
newEdgePoint1,
|
|
|
leftEdge1,
|
|
@@ -163,24 +177,38 @@ export default class EdgeService {
|
|
|
"start",
|
|
|
"start"
|
|
|
);
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
+ newEdgePoint2,
|
|
|
+ startPoint1,
|
|
|
+ rightEdge1,
|
|
|
+ leftEdge2,
|
|
|
+ "start",
|
|
|
+ "start"
|
|
|
+ );
|
|
|
} else {
|
|
|
//需要考虑控制点ControlPointService
|
|
|
controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
startPoint1,
|
|
|
- newEdgePoint1,
|
|
|
+ newEdgePoint2,
|
|
|
rightEdge1,
|
|
|
leftEdge2,
|
|
|
"start",
|
|
|
"start"
|
|
|
);
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
+ newEdgePoint1,
|
|
|
+ startPoint1,
|
|
|
+ leftEdge1,
|
|
|
+ rightEdge2,
|
|
|
+ "start",
|
|
|
+ "start"
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- mathUtil.clonePoint(leftEdge1.start, newEdgePoint1);
|
|
|
- mathUtil.clonePoint(rightEdge1.start, newEdgePoint2);
|
|
|
-
|
|
|
- mathUtil.clonePoint(rightEdge2.start, newEdgePoint1);
|
|
|
- mathUtil.clonePoint(leftEdge2.start, newEdgePoint2);
|
|
|
return true;
|
|
|
}
|
|
|
//start-end
|
|
@@ -192,12 +220,29 @@ export default class EdgeService {
|
|
|
} else {
|
|
|
newEdgePoint1 = mathUtil.getIntersectionPoint(lineLeft1, lineLeft2);
|
|
|
newEdgePoint2 = mathUtil.getIntersectionPoint(lineRight1, lineRight2);
|
|
|
+ }
|
|
|
+
|
|
|
+ mathUtil.clonePoint(leftEdge1.start, newEdgePoint1);
|
|
|
+ mathUtil.clonePoint(rightEdge1.start, newEdgePoint2);
|
|
|
+
|
|
|
+ mathUtil.clonePoint(leftEdge2.end, newEdgePoint1);
|
|
|
+ mathUtil.clonePoint(rightEdge2.end, newEdgePoint2);
|
|
|
+
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(leftEdge1.vectorId, leftEdge2.vectorId);
|
|
|
+ dataService.deleteControlPoint(
|
|
|
+ rightEdge1.vectorId,
|
|
|
+ rightEdge2.vectorId
|
|
|
+ );
|
|
|
+ } else {
|
|
|
points.push(startPoint1);
|
|
|
points.push(endPoint1);
|
|
|
- points.push(newEdgePoint1);
|
|
|
+ points.push(startPoint2);
|
|
|
if (mathUtil.isClockwise(points)) {
|
|
|
//需要考虑控制点ControlPointService
|
|
|
controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
startPoint1,
|
|
|
newEdgePoint1,
|
|
|
leftEdge1,
|
|
@@ -205,24 +250,37 @@ export default class EdgeService {
|
|
|
"start",
|
|
|
"end"
|
|
|
);
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
+ newEdgePoint2,
|
|
|
+ startPoint1,
|
|
|
+ rightEdge1,
|
|
|
+ rightEdge2,
|
|
|
+ "start",
|
|
|
+ "end"
|
|
|
+ );
|
|
|
} else {
|
|
|
//需要考虑控制点ControlPointService
|
|
|
controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
startPoint1,
|
|
|
- newEdgePoint1,
|
|
|
+ newEdgePoint2,
|
|
|
rightEdge1,
|
|
|
rightEdge2,
|
|
|
"start",
|
|
|
"end"
|
|
|
);
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
+ newEdgePoint1,
|
|
|
+ startPoint1,
|
|
|
+ leftEdge1,
|
|
|
+ leftEdge2,
|
|
|
+ "start",
|
|
|
+ "end"
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- mathUtil.clonePoint(leftEdge1.start, newEdgePoint1);
|
|
|
- mathUtil.clonePoint(rightEdge1.start, newEdgePoint2);
|
|
|
-
|
|
|
- mathUtil.clonePoint(leftEdge2.end, newEdgePoint1);
|
|
|
- mathUtil.clonePoint(rightEdge2.end, newEdgePoint2);
|
|
|
return true;
|
|
|
}
|
|
|
//end-start
|
|
@@ -235,12 +293,64 @@ export default class EdgeService {
|
|
|
newEdgePoint1 = mathUtil.getIntersectionPoint(lineLeft1, lineLeft2);
|
|
|
newEdgePoint2 = mathUtil.getIntersectionPoint(lineRight1, lineRight2);
|
|
|
}
|
|
|
-
|
|
|
mathUtil.clonePoint(leftEdge1.end, newEdgePoint1);
|
|
|
mathUtil.clonePoint(rightEdge1.end, newEdgePoint2);
|
|
|
|
|
|
mathUtil.clonePoint(leftEdge2.start, newEdgePoint1);
|
|
|
mathUtil.clonePoint(rightEdge2.start, newEdgePoint2);
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(leftEdge1.vectorId, leftEdge2.vectorId);
|
|
|
+ dataService.deleteControlPoint(
|
|
|
+ rightEdge1.vectorId,
|
|
|
+ rightEdge2.vectorId
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ points.push(endPoint1);
|
|
|
+ points.push(startPoint1);
|
|
|
+ points.push(endPoint2);
|
|
|
+ if (!mathUtil.isClockwise(points)) {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
+ endPoint1,
|
|
|
+ newEdgePoint1,
|
|
|
+ leftEdge1,
|
|
|
+ leftEdge2,
|
|
|
+ "end",
|
|
|
+ "start"
|
|
|
+ );
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
+ newEdgePoint2,
|
|
|
+ endPoint1,
|
|
|
+ rightEdge1,
|
|
|
+ rightEdge2,
|
|
|
+ "end",
|
|
|
+ "start"
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
+ endPoint1,
|
|
|
+ newEdgePoint2,
|
|
|
+ rightEdge1,
|
|
|
+ rightEdge2,
|
|
|
+ "end",
|
|
|
+ "start"
|
|
|
+ );
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
+ newEdgePoint1,
|
|
|
+ endPoint1,
|
|
|
+ leftEdge1,
|
|
|
+ leftEdge2,
|
|
|
+ "end",
|
|
|
+ "start"
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
return true;
|
|
|
}
|
|
|
//end-end
|
|
@@ -253,12 +363,63 @@ export default class EdgeService {
|
|
|
newEdgePoint1 = mathUtil.getIntersectionPoint(lineLeft1, lineRight2);
|
|
|
newEdgePoint2 = mathUtil.getIntersectionPoint(lineLeft2, lineRight1);
|
|
|
}
|
|
|
-
|
|
|
mathUtil.clonePoint(leftEdge1.end, newEdgePoint1);
|
|
|
mathUtil.clonePoint(rightEdge1.end, newEdgePoint2);
|
|
|
|
|
|
mathUtil.clonePoint(rightEdge2.end, newEdgePoint1);
|
|
|
mathUtil.clonePoint(leftEdge2.end, newEdgePoint2);
|
|
|
+
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(leftEdge1.vectorId, rightEdge2.vectorId);
|
|
|
+ dataService.deleteControlPoint(rightEdge1.vectorId, leftEdge2.vectorId);
|
|
|
+ } else {
|
|
|
+ points.push(endPoint1);
|
|
|
+ points.push(startPoint1);
|
|
|
+ points.push(startPoint2);
|
|
|
+ if (!mathUtil.isClockwise(points)) {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
+ endPoint1,
|
|
|
+ newEdgePoint1,
|
|
|
+ leftEdge1,
|
|
|
+ rightEdge2,
|
|
|
+ "end",
|
|
|
+ "end"
|
|
|
+ );
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
+ newEdgePoint2,
|
|
|
+ endPoint1,
|
|
|
+ leftEdge2,
|
|
|
+ rightEdge1,
|
|
|
+ "end",
|
|
|
+ "end"
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
+ endPoint1,
|
|
|
+ newEdgePoint2,
|
|
|
+ leftEdge2,
|
|
|
+ rightEdge1,
|
|
|
+ "end",
|
|
|
+ "end"
|
|
|
+ );
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
+ newEdgePoint1,
|
|
|
+ endPoint1,
|
|
|
+ leftEdge1,
|
|
|
+ rightEdge2,
|
|
|
+ "end",
|
|
|
+ "end"
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
} else {
|
|
|
console.error(
|
|
@@ -276,19 +437,21 @@ export default class EdgeService {
|
|
|
updateSingleEdgeForTwoRoad(roadId1, roadId2) {
|
|
|
//console.log('更新'+roadId1+'和'+roadId2+'一侧相交的edge交点');
|
|
|
console.log("开始执行updateSingleEdgeForTwoRoad");
|
|
|
- let road1 = dataService.getRoad(roadId1);
|
|
|
- let startPoint1 = dataService.getPoint(road1.startId);
|
|
|
- let endPoint1 = dataService.getPoint(road1.endId);
|
|
|
- this.computerDefaultEdge(roadId1);
|
|
|
+ const road1 = dataService.getRoad(roadId1);
|
|
|
+ const startPoint1 = dataService.getPoint(road1.startId);
|
|
|
+ const endPoint1 = dataService.getPoint(road1.endId);
|
|
|
+ let line1 = mathUtil.createLine1(startPoint1, endPoint1);
|
|
|
+
|
|
|
let leftEdge1 = dataService.getEdge(road1.leftEdgeId);
|
|
|
let rightEdge1 = dataService.getEdge(road1.rightEdgeId);
|
|
|
let lineLeft1 = this.getLine(leftEdge1);
|
|
|
let lineRight1 = this.getLine(rightEdge1);
|
|
|
|
|
|
- let road2 = dataService.getRoad(roadId2);
|
|
|
- this.computerDefaultEdge(roadId2);
|
|
|
- // let startPoint2 = dataService.getPoint(road2.startId);
|
|
|
- // let endPoint2 = dataService.getPoint(road2.endId);
|
|
|
+ const road2 = dataService.getRoad(roadId2);
|
|
|
+ const startPoint2 = dataService.getPoint(road2.startId);
|
|
|
+ const endPoint2 = dataService.getPoint(road2.endId);
|
|
|
+ let line2 = mathUtil.createLine1(startPoint2, endPoint2);
|
|
|
+
|
|
|
let leftEdge2 = dataService.getEdge(road2.leftEdgeId);
|
|
|
let rightEdge2 = dataService.getEdge(road2.rightEdgeId);
|
|
|
let lineLeft2 = this.getLine(leftEdge2);
|
|
@@ -310,7 +473,12 @@ export default class EdgeService {
|
|
|
if (road1.startId == road2.startId) {
|
|
|
points.push(startPoint1);
|
|
|
points.push(endPoint1);
|
|
|
- //如果墙的角度过大,不能计算edge对应的line的交点
|
|
|
+
|
|
|
+ lineLeft1 = mathUtil.createLine3(line1, leftEdge1.end);
|
|
|
+ lineRight1 = mathUtil.createLine3(line1, rightEdge1.end);
|
|
|
+ lineRight2 = mathUtil.createLine3(line2, rightEdge2.end);
|
|
|
+
|
|
|
+ // 如果墙的角度过大,不能计算edge对应的line的交点
|
|
|
if (angle > Constant.maxAngle) {
|
|
|
newEdgePoint1 = mathUtil.getJoinLinePoint(startPoint1, lineLeft1);
|
|
|
newEdgePoint2 = mathUtil.getJoinLinePoint(startPoint1, lineRight1);
|
|
@@ -321,11 +489,49 @@ export default class EdgeService {
|
|
|
|
|
|
points[2] = newEdgePoint1;
|
|
|
if (mathUtil.isClockwise(points)) {
|
|
|
+ console.log("情况1");
|
|
|
mathUtil.clonePoint(leftEdge1.start, newEdgePoint1);
|
|
|
mathUtil.clonePoint(rightEdge2.start, newEdgePoint1);
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(
|
|
|
+ leftEdge1.vectorId,
|
|
|
+ rightEdge2.vectorId
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
+ startPoint1,
|
|
|
+ newEdgePoint1,
|
|
|
+ leftEdge1,
|
|
|
+ rightEdge2,
|
|
|
+ "start",
|
|
|
+ "start"
|
|
|
+ );
|
|
|
+ }
|
|
|
} else {
|
|
|
+ console.log("情况2");
|
|
|
mathUtil.clonePoint(rightEdge1.start, newEdgePoint2);
|
|
|
mathUtil.clonePoint(leftEdge2.start, newEdgePoint2);
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(
|
|
|
+ leftEdge2.vectorId,
|
|
|
+ rightEdge1.vectorId
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
+ startPoint1,
|
|
|
+ newEdgePoint2,
|
|
|
+ leftEdge2,
|
|
|
+ rightEdge1,
|
|
|
+ "start",
|
|
|
+ "start"
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
@@ -334,6 +540,12 @@ export default class EdgeService {
|
|
|
else if (road1.startId == road2.endId) {
|
|
|
points.push(startPoint1);
|
|
|
points.push(endPoint1);
|
|
|
+
|
|
|
+ lineLeft1 = mathUtil.createLine3(line1, leftEdge1.end);
|
|
|
+ lineRight1 = mathUtil.createLine3(line1, rightEdge1.end);
|
|
|
+ lineLeft2 = mathUtil.createLine3(line2, leftEdge2.start);
|
|
|
+ lineRight2 = mathUtil.createLine3(line2, rightEdge2.start);
|
|
|
+
|
|
|
if (angle > Constant.maxAngle) {
|
|
|
newEdgePoint1 = mathUtil.getJoinLinePoint(startPoint1, lineLeft1);
|
|
|
newEdgePoint2 = mathUtil.getJoinLinePoint(startPoint1, lineRight1);
|
|
@@ -343,11 +555,49 @@ export default class EdgeService {
|
|
|
}
|
|
|
points[2] = newEdgePoint1;
|
|
|
if (mathUtil.isClockwise(points)) {
|
|
|
+ console.log("情况3");
|
|
|
mathUtil.clonePoint(leftEdge1.start, newEdgePoint1);
|
|
|
mathUtil.clonePoint(leftEdge2.end, newEdgePoint1);
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(
|
|
|
+ leftEdge1.vectorId,
|
|
|
+ leftEdge2.vectorId
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
+ startPoint1,
|
|
|
+ newEdgePoint1,
|
|
|
+ leftEdge1,
|
|
|
+ leftEdge2,
|
|
|
+ "start",
|
|
|
+ "end"
|
|
|
+ );
|
|
|
+ }
|
|
|
} else {
|
|
|
+ console.log("情况4");
|
|
|
mathUtil.clonePoint(rightEdge1.start, newEdgePoint2);
|
|
|
mathUtil.clonePoint(rightEdge2.end, newEdgePoint2);
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(
|
|
|
+ rightEdge1.vectorId,
|
|
|
+ rightEdge2.vectorId
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
+ startPoint1,
|
|
|
+ newEdgePoint2,
|
|
|
+ rightEdge1,
|
|
|
+ rightEdge2,
|
|
|
+ "start",
|
|
|
+ "end"
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
@@ -356,6 +606,12 @@ export default class EdgeService {
|
|
|
else if (road1.endId == road2.startId) {
|
|
|
points.push(endPoint1);
|
|
|
points.push(startPoint1);
|
|
|
+
|
|
|
+ lineLeft1 = mathUtil.createLine3(line1, leftEdge1.start);
|
|
|
+ lineRight1 = mathUtil.createLine3(line1, rightEdge1.start);
|
|
|
+ lineLeft2 = mathUtil.createLine3(line2, leftEdge2.end);
|
|
|
+ lineRight2 = mathUtil.createLine3(line2, rightEdge2.end);
|
|
|
+
|
|
|
if (angle > Constant.maxAngle) {
|
|
|
newEdgePoint1 = mathUtil.getJoinLinePoint(endPoint1, lineLeft1);
|
|
|
newEdgePoint2 = mathUtil.getJoinLinePoint(endPoint1, lineRight1);
|
|
@@ -365,19 +621,63 @@ export default class EdgeService {
|
|
|
}
|
|
|
points[2] = newEdgePoint1;
|
|
|
if (mathUtil.isClockwise(points)) {
|
|
|
+ console.log("情况5");
|
|
|
mathUtil.clonePoint(leftEdge1.end, newEdgePoint1);
|
|
|
mathUtil.clonePoint(leftEdge2.start, newEdgePoint1);
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(
|
|
|
+ leftEdge1.vectorId,
|
|
|
+ leftEdge2.vectorId
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
+ endPoint1,
|
|
|
+ newEdgePoint1,
|
|
|
+ leftEdge1,
|
|
|
+ leftEdge2,
|
|
|
+ "end",
|
|
|
+ "start"
|
|
|
+ );
|
|
|
+ }
|
|
|
} else {
|
|
|
+ console.log("情况6");
|
|
|
mathUtil.clonePoint(rightEdge1.end, newEdgePoint2);
|
|
|
mathUtil.clonePoint(rightEdge2.start, newEdgePoint2);
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(
|
|
|
+ rightEdge1.vectorId,
|
|
|
+ rightEdge2.vectorId
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
+ endPoint1,
|
|
|
+ newEdgePoint2,
|
|
|
+ rightEdge1,
|
|
|
+ rightEdge2,
|
|
|
+ "end",
|
|
|
+ "start"
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
//end-end
|
|
|
//left-right,right-left
|
|
|
- else if (road1.endID == road2.endId) {
|
|
|
+ else if (road1.endId == road2.endId) {
|
|
|
points.push(endPoint1);
|
|
|
points.push(startPoint1);
|
|
|
+
|
|
|
+ lineLeft1 = mathUtil.createLine3(line1, leftEdge1.start);
|
|
|
+ lineRight1 = mathUtil.createLine3(line1, rightEdge1.start);
|
|
|
+ lineLeft2 = mathUtil.createLine3(line2, leftEdge2.start);
|
|
|
+ lineRight2 = mathUtil.createLine3(line2, rightEdge2.start);
|
|
|
+
|
|
|
if (angle > Constant.maxAngle) {
|
|
|
newEdgePoint1 = mathUtil.getJoinLinePoint(endPoint1, lineLeft1);
|
|
|
newEdgePoint2 = mathUtil.getJoinLinePoint(endPoint1, lineRight1);
|
|
@@ -387,11 +687,51 @@ export default class EdgeService {
|
|
|
}
|
|
|
points[2] = newEdgePoint1;
|
|
|
if (mathUtil.isClockwise(points)) {
|
|
|
+ console.log("情况7");
|
|
|
mathUtil.clonePoint(leftEdge1.end, newEdgePoint1);
|
|
|
mathUtil.clonePoint(rightEdge2.end, newEdgePoint1);
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(
|
|
|
+ leftEdge1.vectorId,
|
|
|
+ rightEdge2.vectorId
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint1,
|
|
|
+ endPoint1,
|
|
|
+ newEdgePoint1,
|
|
|
+ leftEdge1,
|
|
|
+ leftEdge2,
|
|
|
+ "end",
|
|
|
+ "end"
|
|
|
+ );
|
|
|
+ }
|
|
|
} else {
|
|
|
+ console.log("情况8");
|
|
|
mathUtil.clonePoint(rightEdge1.end, newEdgePoint2);
|
|
|
mathUtil.clonePoint(leftEdge2.end, newEdgePoint2);
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(leftEdge1.vectorId, rightEdge2.vectorId);
|
|
|
+ if (angle > Constant.maxAngle) {
|
|
|
+ //要删除控制点
|
|
|
+ dataService.deleteControlPoint(
|
|
|
+ rightEdge1.vectorId,
|
|
|
+ leftEdge2.vectorId
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ //需要考虑控制点ControlPointService
|
|
|
+ controlPointService.update(
|
|
|
+ newEdgePoint2,
|
|
|
+ endPoint1,
|
|
|
+ newEdgePoint2,
|
|
|
+ rightEdge1,
|
|
|
+ leftEdge2,
|
|
|
+ "end",
|
|
|
+ "end"
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|
|
|
return true;
|
|
|
} else {
|
|
@@ -512,6 +852,19 @@ export default class EdgeService {
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ // pointId的坐标已经变了
|
|
|
+ updateEdgeForMovePoint(pointId) {
|
|
|
+ const point = dataService.getPoint(pointId);
|
|
|
+ const parent = point.getParent();
|
|
|
+ for (const key in parent) {
|
|
|
+ this.computerDefaultEdge(key);
|
|
|
+ const road = dataService.getRoad(key);
|
|
|
+ const otherPointId = road.getOtherPointId(pointId);
|
|
|
+ this.updateEdgeForMulRoad(otherPointId);
|
|
|
+ }
|
|
|
+ this.updateEdgeForMulRoad(pointId);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
const edgeService = new EdgeService();
|