修复一个差集圆错误的问题

pull/747/MERGE
ChenX 5 years ago
parent a921dd3176
commit e9afee49c7

@ -0,0 +1,3 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`差集共线(圆) 1`] = `442426.78778792813`;

@ -0,0 +1,14 @@
import { LoadRegionsFromFileData } from "../Utils/LoadEntity.util";
import { BoolOpeartionType } from "../../src/GraphicsSystem/BoolOperateUtils";
test('差集共线(圆)', () =>
{
let d =
{ "file": [2, "Region", 7, 2, 103, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 1, 1, 1, 1, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 6, [807.6555023923443, 146.3157894736844], 0, [1710.7559808612436, 146.3157894736844], 0, [1710.7559808612436, 706.1818181818184], 0, [1459.7725447442663, 706.1818181818184], -0.9999999999999999, [1058.6389385093214, 706.1818181818184], 0, [807.6555023923443, 706.1818181818184], 0, true, 0, "Region", 7, 2, 105, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1259.205741626794, 706.1818181818184, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1259.205741626794, 706.1818181818184, 0, 1], 1, 1, 1, 1, "Circle", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1259.205741626794, 706.1818181818184, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 1, 200.56680311747243, 0], "basePt": { "x": 807.6555023923443, "y": 146.3157894736844, "z": 0 } };
let regs = LoadRegionsFromFileData(d);
regs[0].BooleanOper(regs[1], BoolOpeartionType.Subtract);
expect(regs[0].Area).toMatchSnapshot();
});

