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

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

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

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

@ -311,7 +311,7 @@ export class Contour
{
if (hasEqualCus) return false;
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);
return hasEqualCus;
});

@ -179,7 +179,7 @@ export class Circle extends Curve
let ea = anglelist[i + 1];
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);
curvelist.push(arc);
}

Loading…
Cancel
Save