@ -152,8 +152,8 @@ CADDbBoard {
}, },
"BoardName": "", "BoardName": "",
"Buls": Array [ "Buls": Array [
-0.9999999999999999, 0.9999999999999999,
-0.9999999999999999, 0.9999999999999999,
0, 0,
], ],
"CabName": "", "CabName": "",
@ -162,10 +162,6 @@ CADDbBoard {
"H": 10, "H": 10,
"L": 179.17946854625225, "L": 179.17946854625225,
"Pts": Array [ "Pts": Array [
Vector2 {
"x": 179.17946854625222,
"y": 89.58973427312613,
},
Vector2 { Vector2 {
"x": -1.4210854715202004e-14, "x": -1.4210854715202004e-14,
"y": 89.58973427312614, "y": 89.58973427312614,
@ -174,6 +170,10 @@ CADDbBoard {
"x": 179.17946854625222, "x": 179.17946854625222,
"y": 89.58973427312613, "y": 89.58973427312613,
}, },
Vector2 {
"x": -1.4210854715202004e-14,
"y": 89.58973427312614,
},
], ],
"SubBoardAssoc": null, "SubBoardAssoc": null,
"SubBoardLocal": Array [ "SubBoardLocal": Array [
@ -185,8 +185,8 @@ CADDbBoard {
}, },
"BoardName": "", "BoardName": "",
"Buls": Array [ "Buls": Array [
-0.9999999999999999, 0.9999999999999999,
-0.9999999999999999, 0.9999999999999999,
0, 0,
], ],
"CabName": "", "CabName": "",
@ -195,10 +195,6 @@ CADDbBoard {
"H": 10, "H": 10,
"L": 139.17946854625225, "L": 139.17946854625225,
"Pts": Array [ "Pts": Array [
Vector2 {
"x": 139.17946854625222,
"y": 69.58973427312613,
},
Vector2 { Vector2 {
"x": -1.4210854715202004e-14, "x": -1.4210854715202004e-14,
"y": 69.58973427312614, "y": 69.58973427312614,
@ -207,6 +203,10 @@ CADDbBoard {
"x": 139.17946854625222, "x": 139.17946854625222,
"y": 69.58973427312613, "y": 69.58973427312613,
}, },
Vector2 {
"x": -1.4210854715202004e-14,
"y": 69.58973427312614,
},
], ],
"SubBoardAssoc": null, "SubBoardAssoc": null,
"SubBoardLocal": Array [], "SubBoardLocal": Array [],
@ -313,8 +313,8 @@ CADDbBoard {
}, },
"BoardName": "", "BoardName": "",
"Buls": Array [ "Buls": Array [
-0.9999999999999999, 0.9999999999999999,
-0.9999999999999999, 0.9999999999999999,
0, 0,
], ],
"CabName": "", "CabName": "",
@ -323,10 +323,6 @@ CADDbBoard {
"H": 10, "H": 10,
"L": 116.79966683283226, "L": 116.79966683283226,
"Pts": Array [ "Pts": Array [
Vector2 {
"x": 116.79966683283226,
"y": 58.39983341641607,
},
Vector2 { Vector2 {
"x": 7.105427357601002e-15, "x": 7.105427357601002e-15,
"y": 58.39983341641608, "y": 58.39983341641608,
@ -335,6 +331,10 @@ CADDbBoard {
"x": 116.79966683283226, "x": 116.79966683283226,
"y": 58.39983341641607, "y": 58.39983341641607,
}, },
Vector2 {
"x": 7.105427357601002e-15,
"y": 58.39983341641608,
},
], ],
"SubBoardAssoc": null, "SubBoardAssoc": null,
"SubBoardLocal": Array [], "SubBoardLocal": Array [],
@ -384,8 +384,8 @@ CADDbBoard {
}, },
"BoardName": "", "BoardName": "",
"Buls": Array [ "Buls": Array [
-0.9999999999999999, 0.9999999999999999,
-0.9999999999999999, 0.9999999999999999,
0, 0,
], ],
"CabName": "主卧", "CabName": "主卧",
@ -394,10 +394,6 @@ CADDbBoard {
"H": 18, "H": 18,
"L": 4408.678960586129, "L": 4408.678960586129,
"Pts": Array [ "Pts": Array [
Vector2 {
"x": 4408.678960586129,
"y": 2204.3394802930643,
},
Vector2 { Vector2 {
"x": 0, "x": 0,
"y": 2204.3394802930648, "y": 2204.3394802930648,
@ -406,6 +402,10 @@ CADDbBoard {
"x": 4408.678960586129, "x": 4408.678960586129,
"y": 2204.3394802930643, "y": 2204.3394802930643,
}, },
Vector2 {
"x": 0,
"y": 2204.3394802930648,
},
], ],
"SubBoardAssoc": null, "SubBoardAssoc": null,
"SubBoardLocal": Array [ "SubBoardLocal": Array [
@ -417,8 +417,8 @@ CADDbBoard {
}, },
"BoardName": "", "BoardName": "",
"Buls": Array [ "Buls": Array [
-0.9999999999999999, 0.9999999999999999,
-0.9999999999999999, 0.9999999999999999,
0, 0,
], ],
"CabName": "", "CabName": "",
@ -427,10 +427,6 @@ CADDbBoard {
"H": 5, "H": 5,
"L": 633.2307692307686, "L": 633.2307692307686,
"Pts": Array [ "Pts": Array [
Vector2 {
"x": 633.2307692307686,
"y": 316.6153846153843,
},
Vector2 { Vector2 {
"x": 0, "x": 0,
"y": 316.61538461538436, "y": 316.61538461538436,
@ -439,6 +435,10 @@ CADDbBoard {
"x": 633.2307692307686, "x": 633.2307692307686,
"y": 316.6153846153843, "y": 316.6153846153843,
}, },
Vector2 {
"x": 0,
"y": 316.61538461538436,
},
], ],
"SubBoardAssoc": null, "SubBoardAssoc": null,
"SubBoardLocal": Array [], "SubBoardLocal": Array [],
@ -467,8 +467,8 @@ CADDbBoard {
}, },
"BoardName": "", "BoardName": "",
"Buls": Array [ "Buls": Array [
-0.9999999999999999, 0.9999999999999999,
-0.9999999999999999, 0.9999999999999999,
0, 0,
], ],
"CabName": "", "CabName": "",
@ -477,10 +477,6 @@ CADDbBoard {
"H": 5, "H": 5,
"L": 557.8461538461524, "L": 557.8461538461524,
"Pts": Array [ "Pts": Array [
Vector2 {
"x": 557.8461538461524,
"y": 278.9230769230762,
},
Vector2 { Vector2 {
"x": 0, "x": 0,
"y": 278.9230769230763, "y": 278.9230769230763,
@ -489,6 +485,10 @@ CADDbBoard {
"x": 557.8461538461524, "x": 557.8461538461524,
"y": 278.9230769230762, "y": 278.9230769230762,
}, },
Vector2 {
"x": 0,
"y": 278.9230769230763,
},
], ],
"SubBoardAssoc": null, "SubBoardAssoc": null,
"SubBoardLocal": Array [], "SubBoardLocal": Array [],
@ -761,8 +761,8 @@ CADDbBoard {
}, },
"BoardName": "", "BoardName": "",
"Buls": Array [ "Buls": Array [
-0.9999999999999999, 0.9999999999999999,
-0.9999999999999999, 0.9999999999999999,
0, 0,
], ],
"CabName": "", "CabName": "",
@ -771,10 +771,6 @@ CADDbBoard {
"H": 18, "H": 18,
"L": 189.0974955047293, "L": 189.0974955047293,
"Pts": Array [ "Pts": Array [
Vector2 {
"x": 189.0974955047293,
"y": 94.54874775236476,
},
Vector2 { Vector2 {
"x": -1.4210854715202004e-14, "x": -1.4210854715202004e-14,
"y": 94.54874775236478, "y": 94.54874775236478,
@ -783,6 +779,10 @@ CADDbBoard {
"x": 189.0974955047293, "x": 189.0974955047293,
"y": 94.54874775236476, "y": 94.54874775236476,
}, },
Vector2 {
"x": -1.4210854715202004e-14,
"y": 94.54874775236478,
},
], ],
"SubBoardAssoc": null, "SubBoardAssoc": null,
"SubBoardLocal": Array [], "SubBoardLocal": Array [],
@ -975,8 +975,8 @@ CADDbBoard {
}, },
"BoardName": "", "BoardName": "",
"Buls": Array [ "Buls": Array [
-0.9999999999999999, 0.9999999999999999,
-0.9999999999999999, 0.9999999999999999,
0, 0,
], ],
"CabName": "", "CabName": "",
@ -985,10 +985,6 @@ CADDbBoard {
"H": 10, "H": 10,
"L": 179.17946854625225, "L": 179.17946854625225,
"Pts": Array [ "Pts": Array [
Vector2 {
"x": 179.17946854625222,
"y": 89.58973427312613,
},
Vector2 { Vector2 {
"x": -1.4210854715202004e-14, "x": -1.4210854715202004e-14,
"y": 89.58973427312614, "y": 89.58973427312614,
@ -997,6 +993,10 @@ CADDbBoard {
"x": 179.17946854625222, "x": 179.17946854625222,
"y": 89.58973427312613, "y": 89.58973427312613,
}, },
Vector2 {
"x": -1.4210854715202004e-14,
"y": 89.58973427312614,
},
], ],
"SubBoardAssoc": null, "SubBoardAssoc": null,
"SubBoardLocal": Array [ "SubBoardLocal": Array [
@ -1008,8 +1008,8 @@ CADDbBoard {
}, },
"BoardName": "", "BoardName": "",
"Buls": Array [ "Buls": Array [
-0.9999999999999999, 0.9999999999999999,
-0.9999999999999999, 0.9999999999999999,
0, 0,
], ],
"CabName": "", "CabName": "",
@ -1018,10 +1018,6 @@ CADDbBoard {
"H": 10, "H": 10,
"L": 139.17946854625225, "L": 139.17946854625225,
"Pts": Array [ "Pts": Array [
Vector2 {
"x": 139.17946854625222,
"y": 69.58973427312613,
},
Vector2 { Vector2 {
"x": -1.4210854715202004e-14, "x": -1.4210854715202004e-14,
"y": 69.58973427312614, "y": 69.58973427312614,
@ -1030,6 +1026,10 @@ CADDbBoard {
"x": 139.17946854625222, "x": 139.17946854625222,
"y": 69.58973427312613, "y": 69.58973427312613,
}, },
Vector2 {
"x": -1.4210854715202004e-14,
"y": 69.58973427312614,
},
], ],
"SubBoardAssoc": null, "SubBoardAssoc": null,
"SubBoardLocal": Array [], "SubBoardLocal": Array [],
@ -1136,8 +1136,8 @@ CADDbBoard {
}, },
"BoardName": "", "BoardName": "",
"Buls": Array [ "Buls": Array [
-0.9999999999999999, 0.9999999999999999,
-0.9999999999999999, 0.9999999999999999,
0, 0,
], ],
"CabName": "", "CabName": "",
@ -1146,10 +1146,6 @@ CADDbBoard {
"H": 10, "H": 10,
"L": 116.79966683283226, "L": 116.79966683283226,
"Pts": Array [ "Pts": Array [
Vector2 {
"x": 116.79966683283226,
"y": 58.39983341641607,
},
Vector2 { Vector2 {
"x": 7.105427357601002e-15, "x": 7.105427357601002e-15,
"y": 58.39983341641608, "y": 58.39983341641608,
@ -1158,6 +1154,10 @@ CADDbBoard {
"x": 116.79966683283226, "x": 116.79966683283226,
"y": 58.39983341641607, "y": 58.39983341641607,
}, },
Vector2 {
"x": 7.105427357601002e-15,
"y": 58.39983341641608,
},
], ],
"SubBoardAssoc": null, "SubBoardAssoc": null,
"SubBoardLocal": Array [], "SubBoardLocal": Array [],

@ -82,48 +82,48 @@ Vector3 {
exports[`圆的切割2 1`] = ` exports[`圆的切割2 1`] = `
Vector3 { Vector3 {
"x": 5, "x": 4.999999999999999,
"y": 5, "y": -5,
"z": 0, "z": 0,
} }
`; `;
exports[`圆的切割2 2`] = ` exports[`圆的切割2 2`] = `
Vector3 { Vector3 {
"x": 4.999999999999999, "x": 5,
"y": -5, "y": 5,
"z": 0, "z": 0,
} }
`; `;
exports[`圆的切割2 3`] = ` exports[`圆的切割2 3`] = `
Vector3 { Vector3 {
"x": 4.999999999999999, "x": 0,
"y": -5, "y": 6.123233995736766e-16,
"z": 0, "z": 0,
} }
`; `;
exports[`圆的切割2 4`] = ` exports[`圆的切割2 4`] = `
Vector3 { Vector3 {
"x": 0, "x": 4.999999999999999,
"y": 6.123233995736766e-16, "y": -5,
"z": 0, "z": 0,
} }
`; `;
exports[`圆的切割2 5`] = ` exports[`圆的切割2 5`] = `
Vector3 { Vector3 {
"x": 0, "x": 5,
"y": 6.123233995736766e-16, "y": 5,
"z": 0, "z": 0,
} }
`; `;
exports[`圆的切割2 6`] = ` exports[`圆的切割2 6`] = `
Vector3 { Vector3 {
"x": 5, "x": 0,
"y": 5, "y": 6.123233995736766e-16,
"z": 0, "z": 0,
} }
`; `;

@ -18,7 +18,7 @@ exports[`中间区域需要圆裁剪 2`] = `"24.71130"`;
exports[`假圆弧交点选点直连 1`] = `1`; exports[`假圆弧交点选点直连 1`] = `1`;
exports[`假圆弧交点选点直连 2`] = `"903.79892"`; exports[`假圆弧交点选点直连 2`] = `"903.79891"`;
exports[`判断点在线上错误导致的偏移错误 1`] = `1`; exports[`判断点在线上错误导致的偏移错误 1`] = `1`;
@ -50,7 +50,7 @@ exports[`圆弧如果连接就自交,需要补圆弧才能解决 2`] = `"948.214
exports[`圆弧连接后逆向 1`] = `1`; exports[`圆弧连接后逆向 1`] = `1`;
exports[`圆弧连接后逆向 2`] = `"4159.59625"`; exports[`圆弧连接后逆向 2`] = `"4159.59627"`;
exports[`圆弧连接成圆 1`] = `7`; exports[`圆弧连接成圆 1`] = `7`;
@ -208,7 +208,7 @@ exports[`精度过高导致连接失败 2`] = `"75154.17850"`;
exports[`精度过高导致连接失败 3`] = `1`; exports[`精度过高导致连接失败 3`] = `1`;
exports[`精度过高导致连接失败 4`] = `"91209.36327"`; exports[`精度过高导致连接失败 4`] = `"91209.36316"`;
exports[`精度问题导致的连接错误 1`] = `2`; exports[`精度问题导致的连接错误 1`] = `2`;

@ -311,7 +311,7 @@ export class Contour
{ {
if (hasEqualCus) return false; if (hasEqualCus) return false;
hasEqualCus = fastEqualCurve(cu, pl); hasEqualCus = fastEqualCurve(cu, pl);
if (hasEqualCus && !equalv3(cu.GetFistDeriv(0).normalize(), pl.GetFistDeriv(0).normalize())) if (hasEqualCus && !equalv3(cu.GetFistDeriv(cu.EndParam * 0.5).normalize(), pl.GetFistDeriv(pl.EndParam * 0.5).normalize(), 1e-3))
subtractList.push(pl); subtractList.push(pl);
return hasEqualCus; return hasEqualCus;
}); });

@ -179,7 +179,7 @@ export class Circle extends Curve
let ea = anglelist[i + 1]; let ea = anglelist[i + 1];
if (!equaln(sa, ea, 1e-6)) if (!equaln(sa, ea, 1e-6))
{ {
let arc = new Arc(new Vector3(), this._Radius, sa, ea); let arc = new Arc(new Vector3(), this._Radius, ea, sa, false);
arc.ApplyMatrix(this.OCS); arc.ApplyMatrix(this.OCS);
curvelist.push(arc); curvelist.push(arc);
} }

Loading…
Cancel
Save